diff --git a/UI/WebServerResources/css/styles.css b/UI/WebServerResources/css/styles.css index 7f3a92efd..d95d12589 100644 --- a/UI/WebServerResources/css/styles.css +++ b/UI/WebServerResources/css/styles.css @@ -326,10 +326,6 @@ article, aside, details, figcaption, figure, footer, header, hgroup, main, menu, display: none !important; } /* Local overrides from angular-material src */ -/* mixin definition ; sets LTR and RTL within the same style call */ -/** - * Position a FAB button. - */ html, body { height: 100%; color: rgba(0, 0, 0, 0.87); @@ -6464,10 +6460,6 @@ md-bottom-sheet.md-default-theme .md-button.md-default-theme[disabled] { overflow: hidden; -webkit-transition: box-shadow 0.4s cubic-bezier(0.25, 0.8, 0.25, 1), background-color 0.4s cubic-bezier(0.25, 0.8, 0.25, 1); transition: box-shadow 0.4s cubic-bezier(0.25, 0.8, 0.25, 1), background-color 0.4s cubic-bezier(0.25, 0.8, 0.25, 1); } - .md-button *, - .md-button *:before, - .md-button *:after { - box-sizing: border-box; } .md-button:focus { outline: none; } .md-button:hover, .md-button:focus { @@ -6613,8 +6605,9 @@ md-bottom-sheet.md-default-theme .md-button.md-default-theme[disabled] { .md-button.md-fab { border: 1px solid #fff; } } -.md-button.md-fab { - min-width: 56px; } +.md-button.md-fab-overlap-bottom.md-fab-bottom-right, +.md-button.md-fab-overlap-bottom.md-fab-bottom-left { + bottom: -36px; } md-sidenav md-list .md-button, .view-list md-list .md-button { @@ -6791,13 +6784,29 @@ md-checkbox { min-width: 18px; min-height: 18px; } html[dir=rtl] md-checkbox { - padding-left: 0; } + padding-left: 0; + unicode-bidi: embed; } + body[dir=rtl] md-checkbox { + padding-left: 0; + unicode-bidi: embed; } + md-checkbox bdo[dir=rtl] { + direction: rtl; + unicode-bidi: bidi-override; } + md-checkbox bdo[dir=ltr] { + direction: ltr; + unicode-bidi: bidi-override; } html[dir=rtl] md-checkbox { - padding-right: 18px; } - md-checkbox *, - md-checkbox *:before, - md-checkbox *:after { - box-sizing: border-box; } + padding-right: 18px; + unicode-bidi: embed; } + body[dir=rtl] md-checkbox { + padding-right: 18px; + unicode-bidi: embed; } + md-checkbox bdo[dir=rtl] { + direction: rtl; + unicode-bidi: bidi-override; } + md-checkbox bdo[dir=ltr] { + direction: ltr; + unicode-bidi: bidi-override; } md-checkbox.md-focused:not([disabled]) .md-container:before { left: -8px; top: -8px; @@ -6811,16 +6820,38 @@ md-checkbox { -webkit-transform: translateY(-50%); -ms-transform: translateY(-50%); transform: translateY(-50%); + box-sizing: border-box; display: inline-block; width: 18px; height: 18px; left: 0; right: auto; } html[dir=rtl] md-checkbox .md-container { - left: auto; } + left: auto; + unicode-bidi: embed; } + body[dir=rtl] md-checkbox .md-container { + left: auto; + unicode-bidi: embed; } + md-checkbox .md-container bdo[dir=rtl] { + direction: rtl; + unicode-bidi: bidi-override; } + md-checkbox .md-container bdo[dir=ltr] { + direction: ltr; + unicode-bidi: bidi-override; } html[dir=rtl] md-checkbox .md-container { - right: 0; } + right: 0; + unicode-bidi: embed; } + body[dir=rtl] md-checkbox .md-container { + right: 0; + unicode-bidi: embed; } + md-checkbox .md-container bdo[dir=rtl] { + direction: rtl; + unicode-bidi: bidi-override; } + md-checkbox .md-container bdo[dir=ltr] { + direction: ltr; + unicode-bidi: bidi-override; } md-checkbox .md-container:before { + box-sizing: border-box; background-color: transparent; border-radius: 50%; content: ''; @@ -6835,6 +6866,7 @@ md-checkbox { transition: all 0.5s; width: auto; } md-checkbox .md-container:after { + box-sizing: border-box; content: ''; position: absolute; top: -10px; @@ -6853,6 +6885,7 @@ md-checkbox { md-checkbox.md-align-top-left > div.md-container { top: 12px; } md-checkbox .md-icon { + box-sizing: border-box; -webkit-transition: 240ms; transition: 240ms; position: absolute; @@ -6868,6 +6901,7 @@ md-checkbox { md-checkbox[disabled] { cursor: no-drop; } md-checkbox.md-checked .md-icon:after { + box-sizing: border-box; -webkit-transform: rotate(45deg); -ms-transform: rotate(45deg); transform: rotate(45deg); @@ -6883,6 +6917,7 @@ md-checkbox { border-left: 0; content: ''; } md-checkbox .md-label { + box-sizing: border-box; position: relative; display: inline-block; vertical-align: middle; @@ -6894,9 +6929,29 @@ md-checkbox { margin-left: 10px; margin-right: 0; } html[dir=rtl] md-checkbox .md-label { - margin-left: 0; } + margin-left: 0; + unicode-bidi: embed; } + body[dir=rtl] md-checkbox .md-label { + margin-left: 0; + unicode-bidi: embed; } + md-checkbox .md-label bdo[dir=rtl] { + direction: rtl; + unicode-bidi: bidi-override; } + md-checkbox .md-label bdo[dir=ltr] { + direction: ltr; + unicode-bidi: bidi-override; } html[dir=rtl] md-checkbox .md-label { - margin-right: 10px; } + margin-right: 10px; + unicode-bidi: embed; } + body[dir=rtl] md-checkbox .md-label { + margin-right: 10px; + unicode-bidi: embed; } + md-checkbox .md-label bdo[dir=rtl] { + direction: rtl; + unicode-bidi: bidi-override; } + md-checkbox .md-label bdo[dir=ltr] { + direction: ltr; + unicode-bidi: bidi-override; } md-sidenav md-checkbox { margin: 0; } @@ -7152,6 +7207,9 @@ md-calendar { /*! datepicker/_extends.scss - */ /** Styles for mdDatepicker. */ +md-datepicker { + white-space: nowrap; } + .md-datepicker-button { display: inline-block; box-sizing: border-box; @@ -7204,10 +7262,18 @@ md-calendar { .md-datepicker-input-mask { height: 40px; width: 340px; + position: relative; background: transparent; pointer-events: none; cursor: text; } +.md-datepicker-input-mask-opaque { + position: absolute; + right: 0; + left: 120px; + background: white; + height: 100%; } + .md-datepicker-calendar { opacity: 0; -webkit-transition: opacity 0.2s cubic-bezier(0.5, 0, 0.25, 1); @@ -7250,7 +7316,6 @@ md-datepicker[disabled] .md-datepicker-triangle-button { display: none; } .md-datepicker-open .md-datepicker-input-container { - min-width: 340px; margin-left: -12px; border: none; } @@ -7261,6 +7326,9 @@ md-datepicker[disabled] .md-datepicker-triangle-button { .md-datepicker-open .md-datepicker-triangle-button { display: none; } +md-datepicker { + background: transparent; } + /*! dialog/_extends.scss - */ .md-dialog-is-showing { max-height: 100%; } @@ -7845,7 +7913,22 @@ md-input-container { html[dir=rtl] md-input-container .md-placeholder { -webkit-transform-origin: right top; -ms-transform-origin: right top; - transform-origin: right top; } + transform-origin: right top; + unicode-bidi: embed; } + body[dir=rtl] md-input-container label:not(.md-no-float), + body[dir=rtl] md-input-container .md-placeholder { + -webkit-transform-origin: right top; + -ms-transform-origin: right top; + transform-origin: right top; + unicode-bidi: embed; } + md-input-container label:not(.md-no-float) bdo[dir=rtl], + md-input-container .md-placeholder bdo[dir=rtl] { + direction: rtl; + unicode-bidi: bidi-override; } + md-input-container label:not(.md-no-float) bdo[dir=ltr], + md-input-container .md-placeholder bdo[dir=ltr] { + direction: ltr; + unicode-bidi: bidi-override; } md-input-container .md-placeholder { position: absolute; top: 0; @@ -8892,18 +8975,9 @@ md-radio-button, margin: 15px; white-space: nowrap; cursor: pointer; } - md-radio-button *, - md-radio-button *:before, - md-radio-button *:after, - .md-switch-thumb *, - .md-switch-thumb *:before, - .md-switch-thumb *:after { - box-sizing: border-box; } - md-radio-button input, - .md-switch-thumb input { - display: none; } md-radio-button .md-container, .md-switch-thumb .md-container { + box-sizing: border-box; position: relative; top: 4px; display: inline-block; @@ -8920,6 +8994,7 @@ md-radio-button, top: -16px; } md-radio-button .md-container:before, .md-switch-thumb .md-container:before { + box-sizing: border-box; background-color: transparent; border-radius: 50%; content: ''; @@ -8938,6 +9013,7 @@ md-radio-button, top: -15px; } md-radio-button .md-off, .md-switch-thumb .md-off { + box-sizing: border-box; position: absolute; top: 0; left: 0; @@ -8950,6 +9026,7 @@ md-radio-button, transition: border-color ease 0.28s; } md-radio-button .md-on, .md-switch-thumb .md-on { + box-sizing: border-box; position: absolute; top: 0; left: 0; @@ -8968,6 +9045,7 @@ md-radio-button, transform: scale(0.5); } md-radio-button .md-label, .md-switch-thumb .md-label { + box-sizing: border-box; position: relative; display: inline-block; margin-left: 10px; @@ -8978,10 +9056,36 @@ md-radio-button, width: auto; } html[dir=rtl] md-radio-button .md-label, html[dir=rtl] .md-switch-thumb .md-label { - margin-left: 0; } + margin-left: 0; + unicode-bidi: embed; } + body[dir=rtl] md-radio-button .md-label, + body[dir=rtl] .md-switch-thumb .md-label { + margin-left: 0; + unicode-bidi: embed; } + md-radio-button .md-label bdo[dir=rtl], + .md-switch-thumb .md-label bdo[dir=rtl] { + direction: rtl; + unicode-bidi: bidi-override; } + md-radio-button .md-label bdo[dir=ltr], + .md-switch-thumb .md-label bdo[dir=ltr] { + direction: ltr; + unicode-bidi: bidi-override; } html[dir=rtl] md-radio-button .md-label, html[dir=rtl] .md-switch-thumb .md-label { - margin-right: 10px; } + margin-right: 10px; + unicode-bidi: embed; } + body[dir=rtl] md-radio-button .md-label, + body[dir=rtl] .md-switch-thumb .md-label { + margin-right: 10px; + unicode-bidi: embed; } + md-radio-button .md-label bdo[dir=rtl], + .md-switch-thumb .md-label bdo[dir=rtl] { + direction: rtl; + unicode-bidi: bidi-override; } + md-radio-button .md-label bdo[dir=ltr], + .md-switch-thumb .md-label bdo[dir=ltr] { + direction: ltr; + unicode-bidi: bidi-override; } md-radio-button .circle, .md-switch-thumb .circle { border-radius: 50%; } @@ -9158,7 +9262,19 @@ md-select-menu { html[dir=rtl] md-select-menu { -webkit-transform-origin: right top; -ms-transform-origin: right top; - transform-origin: right top; } + transform-origin: right top; + unicode-bidi: embed; } + body[dir=rtl] md-select-menu { + -webkit-transform-origin: right top; + -ms-transform-origin: right top; + transform-origin: right top; + unicode-bidi: embed; } + md-select-menu bdo[dir=rtl] { + direction: rtl; + unicode-bidi: bidi-override; } + md-select-menu bdo[dir=ltr] { + direction: ltr; + unicode-bidi: bidi-override; } md-select-menu md-content { min-width: 136px; min-height: 48px; @@ -9249,10 +9365,6 @@ md-sidenav { bottom: 0; background-color: white; overflow: auto; } - md-sidenav *, - md-sidenav *:before, - md-sidenav *:after { - box-sizing: border-box; } md-sidenav ul { list-style: none; } md-sidenav.md-closed { @@ -9585,13 +9697,12 @@ md-slider { width: 48px; height: 48px; border-radius: 48px; - border: 2px solid #D6D6D6; - background-color: transparent; -webkit-transform: scale(0); -ms-transform: scale(0); transform: scale(0); -webkit-transition: all 0.2s linear; - transition: all 0.2s linear; } + transition: all 0.2s linear; + opacity: 0.26; } md-slider .md-disabled-thumb { position: absolute; left: -22px; @@ -9704,6 +9815,26 @@ md-slider { 100% { box-shadow: 0 0 0 0 transparent; } } +.md-subheader-wrapper:not(.md-sticky-no-effect) { + -webkit-transition: 0.2s ease-out margin; + transition: 0.2s ease-out margin; } + .md-subheader-wrapper:not(.md-sticky-no-effect) .md-subheader { + margin: 0; } + .md-subheader-wrapper:not(.md-sticky-no-effect) .md-subheader:after { + position: absolute; + left: 0; + bottom: 0; + top: 0; + right: -16px; + content: ''; } + .md-subheader-wrapper:not(.md-sticky-no-effect).md-sticky-clone { + z-index: 2; } + .md-subheader-wrapper:not(.md-sticky-no-effect)[sticky-state="active"] { + margin-top: -2px; } + .md-subheader-wrapper:not(.md-sticky-no-effect):not(.md-sticky-clone)[sticky-prev-state="active"] .md-subheader-inner:after { + -webkit-animation: subheaderStickyHoverOut 0.3s ease-out both; + animation: subheaderStickyHoverOut 0.3s ease-out both; } + .md-subheader { display: block; font-size: 14px; @@ -9714,23 +9845,6 @@ md-slider { position: relative; } .md-subheader .md-subheader-inner { padding: 16px 0px 16px 16px; } - .md-subheader:not(.md-sticky-no-effect) { - -webkit-transition: 0.2s ease-out margin; - transition: 0.2s ease-out margin; } - .md-subheader:not(.md-sticky-no-effect):after { - position: absolute; - left: 0; - bottom: 0; - top: 0; - right: -16px; - content: ''; } - .md-subheader:not(.md-sticky-no-effect).md-sticky-clone { - z-index: 2; } - .md-subheader:not(.md-sticky-no-effect)[sticky-state="active"] { - margin-top: -2px; } - .md-subheader:not(.md-sticky-no-effect):not(.md-sticky-clone)[sticky-prev-state="active"] .md-subheader-inner:after { - -webkit-animation: subheaderStickyHoverOut 0.3s ease-out both; - animation: subheaderStickyHoverOut 0.3s ease-out both; } .md-subheader .md-subheader-content { z-index: 1; position: relative; } diff --git a/UI/WebServerResources/css/styles.css.map b/UI/WebServerResources/css/styles.css.map index 1ca1f5259..772c5faa5 100644 --- a/UI/WebServerResources/css/styles.css.map +++ b/UI/WebServerResources/css/styles.css.map @@ -1 +1 @@ -{"version":3,"sources":["../scss/components/_palette.scss","../scss/core/reset.scss","styles.css","../scss/core/angular.scss","../scss/styles.scss","../angular-material/src/core/style/mixins.scss","../angular-material/src/core/style/structure.scss","../scss/core/variables.scss","../scss/core/structure.scss","../angular-material/src/core/style/layout.scss","../scss/core/layout.scss","../bower_components/breakpoint-sass/stylesheets/_breakpoint.scss","../angular-material/src/core/style/typography.scss","../scss/core/typography.scss","../scss/core/_functions.scss","../angular-material/src/components/autocomplete/autocomplete.scss","../scss/components/backdrop/_extends.scss","../angular-material/src/components/backdrop/backdrop.scss","../scss/components/backdrop/backdrop.scss","../scss/components/bottomSheet/_extends.scss","../angular-material/src/components/bottomSheet/bottomSheet.scss","../scss/components/bottomSheet/bottomSheet.scss","../scss/components/button/_extends.scss","../angular-material/src/components/button/button.scss","../scss/components/button/button.scss","../scss/components/card/_extends.scss","../angular-material/src/components/card/card.scss","../scss/components/card/card.scss","../scss/components/checkbox/_extends.scss","../angular-material/src/components/checkbox/checkbox.scss","../scss/components/checkbox/checkbox.scss","../scss/components/chips/_extends.scss","../angular-material/src/components/chips/chips.scss","../scss/components/chips/chips.scss","../scss/components/content/_extends.scss","../angular-material/src/components/content/content.scss","../scss/components/content/content.scss","../scss/components/datepicker/_extends-calendar.scss","../angular-material/src/components/datepicker/calendar.scss","../scss/components/datepicker/_extends-datePicker.scss","../angular-material/src/components/datepicker/datePicker.scss","../scss/components/dialog/_extends.scss","../angular-material/src/components/dialog/dialog.scss","../scss/components/dialog/dialog.scss","../scss/components/divider/_extends.scss","../angular-material/src/components/divider/divider.scss","../scss/components/fabSpeedDial/_extends.scss","../angular-material/src/components/fabSpeedDial/fabSpeedDial.scss","../angular-material/src/components/gridList/gridList.scss","../scss/components/gridList/gridList.scss","../scss/components/icon/_extends.scss","../angular-material/src/components/icon/icon.scss","../scss/components/icon/icon.scss","../scss/components/input/_extends.scss","../angular-material/src/components/input/input.scss","../scss/components/input/input.scss","../scss/components/list/_extends.scss","../angular-material/src/components/list/list.scss","../scss/components/list/list.scss","../scss/components/menu/_extends.scss","../angular-material/src/components/menu/menu.scss","../scss/components/progressLinear/_extends.scss","../angular-material/src/components/progressLinear/progressLinear.scss","../scss/components/radioButton/_extends.scss","../angular-material/src/components/radioButton/radio-button.scss","../scss/components/select/_extends.scss","../angular-material/src/components/select/select.scss","../scss/components/select/select.scss","../scss/components/sidenav/_extends.scss","../angular-material/src/components/sidenav/sidenav.scss","../scss/components/sidenav/sidenav.scss","../scss/components/slider/_extends.scss","../angular-material/src/components/slider/slider.scss","../scss/components/sticky/_extends.scss","../angular-material/src/components/sticky/sticky.scss","../scss/components/subheader/_extends.scss","../angular-material/src/components/subheader/subheader.scss","../scss/components/subheader/subheader.scss","../scss/components/switch/_extends.scss","../angular-material/src/components/switch/switch.scss","../scss/components/tabs/_extends.scss","../angular-material/src/components/tabs/tabs.scss","../scss/components/toast/_extends.scss","../angular-material/src/components/toast/toast.scss","../scss/components/toolbar/_extends.scss","../angular-material/src/components/toolbar/toolbar.scss","../scss/components/toolbar/toolbar.scss","../scss/components/tooltip/_extends.scss","../angular-material/src/components/tooltip/tooltip.scss","../scss/components/virtualRepeat/_extends.scss","../angular-material/src/components/virtualRepeat/virtualRepeater.scss","../scss/components/virtualRepeat/virtualRepeat.scss","../scss/components/whiteframe/_extends.scss","../angular-material/src/components/whiteframe/whiteframe.scss","../scss/components/pseudo-input/pseudo-input.scss","../scss/views/LoginUI.scss","../scss/views/MailerUI.scss","../scss/views/ContactsUI.scss","../scss/views/MessageEditorUI.scss","../scss/views/SchedulerUI.scss","../scss/views/_view.scss","../scss/core/base_styles/_base_style.scss","../scss/_devtools.scss"],"names":[],"mappings":"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;IADY;MAAI,WAAS,EAAV;IAAkB;MAChC,cAAY,EAAb;IADY;MAAI,WAAS,EAAV;IAAkB;MAChC,cAAY,EAAb;IADY;MAAI,WAAS,EAAV;IAAkB;MAChC,cAAY,EAAb;IADY;MAAI,WAAS,EAAV;IAAkB;MAChC,cAAY,EAAb;IADY;MAAI,WAAS,EAAV;IAAkB;MAChC,cAAY,EAAb;IADY;MAAI,WAAS,EAAV;IAAkB;MAChC,cAAY,EAAb;IADY;MAAI,WAAS,EAAV;IAAkB;MAChC,cAAY,EAAb;IADY;MAAI,WAAS,EAAV;IAAkB;MAChC,cAAY,EAAb;IADY;MAAI,WAAS,EAAV;IAAkB;MAChC,cAAY,EAAb;IADY;MAAI,WAAS,EAAV;IAAkB;MAChC,cAAY,EAAb;IADY;MAAI,WAAS,EAAV;IAAkB;MAChC,cAAY,EAAb;IADY;MAAI,WAAS,EAAV;IAAkB;MAChC,cAAY,EAAb;IADY;MAAI,WAAS,EAAV;IAAkB;MAChC,cAAY,EAAb;IADY;MAAI,WAAS,EAAV;IAAkB;MAChC,cAAY,EAAb;IADY;MAAI,WAAS,EAAV;IAAkB;MAChC,cAAY,EAAb;IADY;MAAI,WAAS,EAAV;IAAkB;MAChC,cAAY,EAAb;IADY;MAAI,WAAS,EAAV;IAAkB;MAChC,cAAY,EAAb;IADY;MAAI,WAAS,EAAV;IAAkB;MAChC,cAAY,EAAb;IADY;MAAI,WAAS,EAAV;IAAkB;MAChC,cAAY,EAAb;IADY;MAAI,WAAS,EAAV;IAAkB;MAChC,cAAY,EAAb;IADY;MAAI,WAAS,EAAV;IAAkB;MAChC,cAAY,EAAb;IADY;MAAI,WAAS,EAAV;IAAkB;MAChC,cAAY,EAAb;IADY;MAAI,WAAS,EAAV;IAAkB;MAChC,cAAY,EAAb;IADY;MAAI,WAAS,EAAV;IAAkB;MAChC,cAAY,EAAb;IADY;MAAI,WAAS,EAAV;IAAkB;MAChC,cAAY,EAAb;IADY;MAAI,WAAS,EAAV;IAAkB;MAChC,cAAY,EAAb;IADY;MAAI,WAAS,EAAV;IAAkB;MAChC,cAAY,EAAb;IADY;MAAI,WAAS,EAAV;IAAkB;MAChC,cAAY,EAAb;IADY;MAAI,WAAS,EAAV;IAAkB;MAChC,cAAY,EAAb;IADY;MAAI,WAAS,EAAV;IAAkB;MAChC,cAAY,EAAb;IADY;MAAI,WAAS,EAAV;IAAkB;MAChC,cAAY,EAAb;IADY;MAAI,WAAS,EAAV;IAAkB;MAChC,cAAY,EAAb;IADY;MAAI,WAAS,EAAV;IAAkB;MAChC,cAAY,EAAb;IADY;MAAI,WAAS,EAAV;IAAkB;MAChC,cAAY,EAAb;IADY;MAAI,WAAS,EAAV;IAAkB;MAChC,cAAY,EAAb;IADY;MAAI,WAAS,EAAV;IAAkB;MAChC,cAAY,EAAb;IADY;MAAI,WAAS,EAAV;IAAkB;MAChC,cAAY,EAAb;IADY;MAAI,WAAS,EAAV;IAAkB;MAChC,cAAY,EAAb;IADY;MAAI,WAAS,EAAV;IAAkB;MAChC,cAAY,EAAb;IADY;MAAI,WAAS,EAAV;IAAkB;MAChC,cAAY,EAAb;IADY;MAAI,WAAS,EAAV;IAAkB;MAChC,cAAY,EAAb;IADY;MAAI,WAAS,EAAV;IAAkB;MAChC,cAAY,EAAb;IADY;MAAI,WAAS,EAAV;IAAkB;MAChC,cAAY,EAAb;IADY;MAAI,WAAS,EAAV;IAAkB;MAChC,cAAY,EAAb;IADY;MAAI,WAAS,EAAV;IAAkB;MAChC,cAAY,EAAb;IADY;MAAI,WAAS,EAAV;IAAkB;MAChC,cAAY,EAAb;IADY;MAAI,WAAS,EAAV;IAAkB;MAChC,cAAY,EAAb;IADY;MAAI,WAAS,EAAV;IAAkB;MAChC,cAAY,EAAb;IADY;MAAI,WAAS,EAAV;IAAkB;MAChC,cAAY,EAAb;IADY;MAAI,WAAS,EAAV;IAAkB;MAChC,cAAY,EAAb;IADY;MAAI,WAAS,EAAV;IAAkB;MAChC,cAAY,EAAb;IADY;MAAI,WAAS,EAAV;IAAkB;MAChC,cAAY,EAAb;IADY;MAAI,WAAS,EAAV;IAAkB;MAChC,cAAY,EAAb;IADY;MAAI,WAAS,EAAV;IAAkB;MAChC,cAAY,EAAb;IADY;MAAI,WAAS,EAAV;IAAkB;MAChC,cAAY,EAAb;IADY;MAAI,WAAS,EAAV;IAAkB;MAChC,cAAY,EAAb;IADY;MAAI,WAAS,EAAV;IAAkB;MAChC,cAAY,EAAb;IADY;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","file":"styles.css"} \ No newline at end of file +{"version":3,"sources":["../scss/components/_palette.scss","../scss/core/reset.scss","styles.css","../scss/core/angular.scss","../scss/styles.scss","../angular-material/src/core/style/structure.scss","../angular-material/src/core/style/mixins.scss","../scss/core/variables.scss","../scss/core/structure.scss","../angular-material/src/core/style/layout.scss","../scss/core/layout.scss","../bower_components/breakpoint-sass/stylesheets/_breakpoint.scss","../angular-material/src/core/style/typography.scss","../scss/core/typography.scss","../scss/core/_functions.scss","../angular-material/src/components/autocomplete/autocomplete.scss","../scss/components/backdrop/_extends.scss","../angular-material/src/components/backdrop/backdrop.scss","../scss/components/backdrop/backdrop.scss","../scss/components/bottomSheet/_extends.scss","../angular-material/src/components/bottomSheet/bottomSheet.scss","../scss/components/bottomSheet/bottomSheet.scss","../scss/components/button/_extends.scss","../angular-material/src/components/button/button.scss","../scss/components/button/button.scss","../scss/components/card/_extends.scss","../angular-material/src/components/card/card.scss","../scss/components/card/card.scss","../scss/components/checkbox/_extends.scss","../angular-material/src/components/checkbox/checkbox.scss","../scss/components/checkbox/checkbox.scss","../scss/components/chips/_extends.scss","../angular-material/src/components/chips/chips.scss","../scss/components/chips/chips.scss","../scss/components/content/_extends.scss","../angular-material/src/components/content/content.scss","../scss/components/content/content.scss","../scss/components/datepicker/_extends-calendar.scss","../angular-material/src/components/datepicker/calendar.scss","../scss/components/datepicker/_extends-datePicker.scss","../angular-material/src/components/datepicker/datePicker.scss","../scss/components/datepicker/datePicker.scss","../scss/components/dialog/_extends.scss","../angular-material/src/components/dialog/dialog.scss","../scss/components/dialog/dialog.scss","../scss/components/divider/_extends.scss","../angular-material/src/components/divider/divider.scss","../scss/components/fabSpeedDial/_extends.scss","../angular-material/src/components/fabSpeedDial/fabSpeedDial.scss","../angular-material/src/components/gridList/gridList.scss","../scss/components/gridList/gridList.scss","../scss/components/icon/_extends.scss","../angular-material/src/components/icon/icon.scss","../scss/components/icon/icon.scss","../scss/components/input/_extends.scss","../angular-material/src/components/input/input.scss","../scss/components/input/input.scss","../scss/components/list/_extends.scss","../angular-material/src/components/list/list.scss","../scss/components/list/list.scss","../scss/components/menu/_extends.scss","../angular-material/src/components/menu/menu.scss","../scss/components/progressLinear/_extends.scss","../angular-material/src/components/progressLinear/progressLinear.scss","../scss/components/radioButton/_extends.scss","../angular-material/src/components/radioButton/radio-button.scss","../scss/components/select/_extends.scss","../angular-material/src/components/select/select.scss","../scss/components/select/select.scss","../scss/components/sidenav/_extends.scss","../angular-material/src/components/sidenav/sidenav.scss","../scss/components/sidenav/sidenav.scss","../scss/components/slider/_extends.scss","../angular-material/src/components/slider/slider.scss","../scss/components/sticky/_extends.scss","../angular-material/src/components/sticky/sticky.scss","../scss/components/subheader/_extends.scss","../angular-material/src/components/subheader/subheader.scss","../scss/components/subheader/subheader.scss","../scss/components/switch/_extends.scss","../angular-material/src/components/switch/switch.scss","../scss/components/tabs/_extends.scss","../angular-material/src/components/tabs/tabs.scss","../scss/components/toast/_extends.scss","../angular-material/src/components/toast/toast.scss","../scss/components/toolbar/_extends.scss","../angular-material/src/components/toolbar/toolbar.scss","../scss/components/toolbar/toolbar.scss","../scss/components/tooltip/_extends.scss","../angular-material/src/components/tooltip/tooltip.scss","../scss/components/virtualRepeat/_extends.scss","../angular-material/src/components/virtualRepeat/virtualRepeater.scss","../scss/components/virtualRepeat/virtualRepeat.scss","../scss/components/whiteframe/_extends.scss","../angular-material/src/components/whiteframe/whiteframe.scss","../scss/components/pseudo-input/pseudo-input.scss","../scss/views/LoginUI.scss","../scss/views/MailerUI.scss","../scss/views/ContactsUI.scss","../scss/views/MessageEditorUI.scss","../scss/views/SchedulerUI.scss","../scss/views/_view.scss","../scss/core/base_styles/_base_style.scss","../scss/_devtools.scss"],"names":[],"mappings":"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;IADY;MAAI,WAAS,EAAV;IAAkB;MAChC,cAAY,EAAb;IADY;MAAI,WAAS,EAAV;IAAkB;MAChC,cAAY,EAAb;IADY;MAAI,WAAS,EAAV;IAAkB;MAChC,cAAY,EAAb;IADY;MAAI,WAAS,EAAV;IAAkB;MAChC,cAAY,EAAb;IADY;MAAI,WAAS,EAAV;IAAkB;MAChC,cAAY,EAAb;IADY;MAAI,WAAS,EAAV;IAAkB;MAChC,cAAY,EAAb;IADY;MAAI,WAAS,EAAV;IAAkB;MAChC,cAAY,EAAb;IADY;MAAI,WAAS,EAAV;IAAkB;MAChC,cAAY,EAAb;IADY;MAAI,WAAS,EAAV;IAAkB;MAChC,cAAY,EAAb;IADY;MAAI,WAAS,EAAV;IAAkB;MAChC,cAAY,EAAb;IADY;MAAI,WAAS,EAAV;IAAkB;MAChC,cAAY,EAAb;IADY;MAAI,WAAS,EAAV;IAAkB;MAChC,cAAY,EAAb;IADY;MAAI,WAAS,EAAV;IAAkB;MAChC,cAAY,EAAb;IADY;MAAI,WAAS,EAAV;IAAkB;MAChC,cAAY,EAAb;IADY;MAAI,WAAS,EAAV;IAAkB;MAChC,cAAY,EAAb;IADY;MAAI,WAAS,EAAV;IAAkB;MAChC,cAAY,EAAb;IADY;MAAI,WAAS,EAAV;IAAkB;MAChC,cAAY,EAAb;IADY;MAAI,WAAS,EAAV;IAAkB;MAChC,cAAY,EAAb;IADY;MAAI,WAAS,EAAV;IAAkB;MAChC,cAAY,EAAb;IADY;MAAI,WAAS,EAAV;IAAkB;MAChC,cAAY,EAAb;IADY;MAAI,WAAS,EAAV;IAAkB;MAChC,cAAY,EAAb;IADY;MAAI,WAAS,EAAV;IAAkB;MAChC,cAAY,EAAb;IADY;MAAI,WAAS,EAAV;IAAkB;MAChC,cAAY,EAAb;IADY;MAAI,WAAS,EAAV;IAAkB;MAChC,cAAY,EAAb;IADY;MAAI,WAAS,EAAV;IAAkB;MAChC,cAAY,EAAb;IADY;MAAI,WAAS,EAAV;IAAkB;MAChC,cAAY,EAAb;IADY;MAAI,WAAS,EAAV;IAAkB;MAChC,cAAY,EAAb;IADY;MAAI,WAAS,EAAV;IAAkB;MAChC,cAAY,EAAb;IADY;MAAI,WAAS,EAAV;IAAkB;MAChC,cAAY,EAAb;IADY;MAAI,WAAS,EAAV;IAAkB;MAChC,cAAY,EAAb;IADY;MAAI,WAAS,EAAV;IAAkB;MAChC,cAAY,EAAb;IADY;MAAI,WAAS,EAAV;IAAkB;MAChC,cAAY,EAAb;IADY;MAAI,WAAS,EAAV;IAAkB;MAChC,cAAY,EAAb;IADY;MAAI,WAAS,EAAV;IAAkB;MAChC,cAAY,EAAb;IADY;MAAI,WAAS,EAAV;IAAkB;MAChC,cAAY,EAAb;IADY;MAAI,WAAS,EAAV;IAAkB;MAChC,cAAY,EAAb;IADY;MAAI,WAAS,EAAV;IAAkB;MAChC,cAAY,EAAb;IADY;MAAI,WAAS,EAAV;IAAkB;MAChC,cAAY,EAAb;IADY;MAAI,WAAS,EAAV;IAAkB;MAChC,cAAY,EAAb;IADY;MAAI,WAAS,EAAV;IAAkB;MAChC,cAAY,EAAb;IADY;MAAI,WAAS,EAAV;IAAkB;MAChC,cAAY,EAAb;IADY;MAAI,WAAS,EAAV;IAAkB;MAChC,cAAY,EAAb;IADY;MAAI,WAAS,EAAV;IAAkB;MAChC,cAAY,EAAb;IADY;MAAI,WAAS,EAAV;IAAkB;MAChC,cAAY,EAAb;IADY;MAAI,WAAS,EAAV;IAAkB;MAChC,cAAY,EAAb;IADY;MAAI,WAAS,EAAV;IAAkB;MAChC,cAAY,EAAb;IADY;MAAI,WAAS,EAAV;IAAkB;MAChC,cAAY,EAAb;IADY;MAAI,WAAS,EAAV;IAAkB;MAChC,cAAY,EAAb;IADY;MAAI,WAAS,EAAV;IAAkB;MAChC,cAAY,EAAb;IADY;MAAI,WAAS,EAAV;IAAkB;MAChC,cAAY,EAAb;IADY;MAAI,WAAS,EAAV;IAAkB;MAChC,cAAY,EAAb;IADY;MAAI,WAAS,EAAV;IAAkB;MAChC,cAAY,EAAb;IADY;MAAI,WAAS,EAAV;IAAkB;MAChC,cAAY,EAAb;IADY;MAAI,WAAS,EAAV;IAAkB;MAChC,cAAY,EAAb;IADY;MAAI,WAAS,EAAV;IAAkB;MAChC,cAAY,EAAb;IADY;MAAI,WAAS,EAAV;IAAkB;MAChC,cAAY,EAAb;IADY;MAAI,WAAS,EAAV;IAAkB;MAChC,cAAY,EAAb;IADY;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","file":"styles.css"} \ No newline at end of file diff --git a/UI/WebServerResources/js/Contacts.js b/UI/WebServerResources/js/Contacts.js index 81408493c..fbb6617b4 100644 --- a/UI/WebServerResources/js/Contacts.js +++ b/UI/WebServerResources/js/Contacts.js @@ -1,2 +1,2 @@ -!function(){"use strict";function configure($stateProvider,$urlRouterProvider){$stateProvider.state("app",{url:"/addressbooks","abstract":!0,views:{addressbooks:{templateUrl:"UIxContactFoldersView",controller:"AddressBooksController",controllerAs:"app"}},resolve:{stateAddressbooks:stateAddressbooks}}).state("app.addressbook",{url:"/:addressbookId",views:{addressbook:{templateUrl:"addressbook",controller:"AddressBookController",controllerAs:"addressbook"}},resolve:{stateAddressbook:stateAddressbook}}).state("app.addressbook.new",{url:"/{contactType:(?:card|list)}/new",views:{card:{templateUrl:"UIxContactEditorTemplate",controller:"CardController",controllerAs:"editor"}},resolve:{stateCard:stateNewCard}}).state("app.addressbook.card",{url:"/:cardId","abstract":!0,views:{card:{template:""}},resolve:{stateCard:stateCard}}).state("app.addressbook.card.view",{url:"/view",views:{"card@app.addressbook":{templateUrl:"UIxContactViewTemplate",controller:"CardController",controllerAs:"editor"}}}).state("app.addressbook.card.editor",{url:"/edit",views:{"card@app.addressbook":{templateUrl:"UIxContactEditorTemplate",controller:"CardController",controllerAs:"editor"}}}),$urlRouterProvider.otherwise("/addressbooks/personal")}function stateAddressbooks(AddressBook){return AddressBook.$findAll(window.contactFolders)}function stateAddressbook($stateParams,AddressBook){return AddressBook.$find($stateParams.addressbookId).$futureAddressBookData}function stateNewCard($stateParams,stateAddressbook,Card){var tag="v"+$stateParams.contactType,card=new Card({pid:$stateParams.addressbookId,c_component:tag});return stateAddressbook.selectedCard=!0,card}function stateCard($stateParams,stateAddressbook){return stateAddressbook.selectedCard=$stateParams.cardId,stateAddressbook.$getCard($stateParams.cardId)}function runBlock($rootScope){$rootScope.$on("$routeChangeError",function(event,current,previous,rejection){console.error(event,current,previous,rejection)})}angular.module("SOGo.ContactsUI",["ngSanitize","ui.router","SOGo.Common","SOGo.PreferencesUI"]).config(configure).run(runBlock),configure.$inject=["$stateProvider","$urlRouterProvider"],stateAddressbooks.$inject=["AddressBook"],stateAddressbook.$inject=["$stateParams","AddressBook"],stateNewCard.$inject=["$stateParams","stateAddressbook","Card"],stateCard.$inject=["$stateParams","stateAddressbook"],runBlock.$inject=["$rootScope"]}(),function(){"use strict";function AddressBookController($scope,$state,$timeout,$mdDialog,focus,Card,AddressBook,Dialog,Settings,stateAddressbooks,stateAddressbook){function selectCard(card){$state.go("app.addressbook.card.view",{addressbookId:stateAddressbook.id,cardId:card.id})}function newComponent(ev){function ComponentDialogController(scope,$mdDialog,$state,addressbookId){scope.create=function(type){$mdDialog.hide(),$state.go("app.addressbook.new",{addressbookId:addressbookId,contactType:type})}}$mdDialog.show({parent:angular.element(document.body),targetEvent:ev,clickOutsideToClose:!0,escapeToClose:!0,template:[''," ",'
'," "," "+l("Contact")," "," "," "+l("List")," ","
","
","
"].join(""),locals:{addressbookId:vm.selectedFolder.id},controller:ComponentDialogController}),ComponentDialogController.$inject=["scope","$mdDialog","$state","addressbookId"]}function notSelectedComponent(currentCard,type){return currentCard&¤tCard.c_component==type&&!currentCard.selected}function unselectCards(){_.each(vm.selectedFolder.cards,function(card){card.selected=!1})}function confirmDeleteSelectedCards(){Dialog.confirm(l("Warning"),l("Are you sure you want to delete the selected contacts?")).then(function(){var selectedCards=_.filter(vm.selectedFolder.cards,function(card){return card.selected});vm.selectedFolder.$deleteCards(selectedCards),delete vm.selectedFolder.selectedCard},function(data,status){})}function saveSelectedCards(){var selectedCards=_.filter(vm.selectedFolder.cards,function(card){return card.selected}),selectedUIDs=_.pluck(selectedCards,"id");window.location.href=ApplicationBaseURL+"/"+vm.selectedFolder.id+"/export?uid="+selectedUIDs.join("&uid=")}function copySelectedCards(folder){var selectedCards=_.filter(vm.selectedFolder.cards,function(card){return card.selected});vm.selectedFolder.$copyCards(selectedCards,folder).then(function(){},function(error){Dialog.alert(l("Error"),error)})}function selectAll(){_.each(vm.selectedFolder.cards,function(card){card.selected=!0})}function sort(field){vm.selectedFolder.$filter("",{sort:field})}function sortedBy(field){return AddressBook.$query.sort==field}function cancelSearch(){vm.mode.search=!1,vm.selectedFolder.$filter("")}var vm=this;AddressBook.selectedFolder=stateAddressbook,vm.selectedFolder=stateAddressbook,vm.selectCard=selectCard,vm.newComponent=newComponent,vm.notSelectedComponent=notSelectedComponent,vm.unselectCards=unselectCards,vm.confirmDeleteSelectedCards=confirmDeleteSelectedCards,vm.saveSelectedCards=saveSelectedCards,vm.copySelectedCards=copySelectedCards,vm.selectAll=selectAll,vm.sort=sort,vm.sortedBy=sortedBy,vm.cancelSearch=cancelSearch,vm.mode={search:!1}}AddressBookController.$inject=["$scope","$state","$timeout","$mdDialog","sgFocus","Card","AddressBook","Dialog","sgSettings","stateAddressbooks","stateAddressbook"],angular.module("SOGo.ContactsUI").controller("AddressBookController",AddressBookController)}(),function(){"use strict";function AddressBooksController($state,$scope,$rootScope,$stateParams,$timeout,$mdDialog,focus,Card,AddressBook,Dialog,Settings,User,stateAddressbooks){function select(folder){vm.editMode=!1,$state.go("app.addressbook",{addressbookId:folder.id})}function newAddressbook(){Dialog.prompt(l("New addressbook"),l("Name of new addressbook")).then(function(name){var addressbook=new AddressBook({name:name,isEditable:!0,isRemote:!1,owner:UserLogin});AddressBook.$add(addressbook)})}function edit(folder){folder.isRemote||(vm.editMode=folder.id,vm.originalAddressbook=angular.extend({},folder.$omit()),focus("addressBookName_"+folder.id))}function revertEditing(folder){folder.name=vm.originalAddressbook.name,vm.editMode=!1}function save(folder){var name=folder.name;name&&name.length>0&&name!=vm.originalAddressbook.name&&folder.$rename(name).then(function(data){vm.editMode=!1},function(data,status){Dialog.alert(l("Warning"),data)})}function confirmDelete(){vm.service.selectedFolder.isSubscription?vm.service.selectedFolder.$delete().then(function(){vm.service.selectedFolder=null,$state.go("app.addressbook",{addressbookId:"personal"})},function(data,status){Dialog.alert(l('An error occured while deleting the addressbook "%{0}".',vm.service.selectedFolder.name),l(data.error))}):Dialog.confirm(l("Warning"),l("Are you sure you want to delete the addressbook %{0}?",vm.service.selectedFolder.name)).then(function(){return vm.service.selectedFolder.$delete()}).then(function(){return vm.service.selectedFolder=null,!0})["catch"](function(data,status){Dialog.alert(l('An error occured while deleting the addressbook "%{0}".',vm.service.selectedFolder.name),l(data.error))})}function importCards(){}function exportCards(){window.location.href=ApplicationBaseURL+"/"+vm.service.selectedFolder.id+"/exportFolder"}function showLinks(addressbook){function LinksDialogController($mdDialog,addressbook){function close(){$mdDialog.hide()}this.addressbook=addressbook,this.close=close}$mdDialog.show({parent:angular.element(document.body),clickOutsideToClose:!0,escapeToClose:!0,templateUrl:addressbook.id+"/links",controller:LinksDialogController,controllerAs:"links",locals:{addressbook:addressbook}}),LinksDialogController.$inject=["$mdDialog","addressbook"]}function share(addressbook){addressbook.$acl.$users().then(function(){$mdDialog.show({templateUrl:addressbook.id+"/UIxAclEditor",controller:"AclController",controllerAs:"acl",clickOutsideToClose:!0,escapeToClose:!0,locals:{usersWithACL:addressbook.$acl.users,User:User,folder:addressbook}})})}function subscribeToFolder(addressbookData){console.debug("subscribeToFolder "+addressbookData.owner+addressbookData.name),AddressBook.$subscribe(addressbookData.owner,addressbookData.name)["catch"](function(data){Dialog.alert(l("Warning"),l("An error occured please try again."))})}var vm=this;vm.activeUser=Settings.activeUser,vm.service=AddressBook,vm.select=select,vm.newAddressbook=newAddressbook,vm.edit=edit,vm.revertEditing=revertEditing,vm.save=save,vm.confirmDelete=confirmDelete,vm.importCards=importCards,vm.exportCards=exportCards,vm.showLinks=showLinks,vm.share=share,vm.subscribeToFolder=subscribeToFolder}AddressBooksController.$inject=["$state","$scope","$rootScope","$stateParams","$timeout","$mdDialog","sgFocus","Card","AddressBook","Dialog","sgSettings","User","stateAddressbooks"],angular.module("SOGo.ContactsUI").controller("AddressBooksController",AddressBooksController)}(),function(){"use strict";function CardController($scope,$timeout,$mdDialog,AddressBook,Card,Dialog,focus,$state,$stateParams,stateCard){function addOrgUnit(){var i=vm.card.$addOrgUnit("");focus("orgUnit_"+i)}function addEmail(){var i=vm.card.$addEmail("");focus("email_"+i)}function addPhone(){var i=vm.card.$addPhone("");focus("phone_"+i)}function addUrl(){var i=vm.card.$addUrl("","");focus("url_"+i)}function addAddress(){var i=vm.card.$addAddress("","","","","","","","");focus("address_"+i)}function addMember(){var i=vm.card.$addMember("");focus("ref_"+i)}function userFilter($query,excludedCards){return AddressBook.selectedFolder.$filter($query,{dry:!0,excludeLists:!0},excludedCards),AddressBook.selectedFolder.$cards}function save(form){form.$valid&&vm.card.$save().then(function(data){var i=_.indexOf(_.pluck(AddressBook.selectedFolder.cards,"id"),vm.card.id);0>i?AddressBook.selectedFolder.$reload():AddressBook.selectedFolder.cards[i]=angular.copy(vm.card),$state.go("app.addressbook.card.view",{cardId:vm.card.id})})["catch"](function(err){console.log(err)})}function reset(){vm.card.$reset()}function cancel(){vm.card.$reset(),vm.card.isNew?(vm.card=null,delete AddressBook.selectedFolder.selectedCard,$state.go("app.addressbook",{addressbookId:AddressBook.selectedFolder.id})):$state.go("app.addressbook.card.view",{cardId:vm.card.id})}function confirmDelete(card){Dialog.confirm(l("Warning"),l("Are you sure you want to delete the card of %{0}?",card.$fullname()),{ok:l("Yes"),cancel:l("No")}).then(function(){card.$delete().then(function(){AddressBook.selectedFolder.cards=_.reject(AddressBook.selectedFolder.cards,function(o){return o.id==card.id}),vm.card=null,$state.go("app.addressbook",{addressbookId:AddressBook.selectedFolder.id})},function(data,status){Dialog.alert(l("Warning"),l('An error occured while deleting the card "%{0}".',card.$fullname()))})})}function viewRawSource($event){Card.$$resource.post(vm.currentFolder.id+"/"+vm.card.id,"raw").then(function(data){function CardRawSourceDialogController(scope,$mdDialog){scope.close=function(){$mdDialog.hide()}}$mdDialog.show({parent:angular.element(document.body),targetEvent:$event,clickOutsideToClose:!0,escapeToClose:!0,template:[''," ","
",data,"    
","
",'
',' '+l("Close")+"","
","
"].join(""),controller:CardRawSourceDialogController}),CardRawSourceDialogController.$inject=["scope","$mdDialog"]})}var vm=this;vm.card=stateCard,vm.currentFolder=AddressBook.selectedFolder,vm.allEmailTypes=Card.$EMAIL_TYPES,vm.allTelTypes=Card.$TEL_TYPES,vm.allUrlTypes=Card.$URL_TYPES,vm.allAddressTypes=Card.$ADDRESS_TYPES,vm.categories={},vm.userFilterResults=[],vm.addOrgUnit=addOrgUnit,vm.addEmail=addEmail,vm.addPhone=addPhone,vm.addUrl=addUrl,vm.addAddress=addAddress,vm.addMember=addMember,vm.userFilter=userFilter,vm.save=save,vm.reset=reset,vm.cancel=cancel,vm.confirmDelete=confirmDelete,vm.viewRawSource=viewRawSource}CardController.$inject=["$scope","$timeout","$mdDialog","AddressBook","Card","Dialog","sgFocus","$state","$stateParams","stateCard"],angular.module("SOGo.ContactsUI").controller("CardController",CardController)}(),function(){"use strict";function sgAddress(){return{restrict:"A",scope:{data:"=sgAddress"},controller:["$scope",function($scope){$scope.addressLines=function(data){var lines=[],locality_region=[];return data.street&&lines.push(data.street),data.street2&&lines.push(data.street2),data.locality&&locality_region.push(data.locality),data.region&&locality_region.push(data.region),locality_region.length>0&&lines.push(locality_region.join(", ")),data.country&&lines.push(data.country),data.postalcode&&lines.push(data.postalcode),lines.join("
")}}],template:'
'}}angular.module("SOGo.Common").directive("sgAddress",sgAddress)}(); +!function(){"use strict";function configure($stateProvider,$urlRouterProvider){$stateProvider.state("app",{url:"/addressbooks","abstract":!0,views:{addressbooks:{templateUrl:"UIxContactFoldersView",controller:"AddressBooksController",controllerAs:"app"}},resolve:{stateAddressbooks:stateAddressbooks}}).state("app.addressbook",{url:"/:addressbookId",views:{addressbook:{templateUrl:"addressbook",controller:"AddressBookController",controllerAs:"addressbook"}},resolve:{stateAddressbook:stateAddressbook}}).state("app.addressbook.new",{url:"/{contactType:(?:card|list)}/new",views:{card:{templateUrl:"UIxContactEditorTemplate",controller:"CardController",controllerAs:"editor"}},resolve:{stateCard:stateNewCard}}).state("app.addressbook.card",{url:"/:cardId","abstract":!0,views:{card:{template:""}},resolve:{stateCard:stateCard}}).state("app.addressbook.card.view",{url:"/view",views:{"card@app.addressbook":{templateUrl:"UIxContactViewTemplate",controller:"CardController",controllerAs:"editor"}}}).state("app.addressbook.card.editor",{url:"/edit",views:{"card@app.addressbook":{templateUrl:"UIxContactEditorTemplate",controller:"CardController",controllerAs:"editor"}}}),$urlRouterProvider.otherwise("/addressbooks/personal")}function stateAddressbooks(AddressBook){return AddressBook.$findAll(window.contactFolders)}function stateAddressbook($stateParams,AddressBook){return AddressBook.$find($stateParams.addressbookId).$futureAddressBookData}function stateNewCard($stateParams,stateAddressbook,Card){var tag="v"+$stateParams.contactType,card=new Card({pid:$stateParams.addressbookId,c_component:tag});return stateAddressbook.selectedCard=!0,card}function stateCard($stateParams,stateAddressbook){return stateAddressbook.selectedCard=$stateParams.cardId,stateAddressbook.$getCard($stateParams.cardId)}function runBlock($rootScope){$rootScope.$on("$routeChangeError",function(event,current,previous,rejection){console.error(event,current,previous,rejection)})}angular.module("SOGo.ContactsUI",["ngSanitize","ui.router","SOGo.Common","SOGo.PreferencesUI"]).config(configure).run(runBlock),configure.$inject=["$stateProvider","$urlRouterProvider"],stateAddressbooks.$inject=["AddressBook"],stateAddressbook.$inject=["$stateParams","AddressBook"],stateNewCard.$inject=["$stateParams","stateAddressbook","Card"],stateCard.$inject=["$stateParams","stateAddressbook"],runBlock.$inject=["$rootScope"]}(),function(){"use strict";function AddressBookController($scope,$state,$timeout,$mdDialog,focus,Card,AddressBook,Dialog,Settings,stateAddressbooks,stateAddressbook){function selectCard(card){$state.go("app.addressbook.card.view",{addressbookId:stateAddressbook.id,cardId:card.id})}function newComponent(ev){function ComponentDialogController(scope,$mdDialog,$state,addressbookId){scope.create=function(type){$mdDialog.hide(),$state.go("app.addressbook.new",{addressbookId:addressbookId,contactType:type})}}$mdDialog.show({parent:angular.element(document.body),targetEvent:ev,clickOutsideToClose:!0,escapeToClose:!0,template:[''," ",'
'," "," "+l("Contact")," "," "," "+l("List")," ","
","
","
"].join(""),locals:{addressbookId:vm.selectedFolder.id},controller:ComponentDialogController}),ComponentDialogController.$inject=["scope","$mdDialog","$state","addressbookId"]}function notSelectedComponent(currentCard,type){return currentCard&¤tCard.c_component==type&&!currentCard.selected}function unselectCards(){_.each(vm.selectedFolder.cards,function(card){card.selected=!1})}function confirmDeleteSelectedCards(){Dialog.confirm(l("Warning"),l("Are you sure you want to delete the selected contacts?")).then(function(){var selectedCards=_.filter(vm.selectedFolder.cards,function(card){return card.selected});vm.selectedFolder.$deleteCards(selectedCards),delete vm.selectedFolder.selectedCard},function(data,status){})}function saveSelectedCards(){var selectedCards=_.filter(vm.selectedFolder.cards,function(card){return card.selected}),selectedUIDs=_.pluck(selectedCards,"id");window.location.href=ApplicationBaseURL+"/"+vm.selectedFolder.id+"/export?uid="+selectedUIDs.join("&uid=")}function copySelectedCards(folder){var selectedCards=_.filter(vm.selectedFolder.cards,function(card){return card.selected});vm.selectedFolder.$copyCards(selectedCards,folder).then(function(){},function(error){Dialog.alert(l("Error"),error)})}function selectAll(){_.each(vm.selectedFolder.cards,function(card){card.selected=!0})}function sort(field){vm.selectedFolder.$filter("",{sort:field})}function sortedBy(field){return AddressBook.$query.sort==field}function cancelSearch(){vm.mode.search=!1,vm.selectedFolder.$filter("")}var vm=this;AddressBook.selectedFolder=stateAddressbook,vm.selectedFolder=stateAddressbook,vm.selectCard=selectCard,vm.newComponent=newComponent,vm.notSelectedComponent=notSelectedComponent,vm.unselectCards=unselectCards,vm.confirmDeleteSelectedCards=confirmDeleteSelectedCards,vm.saveSelectedCards=saveSelectedCards,vm.copySelectedCards=copySelectedCards,vm.selectAll=selectAll,vm.sort=sort,vm.sortedBy=sortedBy,vm.cancelSearch=cancelSearch,vm.mode={search:!1}}AddressBookController.$inject=["$scope","$state","$timeout","$mdDialog","sgFocus","Card","AddressBook","Dialog","sgSettings","stateAddressbooks","stateAddressbook"],angular.module("SOGo.ContactsUI").controller("AddressBookController",AddressBookController)}(),function(){"use strict";function AddressBooksController($state,$scope,$rootScope,$stateParams,$timeout,$mdDialog,focus,Card,AddressBook,Dialog,Settings,User,stateAddressbooks){function select(folder){vm.editMode=!1,$state.go("app.addressbook",{addressbookId:folder.id})}function newAddressbook(){Dialog.prompt(l("New addressbook"),l("Name of new addressbook")).then(function(name){var addressbook=new AddressBook({name:name,isEditable:!0,isRemote:!1,owner:UserLogin});AddressBook.$add(addressbook)})}function edit(folder){folder.isRemote||(vm.editMode=folder.id,vm.originalAddressbook=angular.extend({},folder.$omit()),focus("addressBookName_"+folder.id))}function revertEditing(folder){folder.name=vm.originalAddressbook.name,vm.editMode=!1}function save(folder){var name=folder.name;name&&name.length>0&&name!=vm.originalAddressbook.name&&folder.$rename(name).then(function(data){vm.editMode=!1},function(data,status){Dialog.alert(l("Warning"),data)})}function confirmDelete(){vm.service.selectedFolder.isSubscription?vm.service.selectedFolder.$delete().then(function(){vm.service.selectedFolder=null,$state.go("app.addressbook",{addressbookId:"personal"})},function(data,status){Dialog.alert(l('An error occured while deleting the addressbook "%{0}".',vm.service.selectedFolder.name),l(data.error))}):Dialog.confirm(l("Warning"),l("Are you sure you want to delete the addressbook %{0}?",vm.service.selectedFolder.name)).then(function(){return vm.service.selectedFolder.$delete()}).then(function(){return vm.service.selectedFolder=null,!0})["catch"](function(data,status){Dialog.alert(l('An error occured while deleting the addressbook "%{0}".',vm.service.selectedFolder.name),l(data.error))})}function importCards(){}function exportCards(){window.location.href=ApplicationBaseURL+"/"+vm.service.selectedFolder.id+"/exportFolder"}function showLinks(addressbook){function LinksDialogController($mdDialog,addressbook){function close(){$mdDialog.hide()}this.addressbook=addressbook,this.close=close}$mdDialog.show({parent:angular.element(document.body),clickOutsideToClose:!0,escapeToClose:!0,templateUrl:addressbook.id+"/links",controller:LinksDialogController,controllerAs:"links",locals:{addressbook:addressbook}}),LinksDialogController.$inject=["$mdDialog","addressbook"]}function share(addressbook){addressbook.$acl.$users().then(function(){$mdDialog.show({templateUrl:addressbook.id+"/UIxAclEditor",controller:"AclController",controllerAs:"acl",clickOutsideToClose:!0,escapeToClose:!0,locals:{usersWithACL:addressbook.$acl.users,User:User,folder:addressbook}})})}function subscribeToFolder(addressbookData){console.debug("subscribeToFolder "+addressbookData.owner+addressbookData.name),AddressBook.$subscribe(addressbookData.owner,addressbookData.name)["catch"](function(data){Dialog.alert(l("Warning"),l("An error occured please try again."))})}var vm=this;vm.activeUser=Settings.activeUser,vm.service=AddressBook,vm.select=select,vm.newAddressbook=newAddressbook,vm.edit=edit,vm.revertEditing=revertEditing,vm.save=save,vm.confirmDelete=confirmDelete,vm.importCards=importCards,vm.exportCards=exportCards,vm.showLinks=showLinks,vm.share=share,vm.subscribeToFolder=subscribeToFolder}AddressBooksController.$inject=["$state","$scope","$rootScope","$stateParams","$timeout","$mdDialog","sgFocus","Card","AddressBook","Dialog","sgSettings","User","stateAddressbooks"],angular.module("SOGo.ContactsUI").controller("AddressBooksController",AddressBooksController)}(),function(){"use strict";function CardController($scope,$timeout,$mdDialog,AddressBook,Card,Dialog,focus,$state,$stateParams,stateCard){function addOrgUnit(){var i=vm.card.$addOrgUnit("");focus("orgUnit_"+i)}function addBirthday(){vm.card.birthday=new Date}function addEmail(){var i=vm.card.$addEmail("");focus("email_"+i)}function addPhone(){var i=vm.card.$addPhone("");focus("phone_"+i)}function addUrl(){var i=vm.card.$addUrl("","");focus("url_"+i)}function addAddress(){var i=vm.card.$addAddress("","","","","","","","");focus("address_"+i)}function addMember(){var i=vm.card.$addMember("");focus("ref_"+i)}function userFilter($query,excludedCards){return AddressBook.selectedFolder.$filter($query,{dry:!0,excludeLists:!0},excludedCards),AddressBook.selectedFolder.$cards}function save(form){form.$valid&&vm.card.$save().then(function(data){var i=_.indexOf(_.pluck(AddressBook.selectedFolder.cards,"id"),vm.card.id);0>i?AddressBook.selectedFolder.$reload():AddressBook.selectedFolder.cards[i]=angular.copy(vm.card),$state.go("app.addressbook.card.view",{cardId:vm.card.id})})["catch"](function(err){console.log(err)})}function reset(){vm.card.$reset()}function cancel(){vm.card.$reset(),vm.card.isNew?(vm.card=null,delete AddressBook.selectedFolder.selectedCard,$state.go("app.addressbook",{addressbookId:AddressBook.selectedFolder.id})):$state.go("app.addressbook.card.view",{cardId:vm.card.id})}function confirmDelete(card){Dialog.confirm(l("Warning"),l("Are you sure you want to delete the card of %{0}?",card.$fullname()),{ok:l("Yes"),cancel:l("No")}).then(function(){card.$delete().then(function(){AddressBook.selectedFolder.cards=_.reject(AddressBook.selectedFolder.cards,function(o){return o.id==card.id}),vm.card=null,$state.go("app.addressbook",{addressbookId:AddressBook.selectedFolder.id})},function(data,status){Dialog.alert(l("Warning"),l('An error occured while deleting the card "%{0}".',card.$fullname()))})})}function viewRawSource($event){Card.$$resource.post(vm.currentFolder.id+"/"+vm.card.id,"raw").then(function(data){function CardRawSourceDialogController(scope,$mdDialog){scope.close=function(){$mdDialog.hide()}}$mdDialog.show({parent:angular.element(document.body),targetEvent:$event,clickOutsideToClose:!0,escapeToClose:!0,template:[''," ","
",data,"    
","
",'
',' '+l("Close")+"","
","
"].join(""),controller:CardRawSourceDialogController}),CardRawSourceDialogController.$inject=["scope","$mdDialog"]})}var vm=this;vm.card=stateCard,vm.currentFolder=AddressBook.selectedFolder,vm.allEmailTypes=Card.$EMAIL_TYPES,vm.allTelTypes=Card.$TEL_TYPES,vm.allUrlTypes=Card.$URL_TYPES,vm.allAddressTypes=Card.$ADDRESS_TYPES,vm.categories={},vm.userFilterResults=[],vm.addOrgUnit=addOrgUnit,vm.addBirthday=addBirthday,vm.addEmail=addEmail,vm.addPhone=addPhone,vm.addUrl=addUrl,vm.addAddress=addAddress,vm.addMember=addMember,vm.userFilter=userFilter,vm.save=save,vm.reset=reset,vm.cancel=cancel,vm.confirmDelete=confirmDelete,vm.viewRawSource=viewRawSource}CardController.$inject=["$scope","$timeout","$mdDialog","AddressBook","Card","Dialog","sgFocus","$state","$stateParams","stateCard"],angular.module("SOGo.ContactsUI").controller("CardController",CardController)}(),function(){"use strict";function sgAddress(){return{restrict:"A",scope:{data:"=sgAddress"},controller:["$scope",function($scope){$scope.addressLines=function(data){var lines=[],locality_region=[];return data.street&&lines.push(data.street),data.street2&&lines.push(data.street2),data.locality&&locality_region.push(data.locality),data.region&&locality_region.push(data.region),locality_region.length>0&&lines.push(locality_region.join(", ")),data.country&&lines.push(data.country),data.postalcode&&lines.push(data.postalcode),lines.join("
")}}],template:'
'}}angular.module("SOGo.Common").directive("sgAddress",sgAddress)}(); //# sourceMappingURL=Contacts.js.map \ No newline at end of file diff --git a/UI/WebServerResources/js/Contacts.js.map b/UI/WebServerResources/js/Contacts.js.map index fb2d0dcfe..a21f05b80 100644 --- a/UI/WebServerResources/js/Contacts.js.map +++ b/UI/WebServerResources/js/Contacts.js.map @@ -1 +1 @@ -{"version":3,"file":"Contacts.js","sources":["Contacts/Contacts.app.js","Contacts/AddressBookController.js","Contacts/AddressBooksController.js","Contacts/CardController.js","Contacts/sgAddress.directive.js"],"names":["configure","$stateProvider","$urlRouterProvider","state","url","abstract","views","addressbooks","templateUrl","controller","controllerAs","resolve","stateAddressbooks","addressbook","stateAddressbook","card","stateCard","stateNewCard","template","card@app.addressbook","otherwise","AddressBook","$findAll","window","contactFolders","$stateParams","$find","addressbookId","$futureAddressBookData","Card","tag","contactType","pid","c_component","selectedCard","cardId","$getCard","runBlock","$rootScope","$on","event","current","previous","rejection","console","error","angular","module","config","run","$inject","AddressBookController","$scope","$state","$timeout","$mdDialog","focus","Dialog","Settings","selectCard","go","id","newComponent","ev","ComponentDialogController","scope","create","type","hide","show","parent","element","document","body","targetEvent","clickOutsideToClose","escapeToClose","l","join","locals","vm","selectedFolder","notSelectedComponent","currentCard","selected","unselectCards","_","each","cards","confirmDeleteSelectedCards","confirm","then","selectedCards","filter","$deleteCards","data","status","saveSelectedCards","selectedUIDs","pluck","location","href","ApplicationBaseURL","copySelectedCards","folder","$copyCards","alert","selectAll","sort","field","$filter","sortedBy","$query","cancelSearch","mode","search","this","AddressBooksController","User","select","editMode","newAddressbook","prompt","name","isEditable","isRemote","owner","UserLogin","$add","edit","originalAddressbook","extend","$omit","revertEditing","save","length","$rename","confirmDelete","service","isSubscription","$delete","importCards","exportCards","showLinks","LinksDialogController","close","share","$acl","$users","usersWithACL","users","subscribeToFolder","addressbookData","debug","$subscribe","activeUser","CardController","addOrgUnit","i","$addOrgUnit","addEmail","$addEmail","addPhone","$addPhone","addUrl","$addUrl","addAddress","$addAddress","addMember","$addMember","userFilter","excludedCards","dry","excludeLists","$cards","form","$valid","$save","indexOf","$reload","copy","err","log","reset","$reset","cancel","isNew","$fullname","ok","reject","o","viewRawSource","$event","$$resource","post","currentFolder","CardRawSourceDialogController","allEmailTypes","$EMAIL_TYPES","allTelTypes","$TEL_TYPES","allUrlTypes","$URL_TYPES","allAddressTypes","$ADDRESS_TYPES","categories","userFilterResults","sgAddress","restrict","addressLines","lines","locality_region","street","push","street2","locality","region","country","postalcode","directive"],"mappings":"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","sourcesContent":["/* -*- Mode: javascript; indent-tabs-mode: nil; c-basic-offset: 2 -*- */\n/* JavaScript for SOGoContacts */\n\n(function() {\n 'use strict';\n\n angular.module('SOGo.ContactsUI', ['ngSanitize', 'ui.router', 'SOGo.Common', 'SOGo.PreferencesUI'])\n .config(configure)\n .run(runBlock);\n\n /**\n * @ngInject\n */\n configure.$inject = ['$stateProvider', '$urlRouterProvider'];\n function configure($stateProvider, $urlRouterProvider) {\n $stateProvider\n .state('app', {\n url: '/addressbooks',\n abstract: true,\n views: {\n addressbooks: {\n templateUrl: 'UIxContactFoldersView', // UI/Templates/Contacts/UIxContactFoldersView.wox\n controller: 'AddressBooksController',\n controllerAs: 'app'\n }\n },\n resolve: {\n stateAddressbooks: stateAddressbooks\n }\n })\n .state('app.addressbook', {\n url: '/:addressbookId',\n views: {\n addressbook: {\n templateUrl: 'addressbook',\n controller: 'AddressBookController',\n controllerAs: 'addressbook'\n }\n },\n resolve: {\n stateAddressbook: stateAddressbook\n }\n })\n .state('app.addressbook.new', {\n url: '/{contactType:(?:card|list)}/new',\n views: {\n card: {\n templateUrl: 'UIxContactEditorTemplate', // UI/Templates/Contacts/UIxContactEditorTemplate.wox\n controller: 'CardController',\n controllerAs: 'editor'\n }\n },\n resolve: {\n stateCard: stateNewCard\n }\n })\n .state('app.addressbook.card', {\n url: '/:cardId',\n abstract: true,\n views: {\n card: {\n template: ''\n }\n },\n resolve: {\n stateCard: stateCard\n }\n })\n .state('app.addressbook.card.view', {\n url: '/view',\n views: {\n 'card@app.addressbook': {\n templateUrl: 'UIxContactViewTemplate', // UI/Templates/Contacts/UIxContactViewTemplate.wox\n controller: 'CardController',\n controllerAs: 'editor'\n }\n }\n })\n .state('app.addressbook.card.editor', {\n url: '/edit',\n views: {\n 'card@app.addressbook': {\n templateUrl: 'UIxContactEditorTemplate', // UI/Templates/Contacts/UIxContactEditorTemplate.wox\n controller: 'CardController',\n controllerAs: 'editor'\n }\n }\n });\n\n // if none of the above states are matched, use this as the fallback\n $urlRouterProvider.otherwise('/addressbooks/personal');\n }\n\n /**\n * @ngInject\n */\n stateAddressbooks.$inject = ['AddressBook'];\n function stateAddressbooks(AddressBook) {\n return AddressBook.$findAll(window.contactFolders);\n }\n\n /**\n * @ngInject\n */\n stateAddressbook.$inject = ['$stateParams', 'AddressBook'];\n function stateAddressbook($stateParams, AddressBook) {\n return AddressBook.$find($stateParams.addressbookId).$futureAddressBookData;\n }\n\n /**\n * @ngInject\n */\n stateNewCard.$inject = ['$stateParams', 'stateAddressbook', 'Card'];\n function stateNewCard($stateParams, stateAddressbook, Card) {\n var tag = 'v' + $stateParams.contactType,\n card = new Card({ pid: $stateParams.addressbookId, c_component: tag });\n stateAddressbook.selectedCard = true;\n return card;\n }\n\n /**\n * @ngInject\n */\n stateCard.$inject = ['$stateParams', 'stateAddressbook'];\n function stateCard($stateParams, stateAddressbook) {\n stateAddressbook.selectedCard = $stateParams.cardId;\n return stateAddressbook.$getCard($stateParams.cardId);\n }\n\n /**\n * @ngInject\n */\n runBlock.$inject = ['$rootScope'];\n function runBlock($rootScope) {\n $rootScope.$on('$routeChangeError', function(event, current, previous, rejection) {\n console.error(event, current, previous, rejection);\n });\n }\n\n})();\n","/* -*- Mode: javascript; indent-tabs-mode: nil; c-basic-offset: 2 -*- */\n\n(function() {\n 'use strict';\n\n /**\n * @ngInject\n */\n AddressBookController.$inject = ['$scope', '$state', '$timeout', '$mdDialog', 'sgFocus', 'Card', 'AddressBook', 'Dialog', 'sgSettings', 'stateAddressbooks', 'stateAddressbook'];\n function AddressBookController($scope, $state, $timeout, $mdDialog, focus, Card, AddressBook, Dialog, Settings, stateAddressbooks, stateAddressbook) {\n var vm = this;\n\n AddressBook.selectedFolder = stateAddressbook;\n\n vm.selectedFolder = stateAddressbook;\n vm.selectCard = selectCard;\n vm.newComponent = newComponent;\n vm.notSelectedComponent = notSelectedComponent;\n vm.unselectCards = unselectCards;\n vm.confirmDeleteSelectedCards = confirmDeleteSelectedCards;\n vm.saveSelectedCards = saveSelectedCards;\n vm.copySelectedCards = copySelectedCards;\n vm.selectAll = selectAll;\n vm.sort = sort;\n vm.sortedBy = sortedBy;\n vm.cancelSearch = cancelSearch;\n vm.mode = { search: false };\n \n function selectCard(card) {\n $state.go('app.addressbook.card.view', {addressbookId: stateAddressbook.id, cardId: card.id});\n }\n \n function newComponent(ev) {\n $mdDialog.show({\n parent: angular.element(document.body),\n targetEvent: ev,\n clickOutsideToClose: true,\n escapeToClose: true,\n template: [\n '',\n ' ',\n '
',\n ' ',\n ' ' + l('Contact'),\n ' ',\n ' ',\n ' ' + l('List'),\n ' ',\n '
',\n '
',\n '
'\n ].join(''),\n locals: {\n addressbookId: vm.selectedFolder.id\n },\n controller: ComponentDialogController\n });\n \n /**\n * @ngInject\n */\n ComponentDialogController.$inject = ['scope', '$mdDialog', '$state', 'addressbookId'];\n function ComponentDialogController(scope, $mdDialog, $state, addressbookId) {\n scope.create = function(type) {\n $mdDialog.hide();\n $state.go('app.addressbook.new', { addressbookId: addressbookId, contactType: type });\n };\n }\n }\n\n function notSelectedComponent(currentCard, type) {\n return (currentCard && currentCard.c_component == type && !currentCard.selected);\n }\n\n function unselectCards() {\n _.each(vm.selectedFolder.cards, function(card) { card.selected = false; });\n }\n \n function confirmDeleteSelectedCards() {\n Dialog.confirm(l('Warning'),\n l('Are you sure you want to delete the selected contacts?'))\n .then(function() {\n // User confirmed the deletion\n var selectedCards = _.filter(vm.selectedFolder.cards, function(card) { return card.selected; });\n vm.selectedFolder.$deleteCards(selectedCards);\n delete vm.selectedFolder.selectedCard;\n }, function(data, status) {\n // Delete failed\n });\n }\n\n function saveSelectedCards() {\n var selectedCards = _.filter(vm.selectedFolder.cards, function(card) { return card.selected; });\n var selectedUIDs = _.pluck(selectedCards, 'id');\n window.location.href = ApplicationBaseURL + '/' + vm.selectedFolder.id + '/export?uid=' + selectedUIDs.join('&uid=');\n }\n\n function copySelectedCards(folder) {\n var selectedCards = _.filter(vm.selectedFolder.cards, function(card) { return card.selected; });\n vm.selectedFolder.$copyCards(selectedCards, folder).then(function() {\n // TODO: refresh target addressbook?\n }, function(error) {\n Dialog.alert(l('Error'), error);\n });\n }\n\n function selectAll() {\n _.each(vm.selectedFolder.cards, function(card) {\n card.selected = true;\n });\n }\n\n function sort(field) {\n vm.selectedFolder.$filter('', { sort: field });\n }\n\n function sortedBy(field) {\n return AddressBook.$query.sort == field;\n }\n\n function cancelSearch() {\n vm.mode.search = false;\n vm.selectedFolder.$filter('');\n }\n }\n\n angular\n .module('SOGo.ContactsUI') \n .controller('AddressBookController', AddressBookController); \n})();\n","/* -*- Mode: javascript; indent-tabs-mode: nil; c-basic-offset: 2 -*- */\n\n(function() {\n 'use strict';\n\n /**\n * @ngInject\n */\n AddressBooksController.$inject = ['$state', '$scope', '$rootScope', '$stateParams', '$timeout', '$mdDialog', 'sgFocus', 'Card', 'AddressBook', 'Dialog', 'sgSettings', 'User', 'stateAddressbooks'];\n function AddressBooksController($state, $scope, $rootScope, $stateParams, $timeout, $mdDialog, focus, Card, AddressBook, Dialog, Settings, User, stateAddressbooks) {\n var vm = this;\n\n vm.activeUser = Settings.activeUser;\n vm.service = AddressBook;\n vm.select = select;\n vm.newAddressbook = newAddressbook;\n vm.edit = edit;\n vm.revertEditing = revertEditing;\n vm.save = save;\n vm.confirmDelete = confirmDelete;\n vm.importCards = importCards;\n vm.exportCards = exportCards;\n vm.showLinks = showLinks;\n vm.share = share;\n vm.subscribeToFolder = subscribeToFolder;\n\n function select(folder) {\n vm.editMode = false;\n $state.go('app.addressbook', {addressbookId: folder.id});\n }\n\n function newAddressbook() {\n Dialog.prompt(l('New addressbook'),\n l('Name of new addressbook'))\n .then(function(name) {\n var addressbook = new AddressBook(\n {\n name: name,\n isEditable: true,\n isRemote: false,\n owner: UserLogin\n }\n );\n AddressBook.$add(addressbook);\n });\n }\n\n function edit(folder) {\n if (!folder.isRemote) {\n vm.editMode = folder.id;\n vm.originalAddressbook = angular.extend({}, folder.$omit());\n focus('addressBookName_' + folder.id);\n }\n }\n\n function revertEditing(folder) {\n folder.name = vm.originalAddressbook.name;\n vm.editMode = false;\n }\n\n function save(folder) {\n var name = folder.name;\n if (name && name.length > 0 && name != vm.originalAddressbook.name) {\n folder.$rename(name)\n .then(function(data) {\n vm.editMode = false;\n }, function(data, status) {\n Dialog.alert(l('Warning'), data);\n });\n }\n }\n\n function confirmDelete() {\n if (vm.service.selectedFolder.isSubscription) {\n // Unsubscribe without confirmation\n vm.service.selectedFolder.$delete()\n .then(function() {\n vm.service.selectedFolder = null;\n $state.go('app.addressbook', { addressbookId: 'personal' });\n }, function(data, status) {\n Dialog.alert(l('An error occured while deleting the addressbook \"%{0}\".',\n vm.service.selectedFolder.name),\n l(data.error));\n });\n }\n else {\n Dialog.confirm(l('Warning'), l('Are you sure you want to delete the addressbook %{0}?',\n vm.service.selectedFolder.name))\n .then(function() {\n return vm.service.selectedFolder.$delete();\n })\n .then(function() {\n vm.service.selectedFolder = null;\n return true;\n })\n .catch(function(data, status) {\n Dialog.alert(l('An error occured while deleting the addressbook \"%{0}\".',\n vm.service.selectedFolder.name),\n l(data.error));\n });\n }\n }\n\n function importCards() {\n\n }\n\n function exportCards() {\n window.location.href = ApplicationBaseURL + '/' + vm.service.selectedFolder.id + '/exportFolder';\n }\n\n function showLinks(addressbook) {\n $mdDialog.show({\n parent: angular.element(document.body),\n clickOutsideToClose: true,\n escapeToClose: true,\n templateUrl: addressbook.id + '/links',\n controller: LinksDialogController,\n controllerAs: 'links',\n locals: {\n addressbook: addressbook\n }\n });\n \n /**\n * @ngInject\n */\n LinksDialogController.$inject = ['$mdDialog', 'addressbook'];\n function LinksDialogController($mdDialog, addressbook) {\n var vm = this;\n this.addressbook = addressbook;\n this.close = close;\n\n function close() {\n $mdDialog.hide();\n }\n }\n }\n\n function share(addressbook) {\n // Fetch list of ACL users\n addressbook.$acl.$users().then(function() {\n // Show ACL editor\n $mdDialog.show({\n templateUrl: addressbook.id + '/UIxAclEditor', // UI/Templates/UIxAclEditor.wox\n controller: 'AclController', // from the ng module SOGo.Common\n controllerAs: 'acl',\n clickOutsideToClose: true,\n escapeToClose: true,\n locals: {\n usersWithACL: addressbook.$acl.users,\n User: User,\n folder: addressbook\n }\n });\n });\n }\n\n /**\n * subscribeToFolder - Callback of sgSubscribe directive\n */\n function subscribeToFolder(addressbookData) {\n console.debug('subscribeToFolder ' + addressbookData.owner + addressbookData.name);\n AddressBook.$subscribe(addressbookData.owner, addressbookData.name).catch(function(data) {\n Dialog.alert(l('Warning'), l('An error occured please try again.'));\n });\n }\n }\n\n angular\n .module('SOGo.ContactsUI')\n .controller('AddressBooksController', AddressBooksController);\n})();\n","/* -*- Mode: javascript; indent-tabs-mode: nil; c-basic-offset: 2 -*- */\n\n(function() {\n 'use strict';\n\n /**\n * Controller to view and edit a card\n * @ngInject\n */\n CardController.$inject = ['$scope', '$timeout', '$mdDialog', 'AddressBook', 'Card', 'Dialog', 'sgFocus', '$state', '$stateParams', 'stateCard'];\n function CardController($scope, $timeout, $mdDialog, AddressBook, Card, Dialog, focus, $state, $stateParams, stateCard) {\n var vm = this;\n\n vm.card = stateCard;\n\n vm.currentFolder = AddressBook.selectedFolder;\n vm.allEmailTypes = Card.$EMAIL_TYPES;\n vm.allTelTypes = Card.$TEL_TYPES;\n vm.allUrlTypes = Card.$URL_TYPES;\n vm.allAddressTypes = Card.$ADDRESS_TYPES;\n vm.categories = {};\n vm.userFilterResults = [];\n vm.addOrgUnit = addOrgUnit;\n vm.addEmail = addEmail;\n vm.addPhone = addPhone;\n vm.addUrl = addUrl;\n vm.addAddress = addAddress;\n vm.addMember = addMember;\n vm.userFilter = userFilter;\n vm.save = save;\n vm.reset = reset;\n vm.cancel = cancel;\n vm.confirmDelete = confirmDelete;\n vm.viewRawSource = viewRawSource;\n\n function addOrgUnit() {\n var i = vm.card.$addOrgUnit('');\n focus('orgUnit_' + i);\n }\n function addEmail() {\n var i = vm.card.$addEmail('');\n focus('email_' + i);\n }\n function addPhone() {\n var i = vm.card.$addPhone('');\n focus('phone_' + i);\n }\n function addUrl() {\n var i = vm.card.$addUrl('', '');\n focus('url_' + i);\n }\n function addAddress() {\n var i = vm.card.$addAddress('', '', '', '', '', '', '', '');\n focus('address_' + i);\n }\n function addMember() {\n var i = vm.card.$addMember('');\n focus('ref_' + i);\n }\n function userFilter($query, excludedCards) {\n AddressBook.selectedFolder.$filter($query, {dry: true, excludeLists: true}, excludedCards);\n return AddressBook.selectedFolder.$cards;\n }\n function save(form) {\n if (form.$valid) {\n vm.card.$save()\n .then(function(data) {\n var i = _.indexOf(_.pluck(AddressBook.selectedFolder.cards, 'id'), vm.card.id);\n if (i < 0) {\n // New card; reload contacts list and show addressbook in which the card has been created\n AddressBook.selectedFolder.$reload();\n }\n else {\n // Update contacts list with new version of the Card object\n AddressBook.selectedFolder.cards[i] = angular.copy(vm.card);\n }\n $state.go('app.addressbook.card.view', { cardId: vm.card.id });\n })\n .catch(function(err) {\n console.log(err);\n });\n }\n }\n function reset() {\n vm.card.$reset();\n }\n function cancel() {\n vm.card.$reset();\n if (vm.card.isNew) {\n // Cancelling the creation of a card\n vm.card = null;\n delete AddressBook.selectedFolder.selectedCard;\n $state.go('app.addressbook', { addressbookId: AddressBook.selectedFolder.id });\n }\n else {\n // Cancelling the edition of an existing card\n $state.go('app.addressbook.card.view', { cardId: vm.card.id });\n }\n }\n function confirmDelete(card) {\n Dialog.confirm(l('Warning'),\n l('Are you sure you want to delete the card of %{0}?', card.$fullname()),\n {ok: l('Yes'), cancel: l('No')})\n .then(function() {\n // User confirmed the deletion\n card.$delete()\n .then(function() {\n // Remove card from list of addressbook\n AddressBook.selectedFolder.cards = _.reject(AddressBook.selectedFolder.cards, function(o) {\n return o.id == card.id;\n });\n // Remove card object from scope\n vm.card = null;\n $state.go('app.addressbook', { addressbookId: AddressBook.selectedFolder.id });\n }, function(data, status) {\n Dialog.alert(l('Warning'), l('An error occured while deleting the card \"%{0}\".',\n card.$fullname()));\n });\n });\n }\n\n function viewRawSource($event) {\n Card.$$resource.post(vm.currentFolder.id + '/' + vm.card.id, \"raw\").then(function(data) {\n $mdDialog.show({\n parent: angular.element(document.body),\n targetEvent: $event,\n clickOutsideToClose: true,\n escapeToClose: true,\n template: [\n '',\n ' ',\n '
',\n            data,\n            '    
',\n '
',\n '
',\n ' ' + l('Close') + '',\n '
',\n '
'\n ].join(''),\n controller: CardRawSourceDialogController\n });\n\n /**\n * @ngInject\n */\n CardRawSourceDialogController.$inject = ['scope', '$mdDialog'];\n function CardRawSourceDialogController(scope, $mdDialog) {\n scope.close = function() {\n $mdDialog.hide();\n };\n }\n });\n }\n }\n\n angular\n .module('SOGo.ContactsUI')\n .controller('CardController', CardController);\n})();\n","/* -*- Mode: javascript; indent-tabs-mode: nil; c-basic-offset: 2 -*- */\n\n(function() {\n 'use strict';\n\n /**\n * @name sgAddress\n * @memberof ContactsUI\n * @desc Directive to format a postal address.\n * @ngInject\n */\n function sgAddress() {\n return {\n restrict: 'A',\n scope: { data: '=sgAddress' },\n controller: ['$scope', function($scope) {\n $scope.addressLines = function(data) {\n var lines = [],\n locality_region = [];\n if (data.street) lines.push(data.street);\n if (data.street2) lines.push(data.street2);\n if (data.locality) locality_region.push(data.locality);\n if (data.region) locality_region.push(data.region);\n if (locality_region.length > 0) lines.push(locality_region.join(', '));\n if (data.country) lines.push(data.country);\n if (data.postalcode) lines.push(data.postalcode);\n return lines.join('
');\n };\n }],\n template: '
'\n };\n }\n \n angular\n .module('SOGo.Common')\n .directive('sgAddress', sgAddress);\n})();\n"]} \ No newline at end of file +{"version":3,"file":"Contacts.js","sources":["Contacts/Contacts.app.js","Contacts/AddressBookController.js","Contacts/AddressBooksController.js","Contacts/CardController.js","Contacts/sgAddress.directive.js"],"names":["configure","$stateProvider","$urlRouterProvider","state","url","abstract","views","addressbooks","templateUrl","controller","controllerAs","resolve","stateAddressbooks","addressbook","stateAddressbook","card","stateCard","stateNewCard","template","card@app.addressbook","otherwise","AddressBook","$findAll","window","contactFolders","$stateParams","$find","addressbookId","$futureAddressBookData","Card","tag","contactType","pid","c_component","selectedCard","cardId","$getCard","runBlock","$rootScope","$on","event","current","previous","rejection","console","error","angular","module","config","run","$inject","AddressBookController","$scope","$state","$timeout","$mdDialog","focus","Dialog","Settings","selectCard","go","id","newComponent","ev","ComponentDialogController","scope","create","type","hide","show","parent","element","document","body","targetEvent","clickOutsideToClose","escapeToClose","l","join","locals","vm","selectedFolder","notSelectedComponent","currentCard","selected","unselectCards","_","each","cards","confirmDeleteSelectedCards","confirm","then","selectedCards","filter","$deleteCards","data","status","saveSelectedCards","selectedUIDs","pluck","location","href","ApplicationBaseURL","copySelectedCards","folder","$copyCards","alert","selectAll","sort","field","$filter","sortedBy","$query","cancelSearch","mode","search","this","AddressBooksController","User","select","editMode","newAddressbook","prompt","name","isEditable","isRemote","owner","UserLogin","$add","edit","originalAddressbook","extend","$omit","revertEditing","save","length","$rename","confirmDelete","service","isSubscription","$delete","importCards","exportCards","showLinks","LinksDialogController","close","share","$acl","$users","usersWithACL","users","subscribeToFolder","addressbookData","debug","$subscribe","activeUser","CardController","addOrgUnit","i","$addOrgUnit","addBirthday","birthday","Date","addEmail","$addEmail","addPhone","$addPhone","addUrl","$addUrl","addAddress","$addAddress","addMember","$addMember","userFilter","excludedCards","dry","excludeLists","$cards","form","$valid","$save","indexOf","$reload","copy","err","log","reset","$reset","cancel","isNew","$fullname","ok","reject","o","viewRawSource","$event","$$resource","post","currentFolder","CardRawSourceDialogController","allEmailTypes","$EMAIL_TYPES","allTelTypes","$TEL_TYPES","allUrlTypes","$URL_TYPES","allAddressTypes","$ADDRESS_TYPES","categories","userFilterResults","sgAddress","restrict","addressLines","lines","locality_region","street","push","street2","locality","region","country","postalcode","directive"],"mappings":"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","sourcesContent":["/* -*- Mode: javascript; indent-tabs-mode: nil; c-basic-offset: 2 -*- */\n/* JavaScript for SOGoContacts */\n\n(function() {\n 'use strict';\n\n angular.module('SOGo.ContactsUI', ['ngSanitize', 'ui.router', 'SOGo.Common', 'SOGo.PreferencesUI'])\n .config(configure)\n .run(runBlock);\n\n /**\n * @ngInject\n */\n configure.$inject = ['$stateProvider', '$urlRouterProvider'];\n function configure($stateProvider, $urlRouterProvider) {\n $stateProvider\n .state('app', {\n url: '/addressbooks',\n abstract: true,\n views: {\n addressbooks: {\n templateUrl: 'UIxContactFoldersView', // UI/Templates/Contacts/UIxContactFoldersView.wox\n controller: 'AddressBooksController',\n controllerAs: 'app'\n }\n },\n resolve: {\n stateAddressbooks: stateAddressbooks\n }\n })\n .state('app.addressbook', {\n url: '/:addressbookId',\n views: {\n addressbook: {\n templateUrl: 'addressbook',\n controller: 'AddressBookController',\n controllerAs: 'addressbook'\n }\n },\n resolve: {\n stateAddressbook: stateAddressbook\n }\n })\n .state('app.addressbook.new', {\n url: '/{contactType:(?:card|list)}/new',\n views: {\n card: {\n templateUrl: 'UIxContactEditorTemplate', // UI/Templates/Contacts/UIxContactEditorTemplate.wox\n controller: 'CardController',\n controllerAs: 'editor'\n }\n },\n resolve: {\n stateCard: stateNewCard\n }\n })\n .state('app.addressbook.card', {\n url: '/:cardId',\n abstract: true,\n views: {\n card: {\n template: ''\n }\n },\n resolve: {\n stateCard: stateCard\n }\n })\n .state('app.addressbook.card.view', {\n url: '/view',\n views: {\n 'card@app.addressbook': {\n templateUrl: 'UIxContactViewTemplate', // UI/Templates/Contacts/UIxContactViewTemplate.wox\n controller: 'CardController',\n controllerAs: 'editor'\n }\n }\n })\n .state('app.addressbook.card.editor', {\n url: '/edit',\n views: {\n 'card@app.addressbook': {\n templateUrl: 'UIxContactEditorTemplate', // UI/Templates/Contacts/UIxContactEditorTemplate.wox\n controller: 'CardController',\n controllerAs: 'editor'\n }\n }\n });\n\n // if none of the above states are matched, use this as the fallback\n $urlRouterProvider.otherwise('/addressbooks/personal');\n }\n\n /**\n * @ngInject\n */\n stateAddressbooks.$inject = ['AddressBook'];\n function stateAddressbooks(AddressBook) {\n return AddressBook.$findAll(window.contactFolders);\n }\n\n /**\n * @ngInject\n */\n stateAddressbook.$inject = ['$stateParams', 'AddressBook'];\n function stateAddressbook($stateParams, AddressBook) {\n return AddressBook.$find($stateParams.addressbookId).$futureAddressBookData;\n }\n\n /**\n * @ngInject\n */\n stateNewCard.$inject = ['$stateParams', 'stateAddressbook', 'Card'];\n function stateNewCard($stateParams, stateAddressbook, Card) {\n var tag = 'v' + $stateParams.contactType,\n card = new Card({ pid: $stateParams.addressbookId, c_component: tag });\n stateAddressbook.selectedCard = true;\n return card;\n }\n\n /**\n * @ngInject\n */\n stateCard.$inject = ['$stateParams', 'stateAddressbook'];\n function stateCard($stateParams, stateAddressbook) {\n stateAddressbook.selectedCard = $stateParams.cardId;\n return stateAddressbook.$getCard($stateParams.cardId);\n }\n\n /**\n * @ngInject\n */\n runBlock.$inject = ['$rootScope'];\n function runBlock($rootScope) {\n $rootScope.$on('$routeChangeError', function(event, current, previous, rejection) {\n console.error(event, current, previous, rejection);\n });\n }\n\n})();\n","/* -*- Mode: javascript; indent-tabs-mode: nil; c-basic-offset: 2 -*- */\n\n(function() {\n 'use strict';\n\n /**\n * @ngInject\n */\n AddressBookController.$inject = ['$scope', '$state', '$timeout', '$mdDialog', 'sgFocus', 'Card', 'AddressBook', 'Dialog', 'sgSettings', 'stateAddressbooks', 'stateAddressbook'];\n function AddressBookController($scope, $state, $timeout, $mdDialog, focus, Card, AddressBook, Dialog, Settings, stateAddressbooks, stateAddressbook) {\n var vm = this;\n\n AddressBook.selectedFolder = stateAddressbook;\n\n vm.selectedFolder = stateAddressbook;\n vm.selectCard = selectCard;\n vm.newComponent = newComponent;\n vm.notSelectedComponent = notSelectedComponent;\n vm.unselectCards = unselectCards;\n vm.confirmDeleteSelectedCards = confirmDeleteSelectedCards;\n vm.saveSelectedCards = saveSelectedCards;\n vm.copySelectedCards = copySelectedCards;\n vm.selectAll = selectAll;\n vm.sort = sort;\n vm.sortedBy = sortedBy;\n vm.cancelSearch = cancelSearch;\n vm.mode = { search: false };\n \n function selectCard(card) {\n $state.go('app.addressbook.card.view', {addressbookId: stateAddressbook.id, cardId: card.id});\n }\n \n function newComponent(ev) {\n $mdDialog.show({\n parent: angular.element(document.body),\n targetEvent: ev,\n clickOutsideToClose: true,\n escapeToClose: true,\n template: [\n '',\n ' ',\n '
',\n ' ',\n ' ' + l('Contact'),\n ' ',\n ' ',\n ' ' + l('List'),\n ' ',\n '
',\n '
',\n '
'\n ].join(''),\n locals: {\n addressbookId: vm.selectedFolder.id\n },\n controller: ComponentDialogController\n });\n \n /**\n * @ngInject\n */\n ComponentDialogController.$inject = ['scope', '$mdDialog', '$state', 'addressbookId'];\n function ComponentDialogController(scope, $mdDialog, $state, addressbookId) {\n scope.create = function(type) {\n $mdDialog.hide();\n $state.go('app.addressbook.new', { addressbookId: addressbookId, contactType: type });\n };\n }\n }\n\n function notSelectedComponent(currentCard, type) {\n return (currentCard && currentCard.c_component == type && !currentCard.selected);\n }\n\n function unselectCards() {\n _.each(vm.selectedFolder.cards, function(card) { card.selected = false; });\n }\n \n function confirmDeleteSelectedCards() {\n Dialog.confirm(l('Warning'),\n l('Are you sure you want to delete the selected contacts?'))\n .then(function() {\n // User confirmed the deletion\n var selectedCards = _.filter(vm.selectedFolder.cards, function(card) { return card.selected; });\n vm.selectedFolder.$deleteCards(selectedCards);\n delete vm.selectedFolder.selectedCard;\n }, function(data, status) {\n // Delete failed\n });\n }\n\n function saveSelectedCards() {\n var selectedCards = _.filter(vm.selectedFolder.cards, function(card) { return card.selected; });\n var selectedUIDs = _.pluck(selectedCards, 'id');\n window.location.href = ApplicationBaseURL + '/' + vm.selectedFolder.id + '/export?uid=' + selectedUIDs.join('&uid=');\n }\n\n function copySelectedCards(folder) {\n var selectedCards = _.filter(vm.selectedFolder.cards, function(card) { return card.selected; });\n vm.selectedFolder.$copyCards(selectedCards, folder).then(function() {\n // TODO: refresh target addressbook?\n }, function(error) {\n Dialog.alert(l('Error'), error);\n });\n }\n\n function selectAll() {\n _.each(vm.selectedFolder.cards, function(card) {\n card.selected = true;\n });\n }\n\n function sort(field) {\n vm.selectedFolder.$filter('', { sort: field });\n }\n\n function sortedBy(field) {\n return AddressBook.$query.sort == field;\n }\n\n function cancelSearch() {\n vm.mode.search = false;\n vm.selectedFolder.$filter('');\n }\n }\n\n angular\n .module('SOGo.ContactsUI') \n .controller('AddressBookController', AddressBookController); \n})();\n","/* -*- Mode: javascript; indent-tabs-mode: nil; c-basic-offset: 2 -*- */\n\n(function() {\n 'use strict';\n\n /**\n * @ngInject\n */\n AddressBooksController.$inject = ['$state', '$scope', '$rootScope', '$stateParams', '$timeout', '$mdDialog', 'sgFocus', 'Card', 'AddressBook', 'Dialog', 'sgSettings', 'User', 'stateAddressbooks'];\n function AddressBooksController($state, $scope, $rootScope, $stateParams, $timeout, $mdDialog, focus, Card, AddressBook, Dialog, Settings, User, stateAddressbooks) {\n var vm = this;\n\n vm.activeUser = Settings.activeUser;\n vm.service = AddressBook;\n vm.select = select;\n vm.newAddressbook = newAddressbook;\n vm.edit = edit;\n vm.revertEditing = revertEditing;\n vm.save = save;\n vm.confirmDelete = confirmDelete;\n vm.importCards = importCards;\n vm.exportCards = exportCards;\n vm.showLinks = showLinks;\n vm.share = share;\n vm.subscribeToFolder = subscribeToFolder;\n\n function select(folder) {\n vm.editMode = false;\n $state.go('app.addressbook', {addressbookId: folder.id});\n }\n\n function newAddressbook() {\n Dialog.prompt(l('New addressbook'),\n l('Name of new addressbook'))\n .then(function(name) {\n var addressbook = new AddressBook(\n {\n name: name,\n isEditable: true,\n isRemote: false,\n owner: UserLogin\n }\n );\n AddressBook.$add(addressbook);\n });\n }\n\n function edit(folder) {\n if (!folder.isRemote) {\n vm.editMode = folder.id;\n vm.originalAddressbook = angular.extend({}, folder.$omit());\n focus('addressBookName_' + folder.id);\n }\n }\n\n function revertEditing(folder) {\n folder.name = vm.originalAddressbook.name;\n vm.editMode = false;\n }\n\n function save(folder) {\n var name = folder.name;\n if (name && name.length > 0 && name != vm.originalAddressbook.name) {\n folder.$rename(name)\n .then(function(data) {\n vm.editMode = false;\n }, function(data, status) {\n Dialog.alert(l('Warning'), data);\n });\n }\n }\n\n function confirmDelete() {\n if (vm.service.selectedFolder.isSubscription) {\n // Unsubscribe without confirmation\n vm.service.selectedFolder.$delete()\n .then(function() {\n vm.service.selectedFolder = null;\n $state.go('app.addressbook', { addressbookId: 'personal' });\n }, function(data, status) {\n Dialog.alert(l('An error occured while deleting the addressbook \"%{0}\".',\n vm.service.selectedFolder.name),\n l(data.error));\n });\n }\n else {\n Dialog.confirm(l('Warning'), l('Are you sure you want to delete the addressbook %{0}?',\n vm.service.selectedFolder.name))\n .then(function() {\n return vm.service.selectedFolder.$delete();\n })\n .then(function() {\n vm.service.selectedFolder = null;\n return true;\n })\n .catch(function(data, status) {\n Dialog.alert(l('An error occured while deleting the addressbook \"%{0}\".',\n vm.service.selectedFolder.name),\n l(data.error));\n });\n }\n }\n\n function importCards() {\n\n }\n\n function exportCards() {\n window.location.href = ApplicationBaseURL + '/' + vm.service.selectedFolder.id + '/exportFolder';\n }\n\n function showLinks(addressbook) {\n $mdDialog.show({\n parent: angular.element(document.body),\n clickOutsideToClose: true,\n escapeToClose: true,\n templateUrl: addressbook.id + '/links',\n controller: LinksDialogController,\n controllerAs: 'links',\n locals: {\n addressbook: addressbook\n }\n });\n \n /**\n * @ngInject\n */\n LinksDialogController.$inject = ['$mdDialog', 'addressbook'];\n function LinksDialogController($mdDialog, addressbook) {\n var vm = this;\n this.addressbook = addressbook;\n this.close = close;\n\n function close() {\n $mdDialog.hide();\n }\n }\n }\n\n function share(addressbook) {\n // Fetch list of ACL users\n addressbook.$acl.$users().then(function() {\n // Show ACL editor\n $mdDialog.show({\n templateUrl: addressbook.id + '/UIxAclEditor', // UI/Templates/UIxAclEditor.wox\n controller: 'AclController', // from the ng module SOGo.Common\n controllerAs: 'acl',\n clickOutsideToClose: true,\n escapeToClose: true,\n locals: {\n usersWithACL: addressbook.$acl.users,\n User: User,\n folder: addressbook\n }\n });\n });\n }\n\n /**\n * subscribeToFolder - Callback of sgSubscribe directive\n */\n function subscribeToFolder(addressbookData) {\n console.debug('subscribeToFolder ' + addressbookData.owner + addressbookData.name);\n AddressBook.$subscribe(addressbookData.owner, addressbookData.name).catch(function(data) {\n Dialog.alert(l('Warning'), l('An error occured please try again.'));\n });\n }\n }\n\n angular\n .module('SOGo.ContactsUI')\n .controller('AddressBooksController', AddressBooksController);\n})();\n","/* -*- Mode: javascript; indent-tabs-mode: nil; c-basic-offset: 2 -*- */\n\n(function() {\n 'use strict';\n\n /**\n * Controller to view and edit a card\n * @ngInject\n */\n CardController.$inject = ['$scope', '$timeout', '$mdDialog', 'AddressBook', 'Card', 'Dialog', 'sgFocus', '$state', '$stateParams', 'stateCard'];\n function CardController($scope, $timeout, $mdDialog, AddressBook, Card, Dialog, focus, $state, $stateParams, stateCard) {\n var vm = this;\n\n vm.card = stateCard;\n\n vm.currentFolder = AddressBook.selectedFolder;\n vm.allEmailTypes = Card.$EMAIL_TYPES;\n vm.allTelTypes = Card.$TEL_TYPES;\n vm.allUrlTypes = Card.$URL_TYPES;\n vm.allAddressTypes = Card.$ADDRESS_TYPES;\n vm.categories = {};\n vm.userFilterResults = [];\n vm.addOrgUnit = addOrgUnit;\n vm.addBirthday = addBirthday;\n vm.addEmail = addEmail;\n vm.addPhone = addPhone;\n vm.addUrl = addUrl;\n vm.addAddress = addAddress;\n vm.addMember = addMember;\n vm.userFilter = userFilter;\n vm.save = save;\n vm.reset = reset;\n vm.cancel = cancel;\n vm.confirmDelete = confirmDelete;\n vm.viewRawSource = viewRawSource;\n\n function addOrgUnit() {\n var i = vm.card.$addOrgUnit('');\n focus('orgUnit_' + i);\n }\n function addBirthday() {\n vm.card.birthday = new Date();\n }\n function addEmail() {\n var i = vm.card.$addEmail('');\n focus('email_' + i);\n }\n function addPhone() {\n var i = vm.card.$addPhone('');\n focus('phone_' + i);\n }\n function addUrl() {\n var i = vm.card.$addUrl('', '');\n focus('url_' + i);\n }\n function addAddress() {\n var i = vm.card.$addAddress('', '', '', '', '', '', '', '');\n focus('address_' + i);\n }\n function addMember() {\n var i = vm.card.$addMember('');\n focus('ref_' + i);\n }\n function userFilter($query, excludedCards) {\n AddressBook.selectedFolder.$filter($query, {dry: true, excludeLists: true}, excludedCards);\n return AddressBook.selectedFolder.$cards;\n }\n function save(form) {\n if (form.$valid) {\n vm.card.$save()\n .then(function(data) {\n var i = _.indexOf(_.pluck(AddressBook.selectedFolder.cards, 'id'), vm.card.id);\n if (i < 0) {\n // New card; reload contacts list and show addressbook in which the card has been created\n AddressBook.selectedFolder.$reload();\n }\n else {\n // Update contacts list with new version of the Card object\n AddressBook.selectedFolder.cards[i] = angular.copy(vm.card);\n }\n $state.go('app.addressbook.card.view', { cardId: vm.card.id });\n })\n .catch(function(err) {\n console.log(err);\n });\n }\n }\n function reset() {\n vm.card.$reset();\n }\n function cancel() {\n vm.card.$reset();\n if (vm.card.isNew) {\n // Cancelling the creation of a card\n vm.card = null;\n delete AddressBook.selectedFolder.selectedCard;\n $state.go('app.addressbook', { addressbookId: AddressBook.selectedFolder.id });\n }\n else {\n // Cancelling the edition of an existing card\n $state.go('app.addressbook.card.view', { cardId: vm.card.id });\n }\n }\n function confirmDelete(card) {\n Dialog.confirm(l('Warning'),\n l('Are you sure you want to delete the card of %{0}?', card.$fullname()),\n {ok: l('Yes'), cancel: l('No')})\n .then(function() {\n // User confirmed the deletion\n card.$delete()\n .then(function() {\n // Remove card from list of addressbook\n AddressBook.selectedFolder.cards = _.reject(AddressBook.selectedFolder.cards, function(o) {\n return o.id == card.id;\n });\n // Remove card object from scope\n vm.card = null;\n $state.go('app.addressbook', { addressbookId: AddressBook.selectedFolder.id });\n }, function(data, status) {\n Dialog.alert(l('Warning'), l('An error occured while deleting the card \"%{0}\".',\n card.$fullname()));\n });\n });\n }\n\n function viewRawSource($event) {\n Card.$$resource.post(vm.currentFolder.id + '/' + vm.card.id, \"raw\").then(function(data) {\n $mdDialog.show({\n parent: angular.element(document.body),\n targetEvent: $event,\n clickOutsideToClose: true,\n escapeToClose: true,\n template: [\n '',\n ' ',\n '
',\n            data,\n            '    
',\n '
',\n '
',\n ' ' + l('Close') + '',\n '
',\n '
'\n ].join(''),\n controller: CardRawSourceDialogController\n });\n\n /**\n * @ngInject\n */\n CardRawSourceDialogController.$inject = ['scope', '$mdDialog'];\n function CardRawSourceDialogController(scope, $mdDialog) {\n scope.close = function() {\n $mdDialog.hide();\n };\n }\n });\n }\n }\n\n angular\n .module('SOGo.ContactsUI')\n .controller('CardController', CardController);\n})();\n","/* -*- Mode: javascript; indent-tabs-mode: nil; c-basic-offset: 2 -*- */\n\n(function() {\n 'use strict';\n\n /**\n * @name sgAddress\n * @memberof ContactsUI\n * @desc Directive to format a postal address.\n * @ngInject\n */\n function sgAddress() {\n return {\n restrict: 'A',\n scope: { data: '=sgAddress' },\n controller: ['$scope', function($scope) {\n $scope.addressLines = function(data) {\n var lines = [],\n locality_region = [];\n if (data.street) lines.push(data.street);\n if (data.street2) lines.push(data.street2);\n if (data.locality) locality_region.push(data.locality);\n if (data.region) locality_region.push(data.region);\n if (locality_region.length > 0) lines.push(locality_region.join(', '));\n if (data.country) lines.push(data.country);\n if (data.postalcode) lines.push(data.postalcode);\n return lines.join('
');\n };\n }],\n template: '
'\n };\n }\n \n angular\n .module('SOGo.Common')\n .directive('sgAddress', sgAddress);\n})();\n"]} \ No newline at end of file diff --git a/UI/WebServerResources/js/Contacts.services.js b/UI/WebServerResources/js/Contacts.services.js index af7297540..1910b14c0 100644 --- a/UI/WebServerResources/js/Contacts.services.js +++ b/UI/WebServerResources/js/Contacts.services.js @@ -1,2 +1,2 @@ -!function(){"use strict";function AddressBook(futureAddressBookData){if("function"!=typeof futureAddressBookData.then)if(this.init(futureAddressBookData),this.name&&!this.id){var newAddressBookData=AddressBook.$$resource.create("createFolder",this.name);this.$unwrap(newAddressBookData)}else this.id&&(this.$acl=new AddressBook.$$Acl("Contacts/"+this.id));else this.$unwrap(futureAddressBookData)}AddressBook.$factory=["$q","$timeout","$log","sgSettings","Resource","Card","Acl","Preferences",function($q,$timeout,$log,Settings,Resource,Card,Acl,Preferences){return angular.extend(AddressBook,{$q:$q,$timeout:$timeout,$log:$log,$$resource:new Resource(Settings.activeUser("folderURL")+"Contacts",Settings.activeUser()),$Card:Card,$$Acl:Acl,$Preferences:Preferences,$query:{search:"name_or_address",value:"",sort:"c_cn",asc:1},activeUser:Settings.activeUser(),selectedFolder:null,$refreshTimeout:null}),Preferences.ready().then(function(){Preferences.settings.Contact.SortingState&&(AddressBook.$query.sort=Preferences.settings.Contact.SortingState[0],AddressBook.$query.asc=parseInt(Preferences.settings.Contact.SortingState[1]))}),AddressBook}];try{angular.module("SOGo.ContactsUI")}catch(e){angular.module("SOGo.ContactsUI",["SOGo.Common"])}angular.module("SOGo.ContactsUI").factory("AddressBook",AddressBook.$factory),AddressBook.$filterAll=function(search,options,excludedCards){var params={search:search};if(!search)return AddressBook.$cards=[],AddressBook.$q.when(AddressBook.$cards);if(angular.isUndefined(AddressBook.$cards))AddressBook.$cards=[];else if(AddressBook.$query==search)return AddressBook.$q.when(AddressBook.$cards);return AddressBook.$query=search,angular.extend(params,options),AddressBook.$$resource.fetch(null,"allContactSearch",params).then(function(response){var results,card,index,compareIds=function(data){return this.id==data.id};for(results=excludedCards?_.filter(response.contacts,function(data){return _.isUndefined(_.find(excludedCards,compareIds,data))}):response.contacts,index=AddressBook.$cards.length-1;index>=0;index--)card=AddressBook.$cards[index],_.isUndefined(_.find(results,compareIds,card))&&AddressBook.$cards.splice(index,1);return _.each(results,function(data,index){if(_.isUndefined(_.find(AddressBook.$cards,compareIds,data))){var card=new AddressBook.$Card(data,search);AddressBook.$cards.splice(index,0,card)}}),AddressBook.$cards})},AddressBook.$add=function(addressbook){var list,sibling,i;list=addressbook.isSubscription?this.$subscriptions:this.$addressbooks,sibling=_.find(list,function(o){return"personal"==addressbook.id||"personal"!=o.id&&1===o.name.localeCompare(addressbook.name)}),i=sibling?_.indexOf(_.pluck(list,"id"),sibling.id):1,list.splice(i,0,addressbook)},AddressBook.$findAll=function(data){var _this=this;return data&&(this.$addressbooks=[],this.$subscriptions=[],this.$remotes=[],angular.forEach(data,function(o,i){var addressbook=new AddressBook(o);addressbook.isRemote?_this.$remotes.push(addressbook):addressbook.isSubscription?_this.$subscriptions.push(addressbook):_this.$addressbooks.push(addressbook)})),this.$addressbooks},AddressBook.$find=function(addressbookId){var futureAddressBookData=AddressBook.$$resource.fetch(addressbookId,"view",AddressBook.$query);return new AddressBook(futureAddressBookData)},AddressBook.$subscribe=function(uid,path){var _this=this;return AddressBook.$$resource.userResource(uid).fetch(path,"subscribe").then(function(addressbookData){var addressbook=new AddressBook(addressbookData);return _.isUndefined(_.find(_this.$subscriptions,function(o){return o.id==addressbookData.id}))&&AddressBook.$add(addressbook),addressbook})},AddressBook.prototype.init=function(data){this.$cards=[],this.cards=[],angular.extend(this,data),this.isOwned=AddressBook.activeUser.isSuperUser||this.owner==AddressBook.activeUser.login,this.isSubscription=!this.isRemote&&this.owner!=AddressBook.activeUser.login},AddressBook.prototype.$id=function(){return this.id?AddressBook.$q.when(this.id):this.$futureAddressBookData.then(function(addressbook){return addressbook.id})},AddressBook.prototype.$selectedCount=function(){var count;return count=0,this.cards&&(count=_.filter(this.cards,function(card){return card.selected}).length),count},AddressBook.prototype.$startRefreshTimeout=function(){var _this=this;AddressBook.$refreshTimeout&&AddressBook.$timeout.cancel(AddressBook.$refreshTimeout),AddressBook.$Preferences.ready().then(function(){var refreshViewCheck=AddressBook.$Preferences.defaults.SOGoRefreshViewCheck;if(refreshViewCheck&&"manually"!=refreshViewCheck){var f=angular.bind(_this,AddressBook.prototype.$reload);AddressBook.$refreshTimeout=AddressBook.$timeout(f,1e3*refreshViewCheck.timeInterval())}})},AddressBook.prototype.$reload=function(){var _this=this;return this.$startRefreshTimeout(),AddressBook.$$resource.fetch(this.id,"view").then(function(response){var index,card,results=response.cards,cards=_this.cards,compareIds=function(data){return this.id==data.id};for(index=cards.length-1;index>=0;index--)card=cards[index],_.isUndefined(_.find(results,compareIds,card))&&cards.splice(index,1);return _.each(results,function(data,index){if(_.isUndefined(_.find(cards,compareIds,data))){var card=new AddressBook.$Card(data);cards.splice(index,0,card)}}),cards})},AddressBook.prototype.$filter=function(search,options,excludedCards){var _this=this;return AddressBook.$Preferences.ready().then(function(){if(options&&(angular.extend(AddressBook.$query,options),options.dry)){if(!search)return _this.$cards=[],AddressBook.$q.when(_this.$cards);if(AddressBook.$query.value==search)return AddressBook.$q.when(_this.$cards)}return AddressBook.$query.value=search,_this.$id().then(function(addressbookId){return AddressBook.$$resource.fetch(addressbookId,"view",AddressBook.$query)}).then(function(response){var results,cards,card,index,compareIds=function(data){return _this.id==data.id};for(cards=options&&options.dry?_this.$cards:_this.cards,results=excludedCards?_.filter(response.cards,function(card){return _.isUndefined(_.find(excludedCards,compareIds,card))}):response.cards,index=cards.length-1;index>=0;index--)card=cards[index],_.isUndefined(_.find(results,compareIds,card))&&cards.splice(index,1);return _.each(results,function(data,index){if(_.isUndefined(_.find(cards,compareIds,data))){var card=new AddressBook.$Card(data,search);cards.splice(index,0,card)}}),_.each(results,function(data,index){var oldIndex,removedCards;cards[index].id!=data.id&&(oldIndex=_.findIndex(cards,compareIds,data),removedCards=cards.splice(oldIndex,1),cards.splice(index,0,removedCards[0]))}),cards})})},AddressBook.prototype.$rename=function(name){var i=_.indexOf(_.pluck(AddressBook.$addressbooks,"id"),this.id);return this.name=name,AddressBook.$addressbooks.splice(i,1),AddressBook.$add(this),this.$save()},AddressBook.prototype.$delete=function(){var list,promise,_this=this,d=AddressBook.$q.defer();return this.isSubscription?(promise=AddressBook.$$resource.fetch(this.id,"unsubscribe"),list=AddressBook.$subscriptions):(promise=AddressBook.$$resource.remove(this.id),list=AddressBook.$addressbooks),promise.then(function(){var i=_.indexOf(_.pluck(list,"id"),_this.id);list.splice(i,1),d.resolve()},function(data,status){d.reject(data)}),d.promise},AddressBook.prototype.$deleteCards=function(cards){var uids=_.map(cards,function(card){return card.id}),_this=this;return AddressBook.$$resource.post(this.id,"batchDelete",{uids:uids}).then(function(){_this.cards=_.difference(_this.cards,cards)})},AddressBook.prototype.$copyCards=function(cards,folder){var uids=_.map(cards,function(card){return card.id});return AddressBook.$$resource.post(this.id,"copy",{uids:uids,folder:folder})},AddressBook.prototype.$save=function(){return AddressBook.$$resource.save(this.id,this.$omit()).then(function(data){return data})},AddressBook.prototype.$getCard=function(cardId){return this.$id().then(function(addressbookId){return AddressBook.$Card.$find(addressbookId,cardId)})},AddressBook.prototype.$unwrap=function(futureAddressBookData){var _this=this;this.$futureAddressBookData=futureAddressBookData.then(function(data){return AddressBook.$timeout(function(){return angular.forEach(AddressBook.$findAll(),function(o,i){o.id==data.id&&angular.extend(_this,o)}),_this.init(data),angular.forEach(_this.cards,function(o,i){_this.cards[i]=new AddressBook.$Card(o)}),_this.$acl=new AddressBook.$$Acl("Contacts/"+_this.id),_this.$startRefreshTimeout(),_this})},function(data){_this.isError=!0,angular.isObject(data)&&AddressBook.$timeout(function(){angular.extend(_this,data)})})},AddressBook.prototype.$omit=function(){var addressbook={};return angular.forEach(this,function(value,key){"constructor"!=key&&"cards"!=key&&"$"!=key[0]&&(addressbook[key]=value)}),addressbook}}(),function(){"use strict";function Card(futureCardData,partial){if("function"!=typeof futureCardData.then){if(this.init(futureCardData,partial),this.pid&&!this.id){var newCardData=Card.$$resource.newguid(this.pid);this.$unwrap(newCardData),this.isNew=!0}}else this.$unwrap(futureCardData)}Card.$TEL_TYPES=["work","home","cell","fax","pager"],Card.$EMAIL_TYPES=["work","home","pref"],Card.$URL_TYPES=["work","home","pref"],Card.$ADDRESS_TYPES=["work","home"],Card.$factory=["$timeout","sgSettings","Resource","Preferences","Gravatar",function($timeout,Settings,Resource,Preferences,Gravatar){return angular.extend(Card,{$$resource:new Resource(Settings.activeUser("folderURL")+"Contacts",Settings.activeUser()),$timeout:$timeout,$gravatar:Gravatar}),Preferences.ready().then(function(){Preferences.defaults.SOGoContactsCategories&&(Card.$categories=Preferences.defaults.SOGoContactsCategories)}),Card}];try{angular.module("SOGo.ContactsUI")}catch(e){angular.module("SOGo.ContactsUI",["SOGo.Common"])}angular.module("SOGo.ContactsUI").factory("Card",Card.$factory),Card.$find=function(addressbookId,cardId){var futureCardData=this.$$resource.fetch([addressbookId,cardId].join("/"),"view");return cardId?new Card(futureCardData):Card.$unwrapCollection(futureCardData)},Card.filterCategories=function(query){var re=new RegExp(query,"i");return _.filter(Card.$categories,function(category){return-1!=category.search(re)})},Card.$unwrapCollection=function(futureCardData){var collection={};return collection.$futureCardData=futureCardData,futureCardData.then(function(cards){Card.$timeout(function(){angular.forEach(cards,function(data,index){collection[data.id]=new Card(data)})})}),collection},Card.prototype.init=function(data,partial){this.refs=[],angular.extend(this,data),this.$$fullname||(this.$$fullname=this.$fullname()),this.$$email||(this.$$email=this.$preferredEmail(partial)),this.$$image||(this.$$image=this.image||Card.$gravatar(this.$preferredEmail(partial),32)),this.selected=!1,this.empty=" "},Card.prototype.$id=function(){return this.$futureCardData.then(function(data){return data.id})},Card.prototype.$save=function(){var _this=this,action="saveAsContact";return"vlist"==this.c_component&&(action="saveAsList"),Card.$$resource.save([this.pid,this.id||"_new_"].join("/"),this.$omit(),{action:action}).then(function(data){return _this.$shadowData=_this.$omit(!0),data})},Card.prototype.$delete=function(attribute,index){return attribute?void(index>-1&&this[attribute].length>index&&this[attribute].splice(index,1)):Card.$$resource.remove([this.pid,this.id].join("/"))},Card.prototype.$fullname=function(){var names,fn=this.c_cn||"";return 0===fn.length&&(names=[],this.c_givenname&&this.c_givenname.length>0&&names.push(this.c_givenname),this.nickname&&this.nickname.length>0&&names.push(""+this.nickname+""),this.c_sn&&this.c_sn.length>0&&names.push(this.c_sn),names.length>0?fn=names.join(" "):this.c_org&&this.c_org.length>0?fn=this.c_org:this.emails&&this.emails.length>0?fn=_.find(this.emails,function(i){return""!==i.value}).value:this.c_cn&&this.c_cn.length>0&&(fn=this.c_cn)),fn},Card.prototype.$description=function(){var description=[];return this.title&&description.push(this.title),this.role&&description.push(this.role),this.orgUnits&&this.orgUnits.length>0&&_.forEach(this.orgUnits,function(unit){""!==unit.value&&description.push(unit.value)}),this.org&&description.push(this.org),this.description&&description.push(this.description),description.join(", ")},Card.prototype.$preferredEmail=function(partial){var email,re;return partial&&(re=new RegExp(partial,"i"),email=_.find(this.emails,function(o){return re.test(o.value)})),email?email=email.value:(email=_.find(this.emails,function(o){return"pref"==o.type}),email=email?email.value:this.emails&&this.emails.length?this.emails[0].value:""),email},Card.prototype.$shortFormat=function(partial){var fullname=this.$fullname(),email=this.$preferredEmail(partial);return email&&email!=fullname&&(fullname+=" <"+email+">"),fullname},Card.prototype.$birthday=function(){return new Date(1e3*this.birthday)},Card.prototype.$isCard=function(){return"vcard"==this.c_component},Card.prototype.$isList=function(){return"vlist"==this.c_component},Card.prototype.$addOrgUnit=function(orgUnit){if(angular.isUndefined(this.orgUnits))this.orgUnits=[{value:orgUnit}];else{for(var i=0;i"),"["+desc+"]"}}(); +!function(){"use strict";function AddressBook(futureAddressBookData){if("function"!=typeof futureAddressBookData.then)if(this.init(futureAddressBookData),this.name&&!this.id){var newAddressBookData=AddressBook.$$resource.create("createFolder",this.name);this.$unwrap(newAddressBookData)}else this.id&&(this.$acl=new AddressBook.$$Acl("Contacts/"+this.id));else this.$unwrap(futureAddressBookData)}AddressBook.$factory=["$q","$timeout","$log","sgSettings","Resource","Card","Acl","Preferences",function($q,$timeout,$log,Settings,Resource,Card,Acl,Preferences){return angular.extend(AddressBook,{$q:$q,$timeout:$timeout,$log:$log,$$resource:new Resource(Settings.activeUser("folderURL")+"Contacts",Settings.activeUser()),$Card:Card,$$Acl:Acl,$Preferences:Preferences,$query:{search:"name_or_address",value:"",sort:"c_cn",asc:1},activeUser:Settings.activeUser(),selectedFolder:null,$refreshTimeout:null}),Preferences.ready().then(function(){Preferences.settings.Contact.SortingState&&(AddressBook.$query.sort=Preferences.settings.Contact.SortingState[0],AddressBook.$query.asc=parseInt(Preferences.settings.Contact.SortingState[1]))}),AddressBook}];try{angular.module("SOGo.ContactsUI")}catch(e){angular.module("SOGo.ContactsUI",["SOGo.Common"])}angular.module("SOGo.ContactsUI").factory("AddressBook",AddressBook.$factory),AddressBook.$filterAll=function(search,options,excludedCards){var params={search:search};if(!search)return AddressBook.$cards=[],AddressBook.$q.when(AddressBook.$cards);if(angular.isUndefined(AddressBook.$cards))AddressBook.$cards=[];else if(AddressBook.$query==search)return AddressBook.$q.when(AddressBook.$cards);return AddressBook.$query=search,angular.extend(params,options),AddressBook.$$resource.fetch(null,"allContactSearch",params).then(function(response){var results,card,index,compareIds=function(data){return this.id==data.id};for(results=excludedCards?_.filter(response.contacts,function(data){return _.isUndefined(_.find(excludedCards,compareIds,data))}):response.contacts,index=AddressBook.$cards.length-1;index>=0;index--)card=AddressBook.$cards[index],_.isUndefined(_.find(results,compareIds,card))&&AddressBook.$cards.splice(index,1);return _.each(results,function(data,index){if(_.isUndefined(_.find(AddressBook.$cards,compareIds,data))){var card=new AddressBook.$Card(data,search);AddressBook.$cards.splice(index,0,card)}}),AddressBook.$cards})},AddressBook.$add=function(addressbook){var list,sibling,i;list=addressbook.isSubscription?this.$subscriptions:this.$addressbooks,sibling=_.find(list,function(o){return"personal"==addressbook.id||"personal"!=o.id&&1===o.name.localeCompare(addressbook.name)}),i=sibling?_.indexOf(_.pluck(list,"id"),sibling.id):1,list.splice(i,0,addressbook)},AddressBook.$findAll=function(data){var _this=this;return data&&(this.$addressbooks=[],this.$subscriptions=[],this.$remotes=[],angular.forEach(data,function(o,i){var addressbook=new AddressBook(o);addressbook.isRemote?_this.$remotes.push(addressbook):addressbook.isSubscription?_this.$subscriptions.push(addressbook):_this.$addressbooks.push(addressbook)})),_.union(this.$addressbooks,this.$subscriptions,this.$remotes)},AddressBook.$find=function(addressbookId){var futureAddressBookData=AddressBook.$$resource.fetch(addressbookId,"view",AddressBook.$query);return new AddressBook(futureAddressBookData)},AddressBook.$subscribe=function(uid,path){var _this=this;return AddressBook.$$resource.userResource(uid).fetch(path,"subscribe").then(function(addressbookData){var addressbook=new AddressBook(addressbookData);return _.isUndefined(_.find(_this.$subscriptions,function(o){return o.id==addressbookData.id}))&&AddressBook.$add(addressbook),addressbook})},AddressBook.prototype.init=function(data){this.$cards=[],this.cards=[],angular.extend(this,data),this.isOwned=AddressBook.activeUser.isSuperUser||this.owner==AddressBook.activeUser.login,this.isSubscription=!this.isRemote&&this.owner!=AddressBook.activeUser.login},AddressBook.prototype.$id=function(){return this.id?AddressBook.$q.when(this.id):this.$futureAddressBookData.then(function(addressbook){return addressbook.id})},AddressBook.prototype.$selectedCount=function(){var count;return count=0,this.cards&&(count=_.filter(this.cards,function(card){return card.selected}).length),count},AddressBook.prototype.$startRefreshTimeout=function(){var _this=this;AddressBook.$refreshTimeout&&AddressBook.$timeout.cancel(AddressBook.$refreshTimeout),AddressBook.$Preferences.ready().then(function(){var refreshViewCheck=AddressBook.$Preferences.defaults.SOGoRefreshViewCheck;if(refreshViewCheck&&"manually"!=refreshViewCheck){var f=angular.bind(_this,AddressBook.prototype.$reload);AddressBook.$refreshTimeout=AddressBook.$timeout(f,1e3*refreshViewCheck.timeInterval())}})},AddressBook.prototype.$reload=function(){var _this=this;return this.$startRefreshTimeout(),AddressBook.$$resource.fetch(this.id,"view").then(function(response){var index,card,results=response.cards,cards=_this.cards,compareIds=function(data){return this.id==data.id};for(index=cards.length-1;index>=0;index--)card=cards[index],_.isUndefined(_.find(results,compareIds,card))&&cards.splice(index,1);return _.each(results,function(data,index){if(_.isUndefined(_.find(cards,compareIds,data))){var card=new AddressBook.$Card(data);cards.splice(index,0,card)}}),cards})},AddressBook.prototype.$filter=function(search,options,excludedCards){var _this=this;return AddressBook.$Preferences.ready().then(function(){if(options&&(angular.extend(AddressBook.$query,options),options.dry)){if(!search)return _this.$cards=[],AddressBook.$q.when(_this.$cards);if(AddressBook.$query.value==search)return AddressBook.$q.when(_this.$cards)}return AddressBook.$query.value=search,_this.$id().then(function(addressbookId){return AddressBook.$$resource.fetch(addressbookId,"view",AddressBook.$query)}).then(function(response){var results,cards,card,index,compareIds=function(data){return _this.id==data.id};for(cards=options&&options.dry?_this.$cards:_this.cards,results=excludedCards?_.filter(response.cards,function(card){return _.isUndefined(_.find(excludedCards,compareIds,card))}):response.cards,index=cards.length-1;index>=0;index--)card=cards[index],_.isUndefined(_.find(results,compareIds,card))&&cards.splice(index,1);return _.each(results,function(data,index){if(_.isUndefined(_.find(cards,compareIds,data))){var card=new AddressBook.$Card(data,search);cards.splice(index,0,card)}}),_.each(results,function(data,index){var oldIndex,removedCards;cards[index].id!=data.id&&(oldIndex=_.findIndex(cards,compareIds,data),removedCards=cards.splice(oldIndex,1),cards.splice(index,0,removedCards[0]))}),cards})})},AddressBook.prototype.$rename=function(name){var i=_.indexOf(_.pluck(AddressBook.$addressbooks,"id"),this.id);return this.name=name,AddressBook.$addressbooks.splice(i,1),AddressBook.$add(this),this.$save()},AddressBook.prototype.$delete=function(){var list,promise,_this=this,d=AddressBook.$q.defer();return this.isSubscription?(promise=AddressBook.$$resource.fetch(this.id,"unsubscribe"),list=AddressBook.$subscriptions):(promise=AddressBook.$$resource.remove(this.id),list=AddressBook.$addressbooks),promise.then(function(){var i=_.indexOf(_.pluck(list,"id"),_this.id);list.splice(i,1),d.resolve()},function(data,status){d.reject(data)}),d.promise},AddressBook.prototype.$deleteCards=function(cards){var uids=_.map(cards,function(card){return card.id}),_this=this;return AddressBook.$$resource.post(this.id,"batchDelete",{uids:uids}).then(function(){_this.cards=_.difference(_this.cards,cards)})},AddressBook.prototype.$copyCards=function(cards,folder){var uids=_.map(cards,function(card){return card.id});return AddressBook.$$resource.post(this.id,"copy",{uids:uids,folder:folder})},AddressBook.prototype.$save=function(){return AddressBook.$$resource.save(this.id,this.$omit()).then(function(data){return data})},AddressBook.prototype.$getCard=function(cardId){return this.$id().then(function(addressbookId){return AddressBook.$Card.$find(addressbookId,cardId)})},AddressBook.prototype.$unwrap=function(futureAddressBookData){var _this=this;this.$futureAddressBookData=futureAddressBookData.then(function(data){return AddressBook.$timeout(function(){return angular.forEach(AddressBook.$findAll(),function(o,i){o.id==data.id&&angular.extend(_this,o)}),_this.init(data),angular.forEach(_this.cards,function(o,i){_this.cards[i]=new AddressBook.$Card(o)}),_this.$acl=new AddressBook.$$Acl("Contacts/"+_this.id),_this.$startRefreshTimeout(),_this})},function(data){_this.isError=!0,angular.isObject(data)&&AddressBook.$timeout(function(){angular.extend(_this,data)})})},AddressBook.prototype.$omit=function(){var addressbook={};return angular.forEach(this,function(value,key){"constructor"!=key&&"cards"!=key&&"$"!=key[0]&&(addressbook[key]=value)}),addressbook}}(),function(){"use strict";function Card(futureCardData,partial){if("function"!=typeof futureCardData.then){if(this.init(futureCardData,partial),this.pid&&!this.id){var newCardData=Card.$$resource.newguid(this.pid);this.$unwrap(newCardData),this.isNew=!0}}else this.$unwrap(futureCardData)}Card.$TEL_TYPES=["work","home","cell","fax","pager"],Card.$EMAIL_TYPES=["work","home","pref"],Card.$URL_TYPES=["work","home","pref"],Card.$ADDRESS_TYPES=["work","home"],Card.$factory=["$timeout","sgSettings","Resource","Preferences","Gravatar",function($timeout,Settings,Resource,Preferences,Gravatar){return angular.extend(Card,{$$resource:new Resource(Settings.activeUser("folderURL")+"Contacts",Settings.activeUser()),$timeout:$timeout,$gravatar:Gravatar}),Preferences.ready().then(function(){Preferences.defaults.SOGoContactsCategories&&(Card.$categories=Preferences.defaults.SOGoContactsCategories)}),Card}];try{angular.module("SOGo.ContactsUI")}catch(e){angular.module("SOGo.ContactsUI",["SOGo.Common"])}angular.module("SOGo.ContactsUI").factory("Card",Card.$factory),Card.$find=function(addressbookId,cardId){var futureCardData=this.$$resource.fetch([addressbookId,cardId].join("/"),"view");return cardId?new Card(futureCardData):Card.$unwrapCollection(futureCardData)},Card.filterCategories=function(query){var re=new RegExp(query,"i");return _.filter(Card.$categories,function(category){return-1!=category.search(re)})},Card.$unwrapCollection=function(futureCardData){var collection={};return collection.$futureCardData=futureCardData,futureCardData.then(function(cards){Card.$timeout(function(){angular.forEach(cards,function(data,index){collection[data.id]=new Card(data)})})}),collection},Card.prototype.init=function(data,partial){this.refs=[],angular.extend(this,data),this.$$fullname||(this.$$fullname=this.$fullname()),this.$$email||(this.$$email=this.$preferredEmail(partial)),this.$$image||(this.$$image=this.image||Card.$gravatar(this.$preferredEmail(partial),32)),this.selected=!1,this.empty=" "},Card.prototype.$id=function(){return this.$futureCardData.then(function(data){return data.id})},Card.prototype.$save=function(){var _this=this,action="saveAsContact";return"vlist"==this.c_component&&(action="saveAsList"),Card.$$resource.save([this.pid,this.id||"_new_"].join("/"),this.$omit(),{action:action}).then(function(data){return _this.$shadowData=_this.$omit(!0),data})},Card.prototype.$delete=function(attribute,index){return attribute?void(index>-1&&this[attribute].length>index?this[attribute].splice(index,1):delete this[attribute]):Card.$$resource.remove([this.pid,this.id].join("/"))},Card.prototype.$fullname=function(){var names,fn=this.c_cn||"";return 0===fn.length&&(names=[],this.c_givenname&&this.c_givenname.length>0&&names.push(this.c_givenname),this.nickname&&this.nickname.length>0&&names.push(""+this.nickname+""),this.c_sn&&this.c_sn.length>0&&names.push(this.c_sn),names.length>0?fn=names.join(" "):this.c_org&&this.c_org.length>0?fn=this.c_org:this.emails&&this.emails.length>0?fn=_.find(this.emails,function(i){return""!==i.value}).value:this.c_cn&&this.c_cn.length>0&&(fn=this.c_cn)),fn},Card.prototype.$description=function(){var description=[];return this.title&&description.push(this.title),this.role&&description.push(this.role),this.orgUnits&&this.orgUnits.length>0&&_.forEach(this.orgUnits,function(unit){""!==unit.value&&description.push(unit.value)}),this.org&&description.push(this.org),this.description&&description.push(this.description),description.join(", ")},Card.prototype.$preferredEmail=function(partial){var email,re;return partial&&(re=new RegExp(partial,"i"),email=_.find(this.emails,function(o){return re.test(o.value)})),email?email=email.value:(email=_.find(this.emails,function(o){return"pref"==o.type}),email=email?email.value:this.emails&&this.emails.length?this.emails[0].value:""),email},Card.prototype.$shortFormat=function(partial){var fullname=this.$fullname(),email=this.$preferredEmail(partial);return email&&email!=fullname&&(fullname+=" <"+email+">"),fullname},Card.prototype.$birthday=function(){return this.birthday?[this.birthday.getFullYear(),this.birthday.getMonth()+1,this.birthday.getDate()].join("/"):""},Card.prototype.$isCard=function(){return"vcard"==this.c_component},Card.prototype.$isList=function(){return"vlist"==this.c_component},Card.prototype.$addOrgUnit=function(orgUnit){if(angular.isUndefined(this.orgUnits))this.orgUnits=[{value:orgUnit}];else{for(var i=0;i"),"["+desc+"]"}}(); //# sourceMappingURL=Contacts.services.js.map \ No newline at end of file diff --git a/UI/WebServerResources/js/Contacts.services.js.map b/UI/WebServerResources/js/Contacts.services.js.map index f0393ebf6..c9ac6b12a 100644 --- a/UI/WebServerResources/js/Contacts.services.js.map +++ b/UI/WebServerResources/js/Contacts.services.js.map @@ -1 +1 @@ -{"version":3,"file":"Contacts.services.js","sources":["Contacts/AddressBook.service.js","Contacts/Card.service.js"],"names":["AddressBook","futureAddressBookData","then","this","init","name","id","newAddressBookData","$$resource","create","$unwrap","$acl","$$Acl","$factory","$q","$timeout","$log","Settings","Resource","Card","Acl","Preferences","angular","extend","activeUser","$Card","$Preferences","$query","search","value","sort","asc","selectedFolder","$refreshTimeout","ready","settings","Contact","SortingState","parseInt","module","e","factory","$filterAll","options","excludedCards","params","$cards","when","isUndefined","fetch","response","results","card","index","compareIds","data","_","filter","contacts","find","length","splice","each","$add","addressbook","list","sibling","i","isSubscription","$subscriptions","$addressbooks","o","localeCompare","indexOf","pluck","$findAll","_this","$remotes","forEach","isRemote","push","$find","addressbookId","$subscribe","uid","path","userResource","addressbookData","prototype","cards","isOwned","isSuperUser","owner","login","$id","$futureAddressBookData","$selectedCount","count","selected","$startRefreshTimeout","cancel","refreshViewCheck","defaults","SOGoRefreshViewCheck","f","bind","$reload","timeInterval","$filter","dry","oldIndex","removedCards","findIndex","$rename","$save","$delete","promise","d","defer","remove","resolve","status","reject","$deleteCards","uids","map","post","difference","$copyCards","folder","save","$omit","$getCard","cardId","isError","isObject","key","futureCardData","partial","pid","newCardData","newguid","isNew","$TEL_TYPES","$EMAIL_TYPES","$URL_TYPES","$ADDRESS_TYPES","Gravatar","$gravatar","SOGoContactsCategories","$categories","join","$unwrapCollection","filterCategories","query","re","RegExp","category","collection","$futureCardData","refs","$$fullname","$fullname","$$email","$preferredEmail","$$image","image","empty","action","c_component","$shadowData","attribute","names","fn","c_cn","c_givenname","nickname","c_sn","c_org","emails","$description","description","title","role","orgUnits","unit","org","email","test","type","$shortFormat","fullname","$birthday","Date","birthday","$isCard","$isList","$addOrgUnit","orgUnit","$addCategory","categories","$addEmail","$addPhone","phones","$addUrl","url","urls","$addAddress","postoffice","street","street2","locality","region","country","postalcode","addresses","$addMember","$reset","reference","deep","copy","toString","desc"],"mappings":"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","sourcesContent":["/* -*- Mode: javascript; indent-tabs-mode: nil; c-basic-offset: 2 -*- */\n\n(function() {\n 'use strict';\n\n /**\n * @name AddressBook\n * @constructor\n * @param {object} futureAddressBookData - either an object literal or a promise\n */\n function AddressBook(futureAddressBookData) {\n // Data is immediately available\n if (typeof futureAddressBookData.then !== 'function') {\n this.init(futureAddressBookData);\n if (this.name && !this.id) {\n // Create a new addressbook on the server\n var newAddressBookData = AddressBook.$$resource.create('createFolder', this.name);\n this.$unwrap(newAddressBookData);\n }\n else if (this.id) {\n this.$acl = new AddressBook.$$Acl('Contacts/' + this.id);\n }\n }\n else {\n // The promise will be unwrapped first\n this.$unwrap(futureAddressBookData);\n }\n }\n\n /**\n * @memberof AddressBook\n * @desc The factory we'll use to register with Angular\n * @returns the AddressBook constructor\n */\n AddressBook.$factory = ['$q', '$timeout', '$log', 'sgSettings', 'Resource', 'Card', 'Acl', 'Preferences', function($q, $timeout, $log, Settings, Resource, Card, Acl, Preferences) {\n angular.extend(AddressBook, {\n $q: $q,\n $timeout: $timeout,\n $log: $log,\n $$resource: new Resource(Settings.activeUser('folderURL') + 'Contacts', Settings.activeUser()),\n $Card: Card,\n $$Acl: Acl,\n $Preferences: Preferences,\n $query: {search: 'name_or_address', value: '', sort: 'c_cn', asc: 1},\n activeUser: Settings.activeUser(),\n selectedFolder: null,\n $refreshTimeout: null\n });\n // Initialize sort parameters from user's settings\n Preferences.ready().then(function() {\n if (Preferences.settings.Contact.SortingState) {\n AddressBook.$query.sort = Preferences.settings.Contact.SortingState[0];\n AddressBook.$query.asc = parseInt(Preferences.settings.Contact.SortingState[1]);\n }\n });\n return AddressBook; // return constructor\n }];\n\n /**\n * @module SOGo.ContactsUI\n * @desc Factory registration of AddressBook in Angular module.\n */\n try {\n angular.module('SOGo.ContactsUI');\n }\n catch(e) {\n angular.module('SOGo.ContactsUI', ['SOGo.Common']);\n }\n angular.module('SOGo.ContactsUI')\n .factory('AddressBook', AddressBook.$factory);\n\n /**\n * @memberof AddressBook\n * @desc Search for cards among all addressbooks matching some criterias.\n * @param {string} search - the search string to match\n * @param {object} [options] - additional options to the query (excludeGroups and excludeLists)\n * @param {object[]} excludedCards - a list of Card objects that must be excluded from the results\n * @returns a collection of Cards instances\n */\n AddressBook.$filterAll = function(search, options, excludedCards) {\n var params = {search: search};\n\n if (!search) {\n // No query specified\n AddressBook.$cards = [];\n return AddressBook.$q.when(AddressBook.$cards);\n }\n if (angular.isUndefined(AddressBook.$cards)) {\n // First session query\n AddressBook.$cards = [];\n }\n else if (AddressBook.$query == search) {\n // Query hasn't changed\n return AddressBook.$q.when(AddressBook.$cards);\n }\n AddressBook.$query = search;\n\n angular.extend(params, options);\n\n return AddressBook.$$resource.fetch(null, 'allContactSearch', params).then(function(response) {\n var results, card, index,\n compareIds = function(data) {\n return this.id == data.id;\n };\n if (excludedCards) {\n // Remove excluded cards from results\n results = _.filter(response.contacts, function(data) {\n return _.isUndefined(_.find(excludedCards, compareIds, data));\n });\n }\n else {\n results = response.contacts;\n }\n // Remove cards that no longer match the search query\n for (index = AddressBook.$cards.length - 1; index >= 0; index--) {\n card = AddressBook.$cards[index];\n if (_.isUndefined(_.find(results, compareIds, card))) {\n AddressBook.$cards.splice(index, 1);\n }\n }\n // Add new cards matching the search query\n _.each(results, function(data, index) {\n if (_.isUndefined(_.find(AddressBook.$cards, compareIds, data))) {\n var card = new AddressBook.$Card(data, search);\n AddressBook.$cards.splice(index, 0, card);\n }\n });\n return AddressBook.$cards;\n });\n };\n\n /**\n * @memberof AddressBook\n * @desc Add a new addressbook to the static list of addressbooks\n * @param {AddressBook} addressbook - an Addressbook object instance\n */\n AddressBook.$add = function(addressbook) {\n // Insert new addressbook at proper index\n var list, sibling, i;\n\n list = addressbook.isSubscription? this.$subscriptions : this.$addressbooks;\n sibling = _.find(list, function(o) {\n return (addressbook.id == 'personal' ||\n (o.id != 'personal' &&\n o.name.localeCompare(addressbook.name) === 1));\n });\n i = sibling ? _.indexOf(_.pluck(list, 'id'), sibling.id) : 1;\n list.splice(i, 0, addressbook);\n };\n\n /**\n * @memberof AddressBook\n * @desc Set or get the list of addressbooks. Will instantiate a new AddressBook object for each item.\n * @param {array} [data] - the metadata of the addressbooks\n * @returns the list of addressbooks\n */\n AddressBook.$findAll = function(data) {\n var _this = this;\n if (data) {\n this.$addressbooks = [];\n this.$subscriptions = [];\n this.$remotes = [];\n // Instanciate AddressBook objects\n angular.forEach(data, function(o, i) {\n var addressbook = new AddressBook(o);\n if (addressbook.isRemote)\n _this.$remotes.push(addressbook);\n else if (addressbook.isSubscription)\n _this.$subscriptions.push(addressbook);\n else\n _this.$addressbooks.push(addressbook);\n });\n }\n return this.$addressbooks;\n };\n\n /**\n * @memberOf AddressBook\n * @desc Fetch list of cards and return an AddressBook instance.\n * @param {string} addressbookId - the addressbook identifier\n * @returns an AddressBook object instance\n */\n AddressBook.$find = function(addressbookId) {\n var futureAddressBookData = AddressBook.$$resource.fetch(addressbookId, 'view', AddressBook.$query);\n return new AddressBook(futureAddressBookData);\n };\n\n /**\n * @memberOf AddressBook\n * @desc Subscribe to another user's addressbook and add it to the list of addressbooks.\n * @param {string} uid - user id\n * @param {string} path - path of folder for specified user\n * @returns a promise of the HTTP query result\n */\n AddressBook.$subscribe = function(uid, path) {\n var _this = this;\n return AddressBook.$$resource.userResource(uid).fetch(path, 'subscribe').then(function(addressbookData) {\n var addressbook = new AddressBook(addressbookData);\n if (_.isUndefined(_.find(_this.$subscriptions, function(o) {\n return o.id == addressbookData.id;\n }))) {\n // Not already subscribed\n AddressBook.$add(addressbook);\n }\n return addressbook;\n });\n };\n\n /**\n * @function init\n * @memberof AddressBook.prototype\n * @desc Extend instance with new data and compute additional attributes.\n * @param {object} data - attributes of addressbook\n */\n AddressBook.prototype.init = function(data) {\n this.$cards = [];\n this.cards = [];\n angular.extend(this, data);\n // Add 'isOwned' and 'isSubscription' attributes based on active user (TODO: add it server-side?)\n this.isOwned = AddressBook.activeUser.isSuperUser || this.owner == AddressBook.activeUser.login;\n this.isSubscription = !this.isRemote && this.owner != AddressBook.activeUser.login;\n };\n\n /**\n * @function $id\n * @memberof AddressBook.prototype\n * @desc Resolve the addressbook id.\n * @returns a promise of the addressbook id\n */\n AddressBook.prototype.$id = function() {\n if (this.id) {\n // Object already unwrapped\n return AddressBook.$q.when(this.id);\n }\n else {\n // Wait until object is unwrapped\n return this.$futureAddressBookData.then(function(addressbook) {\n return addressbook.id;\n });\n }\n };\n\n /**\n * @function $selectedCount\n * @memberof AddressBook.prototype\n * @desc Return the number of cards selected by the user.\n * @returns the number of selected cards\n */\n AddressBook.prototype.$selectedCount = function() {\n var count;\n\n count = 0;\n if (this.cards) {\n count = (_.filter(this.cards, function(card) { return card.selected; })).length;\n }\n return count;\n };\n\n /**\n * @function $startRefreshTimeout\n * @memberof AddressBook.prototype\n * @desc Starts the refresh timeout for the current selected address book\n */\n AddressBook.prototype.$startRefreshTimeout = function() {\n var _this = this;\n\n if (AddressBook.$refreshTimeout)\n AddressBook.$timeout.cancel(AddressBook.$refreshTimeout);\n\n AddressBook.$Preferences.ready().then(function() {\n // Restart the refresh timer, if needed\n var refreshViewCheck = AddressBook.$Preferences.defaults.SOGoRefreshViewCheck;\n if (refreshViewCheck && refreshViewCheck != 'manually') {\n var f = angular.bind(_this, AddressBook.prototype.$reload);\n AddressBook.$refreshTimeout = AddressBook.$timeout(f, refreshViewCheck.timeInterval()*1000);\n }\n });\n };\n\n /**\n * @function $reload\n * @memberof AddressBook.prototype\n * @desc Reload list of cards\n * @returns a promise of the Cards instances\n */\n AddressBook.prototype.$reload = function() {\n var _this = this;\n\n this.$startRefreshTimeout();\n\n return AddressBook.$$resource.fetch(this.id, 'view')\n .then(function(response) {\n var index, card,\n results = response.cards,\n cards = _this.cards,\n compareIds = function(data) {\n return this.id == data.id;\n };\n\n // Remove cards that no longer exist\n for (index = cards.length - 1; index >= 0; index--) {\n card = cards[index];\n if (_.isUndefined(_.find(results, compareIds, card))) {\n cards.splice(index, 1);\n }\n }\n\n // Add new cards\n _.each(results, function(data, index) {\n if (_.isUndefined(_.find(cards, compareIds, data))) {\n var card = new AddressBook.$Card(data);\n cards.splice(index, 0, card);\n }\n });\n\n // Modify existing cards\n // TODO\n\n return cards;\n });\n };\n\n /**\n * @function $filter\n * @memberof AddressBook.prototype\n * @desc Search for cards matching some criterias\n * @param {string} search - the search string to match\n * @param {object} [options] - additional options to the query\n * @returns a collection of Cards instances\n */\n AddressBook.prototype.$filter = function(search, options, excludedCards) {\n var _this = this;\n\n return AddressBook.$Preferences.ready().then(function() {\n if (options) {\n angular.extend(AddressBook.$query, options);\n\n if (options.dry) {\n if (!search) {\n // No query specified\n _this.$cards = [];\n return AddressBook.$q.when(_this.$cards);\n }\n else if (AddressBook.$query.value == search) {\n // Query hasn't changed\n return AddressBook.$q.when(_this.$cards);\n }\n }\n }\n\n AddressBook.$query.value = search;\n\n return _this.$id().then(function(addressbookId) {\n return AddressBook.$$resource.fetch(addressbookId, 'view', AddressBook.$query);\n }).then(function(response) {\n var results, cards, card, index,\n compareIds = function(data) {\n return _this.id == data.id;\n };\n if (options && options.dry) {\n // Don't keep a copy of the resulting cards.\n // This is usefull when doing autocompletion.\n cards = _this.$cards;\n }\n else {\n cards = _this.cards;\n }\n if (excludedCards) {\n // Remove excluded cards from results\n results = _.filter(response.cards, function(card) {\n return _.isUndefined(_.find(excludedCards, compareIds, card));\n });\n }\n else {\n results = response.cards;\n }\n // Remove cards that no longer match the search query\n for (index = cards.length - 1; index >= 0; index--) {\n card = cards[index];\n if (_.isUndefined(_.find(results, compareIds, card))) {\n cards.splice(index, 1);\n }\n }\n // Add new cards matching the search query\n _.each(results, function(data, index) {\n if (_.isUndefined(_.find(cards, compareIds, data))) {\n var card = new AddressBook.$Card(data, search);\n cards.splice(index, 0, card);\n }\n });\n // Respect the order of the results\n _.each(results, function(data, index) {\n var oldIndex, removedCards;\n if (cards[index].id != data.id) {\n oldIndex = _.findIndex(cards, compareIds, data);\n removedCards = cards.splice(oldIndex, 1);\n cards.splice(index, 0, removedCards[0]);\n }\n });\n return cards;\n });\n });\n };\n\n /**\n * @function $rename\n * @memberof AddressBook.prototype\n * @desc Rename the addressbook and keep the list sorted\n * @param {string} name - the new name\n * @returns a promise of the HTTP operation\n */\n AddressBook.prototype.$rename = function(name) {\n var i = _.indexOf(_.pluck(AddressBook.$addressbooks, 'id'), this.id);\n this.name = name;\n AddressBook.$addressbooks.splice(i, 1);\n AddressBook.$add(this);\n return this.$save();\n };\n\n /**\n * @function $delete\n * @memberof AddressBook.prototype\n * @desc Delete the addressbook from the server and the static list of addressbooks.\n * @returns a promise of the HTTP operation\n */\n AddressBook.prototype.$delete = function() {\n var _this = this,\n d = AddressBook.$q.defer(),\n list,\n promise;\n\n if (this.isSubscription) {\n promise = AddressBook.$$resource.fetch(this.id, 'unsubscribe');\n list = AddressBook.$subscriptions;\n }\n else {\n promise = AddressBook.$$resource.remove(this.id);\n list = AddressBook.$addressbooks;\n }\n\n promise.then(function() {\n var i = _.indexOf(_.pluck(list, 'id'), _this.id);\n list.splice(i, 1);\n d.resolve();\n }, function(data, status) {\n d.reject(data);\n });\n return d.promise;\n };\n\n /**\n * @function $deleteCards\n * @memberof AddressBook.prototype\n * @desc Delete multiple cards from addressbook.\n * @return a promise of the HTTP operation\n */\n AddressBook.prototype.$deleteCards = function(cards) {\n\n var uids = _.map(cards, function(card) { return card.id; });\n var _this = this;\n \n return AddressBook.$$resource.post(this.id, 'batchDelete', {uids: uids}).then(function() {\n _this.cards = _.difference(_this.cards, cards);\n });\n };\n\n /**\n * @function $copyCards\n * @memberof AddressBook.prototype\n * @desc Copy multiple cards from addressbook to an other one.\n * @return a promise of the HTTP operation\n */\n AddressBook.prototype.$copyCards = function(cards, folder) {\n var uids = _.map(cards, function(card) { return card.id; });\n return AddressBook.$$resource.post(this.id, 'copy', {uids: uids, folder: folder});\n };\n\n /**\n * @function $save\n * @memberof AddressBook.prototype\n * @desc Save the addressbook to the server. This currently can only affect the name of the addressbook.\n * @returns a promise of the HTTP operation\n */\n AddressBook.prototype.$save = function() {\n return AddressBook.$$resource.save(this.id, this.$omit()).then(function(data) {\n return data;\n });\n };\n\n /**\n * @function $getCard\n * @memberof AddressBook.prototype\n * @desc Fetch the card attributes from the server.\n * @returns a promise of the HTTP operation\n */\n AddressBook.prototype.$getCard = function(cardId) {\n return this.$id().then(function(addressbookId) {\n return AddressBook.$Card.$find(addressbookId, cardId);\n });\n };\n\n /**\n * @function $unwrap\n * @memberof AddressBook.prototype\n * @desc Unwrap a promise and instanciate new Card objects using received data.\n * @param {promise} futureAddressBookData - a promise of the AddressBook's data\n */\n AddressBook.prototype.$unwrap = function(futureAddressBookData) {\n var _this = this;\n\n // Expose and sesolve the promise\n this.$futureAddressBookData = futureAddressBookData.then(function(data) {\n return AddressBook.$timeout(function() {\n // Extend AddressBook instance from data of addressbooks list.\n // Will inherit attributes such as isEditable and isRemote.\n angular.forEach(AddressBook.$findAll(), function(o, i) {\n if (o.id == data.id) {\n angular.extend(_this, o);\n }\n });\n // Extend AddressBook instance with received data\n _this.init(data);\n // Instanciate Card objects\n angular.forEach(_this.cards, function(o, i) {\n _this.cards[i] = new AddressBook.$Card(o);\n });\n // Instanciate Acl object\n _this.$acl = new AddressBook.$$Acl('Contacts/' + _this.id);\n\n _this.$startRefreshTimeout();\n\n return _this;\n });\n }, function(data) {\n _this.isError = true;\n if (angular.isObject(data)) {\n AddressBook.$timeout(function() {\n angular.extend(_this, data);\n });\n }\n });\n };\n\n /**\n * @function $omit\n * @memberof AddressBook.prototype\n * @desc Return a sanitized object used to send to the server.\n * @return an object literal copy of the Addressbook instance\n */\n AddressBook.prototype.$omit = function() {\n var addressbook = {};\n angular.forEach(this, function(value, key) {\n if (key != 'constructor' &&\n key != 'cards' &&\n key[0] != '$') {\n addressbook[key] = value;\n }\n });\n return addressbook;\n };\n})();\n","/* -*- Mode: javascript; indent-tabs-mode: nil; c-basic-offset: 2 -*- */\n\n(function() {\n 'use strict';\n\n /**\n * @name Card\n * @constructor\n * @param {object} futureCardData\n * @param {string} [partial]\n */\n function Card(futureCardData, partial) {\n\n // Data is immediately available\n if (typeof futureCardData.then !== 'function') {\n this.init(futureCardData, partial);\n if (this.pid && !this.id) {\n // Prepare for the creation of a new card;\n // Get UID from the server.\n var newCardData = Card.$$resource.newguid(this.pid);\n this.$unwrap(newCardData);\n this.isNew = true;\n }\n }\n else {\n // The promise will be unwrapped first\n this.$unwrap(futureCardData);\n }\n }\n\n Card.$TEL_TYPES = ['work', 'home', 'cell', 'fax', 'pager'];\n Card.$EMAIL_TYPES = ['work', 'home', 'pref'];\n Card.$URL_TYPES = ['work', 'home', 'pref'];\n Card.$ADDRESS_TYPES = ['work', 'home'];\n\n /**\n * @memberof Card\n * @desc The factory we'll use to register with Angular.\n * @returns the Card constructor\n */\n Card.$factory = ['$timeout', 'sgSettings', 'Resource', 'Preferences', 'Gravatar', function($timeout, Settings, Resource, Preferences, Gravatar) {\n angular.extend(Card, {\n $$resource: new Resource(Settings.activeUser('folderURL') + 'Contacts', Settings.activeUser()),\n $timeout: $timeout,\n $gravatar: Gravatar\n });\n // Initialize categories from user's defaults\n Preferences.ready().then(function() {\n if (Preferences.defaults.SOGoContactsCategories) {\n Card.$categories = Preferences.defaults.SOGoContactsCategories;\n }\n });\n\n return Card; // return constructor\n }];\n\n /**\n * @module SOGo.ContactsUI\n * @desc Factory registration of Card in Angular module.\n */\n try {\n angular.module('SOGo.ContactsUI');\n }\n catch(e) {\n angular.module('SOGo.ContactsUI', ['SOGo.Common']);\n }\n angular.module('SOGo.ContactsUI')\n .factory('Card', Card.$factory);\n\n /**\n * @memberof Card\n * @desc Fetch a card from a specific addressbook.\n * @param {string} addressbookId - the addressbook ID\n * @param {string} cardId - the card ID\n * @see {@link AddressBook.$getCard}\n */\n Card.$find = function(addressbookId, cardId) {\n var futureCardData = this.$$resource.fetch([addressbookId, cardId].join('/'), 'view');\n\n if (cardId) return new Card(futureCardData); // a single card\n\n return Card.$unwrapCollection(futureCardData); // a collection of cards\n };\n\n /**\n * @function filterCategories\n * @memberof Card.prototype\n * @desc Search for categories matching some criterias\n * @param {string} search - the search string to match\n * @returns a collection of strings\n */\n Card.filterCategories = function(query) {\n var re = new RegExp(query, 'i');\n return _.filter(Card.$categories, function(category) {\n return category.search(re) != -1;\n });\n };\n\n /**\n * @memberof Card\n * @desc Unwrap to a collection of Card instances.\n * @param {object} futureCardData\n */\n Card.$unwrapCollection = function(futureCardData) {\n var collection = {};\n\n collection.$futureCardData = futureCardData;\n\n futureCardData.then(function(cards) {\n Card.$timeout(function() {\n angular.forEach(cards, function(data, index) {\n collection[data.id] = new Card(data);\n });\n });\n });\n\n return collection;\n };\n\n /**\n * @function init\n * @memberof Card.prototype\n * @desc Extend instance with required attributes and new data.\n * @param {object} data - attributes of card\n */\n Card.prototype.init = function(data, partial) {\n this.refs = [];\n angular.extend(this, data);\n if (!this.$$fullname)\n this.$$fullname = this.$fullname();\n if (!this.$$email)\n this.$$email = this.$preferredEmail(partial);\n if (!this.$$image)\n this.$$image = this.image || Card.$gravatar(this.$preferredEmail(partial), 32);\n this.selected = false;\n\n // An empty attribute to trick md-autocomplete when adding attendees from the appointment editor\n this.empty = ' ';\n };\n\n /**\n * @function $id\n * @memberof Card.prototype\n * @desc Return the card ID.\n * @returns the card ID\n */\n Card.prototype.$id = function() {\n return this.$futureCardData.then(function(data) {\n return data.id;\n });\n };\n\n /**\n * @function $save\n * @memberof Card.prototype\n * @desc Save the card to the server.\n */\n Card.prototype.$save = function() {\n var _this = this,\n action = 'saveAsContact';\n\n if (this.c_component == 'vlist') action = 'saveAsList';\n\n return Card.$$resource.save([this.pid, this.id || '_new_'].join('/'),\n this.$omit(),\n { action: action })\n .then(function(data) {\n // Make a copy of the data for an eventual reset\n _this.$shadowData = _this.$omit(true);\n return data;\n });\n };\n\n Card.prototype.$delete = function(attribute, index) {\n if (attribute) {\n if (index > -1 && this[attribute].length > index) {\n this[attribute].splice(index, 1);\n }\n }\n else {\n // No arguments -- delete card\n return Card.$$resource.remove([this.pid, this.id].join('/'));\n }\n };\n\n Card.prototype.$fullname = function() {\n var fn = this.c_cn || '', names;\n if (fn.length === 0) {\n names = [];\n if (this.c_givenname && this.c_givenname.length > 0)\n names.push(this.c_givenname);\n if (this.nickname && this.nickname.length > 0)\n names.push('' + this.nickname + '');\n if (this.c_sn && this.c_sn.length > 0)\n names.push(this.c_sn);\n if (names.length > 0)\n fn = names.join(' ');\n else if (this.c_org && this.c_org.length > 0) {\n fn = this.c_org;\n }\n else if (this.emails && this.emails.length > 0) {\n fn = _.find(this.emails, function(i) { return i.value !== ''; }).value;\n }\n else if (this.c_cn && this.c_cn.length > 0) {\n fn = this.c_cn;\n }\n }\n\n return fn;\n };\n\n Card.prototype.$description = function() {\n var description = [];\n if (this.title) description.push(this.title);\n if (this.role) description.push(this.role);\n if (this.orgUnits && this.orgUnits.length > 0)\n _.forEach(this.orgUnits, function(unit) {\n if (unit.value !== '')\n description.push(unit.value);\n });\n if (this.org) description.push(this.org);\n if (this.description) description.push(this.description);\n\n return description.join(', ');\n };\n\n /**\n * @function $preferredEmail\n * @memberof Card.prototype\n * @desc Get the preferred email address.\n * @param {string} [partial] - a partial string that the email must match\n * @returns the first email address of type \"pref\" or the first address if none found\n */\n Card.prototype.$preferredEmail = function(partial) {\n var email, re;\n if (partial) {\n re = new RegExp(partial, 'i');\n email = _.find(this.emails, function(o) {\n return re.test(o.value);\n });\n }\n if (email) {\n email = email.value;\n }\n else {\n email = _.find(this.emails, function(o) {\n return o.type == 'pref';\n });\n if (email) {\n email = email.value;\n }\n else if (this.emails && this.emails.length) {\n email = this.emails[0].value;\n }\n else {\n email = '';\n }\n }\n\n return email;\n };\n\n /**\n * @function $shortFormat\n * @memberof Card.prototype\n * @param {string} [partial] - a partial string that the email must match\n * @returns the fullname along with a matching email address in parentheses\n */\n Card.prototype.$shortFormat = function(partial) {\n var fullname = this.$fullname(),\n email = this.$preferredEmail(partial);\n if (email && email != fullname)\n fullname += ' <' + email + '>';\n return fullname;\n };\n\n Card.prototype.$birthday = function() {\n return new Date(this.birthday * 1000);\n };\n\n Card.prototype.$isCard = function() {\n return this.c_component == 'vcard';\n };\n\n Card.prototype.$isList = function() {\n return this.c_component == 'vlist';\n };\n\n Card.prototype.$addOrgUnit = function(orgUnit) {\n if (angular.isUndefined(this.orgUnits)) {\n this.orgUnits = [{value: orgUnit}];\n }\n else {\n for (var i = 0; i < this.orgUnits.length; i++) {\n if (this.orgUnits[i].value == orgUnit) {\n break;\n }\n }\n if (i == this.orgUnits.length)\n this.orgUnits.push({value: orgUnit});\n }\n return this.orgUnits.length - 1;\n };\n\n Card.prototype.$addCategory = function(category) {\n if (angular.isUndefined(this.categories)) {\n this.categories = [{value: category}];\n }\n else {\n for (var i = 0; i < this.categories.length; i++) {\n if (this.categories[i].value == category) {\n break;\n }\n }\n if (i == this.categories.length)\n this.categories.push({value: category});\n }\n };\n\n Card.prototype.$addEmail = function(type) {\n if (angular.isUndefined(this.emails)) {\n this.emails = [{type: type, value: ''}];\n }\n else if (_.isUndefined(_.find(this.emails, function(i) { return i.value === ''; }))) {\n this.emails.push({type: type, value: ''});\n }\n return this.emails.length - 1;\n };\n\n Card.prototype.$addPhone = function(type) {\n if (angular.isUndefined(this.phones)) {\n this.phones = [{type: type, value: ''}];\n }\n else if (_.isUndefined(_.find(this.phones, function(i) { return i.value === ''; }))) {\n this.phones.push({type: type, value: ''});\n }\n return this.phones.length - 1;\n };\n\n Card.prototype.$addUrl = function(type, url) {\n if (angular.isUndefined(this.urls)) {\n this.urls = [{type: type, value: url}];\n }\n else if (_.isUndefined(_.find(this.urls, function(i) { return i.value == url; }))) {\n this.urls.push({type: type, value: url});\n }\n return this.urls.length - 1;\n };\n\n Card.prototype.$addAddress = function(type, postoffice, street, street2, locality, region, country, postalcode) {\n if (angular.isUndefined(this.addresses)) {\n this.addresses = [{type: type, postoffice: postoffice, street: street, street2: street2, locality: locality, region: region, country: country, postalcode: postalcode}];\n }\n else if (!_.find(this.addresses, function(i) {\n return i.street == street &&\n i.street2 == street2 &&\n i.locality == locality &&\n i.country == country &&\n i.postalcode == postalcode;\n })) {\n this.addresses.push({type: type, postoffice: postoffice, street: street, street2: street2, locality: locality, region: region, country: country, postalcode: postalcode});\n }\n return this.addresses.length - 1;\n };\n\n Card.prototype.$addMember = function(email) {\n var card = new Card({email: email, emails: [{value: email}]}),\n i;\n if (angular.isUndefined(this.refs)) {\n this.refs = [card];\n }\n else if (email.length === 0) {\n this.refs.push(card);\n }\n else {\n for (i = 0; i < this.refs.length; i++) {\n if (this.refs[i].email == email) {\n break;\n }\n }\n if (i == this.refs.length)\n this.refs.push(card);\n }\n return this.refs.length - 1;\n };\n\n /**\n * @function $reset\n * @memberof Card.prototype\n * @desc Reset the original state the card's data.\n */\n Card.prototype.$reset = function() {\n var _this = this;\n angular.forEach(this, function(value, key) {\n if (key != 'constructor' && key[0] != '$') {\n delete _this[key];\n }\n });\n angular.extend(this, this.$shadowData);\n // Reinstanciate Card objects for list members\n angular.forEach(this.refs, function(o, i) {\n if (o.email) o.emails = [{value: o.email}];\n _this.refs[i] = new Card(o);\n });\n this.$shadowData = this.$omit(true);\n };\n\n /**\n * @function $updateMember\n * @memberof Card.prototype\n * @desc Update an existing list member from a Card instance.\n * A list member has the following attribtues:\n * - email\n * - reference\n * - fn\n * @param {number} index\n * @param {string} email\n * @param {Card} card\n */\n // Card.prototype.$updateMember = function(index, email, card) {\n // var ref = {\n // email: email,\n // emails: [{value: email}],\n // reference: card.c_name,\n // c_cn: card.$fullname()\n // };\n // this.refs[index] = new Card(ref);\n // };\n\n /**\n * @function $unwrap\n * @memberof Card.prototype\n * @desc Unwrap a promise and make a copy of the resolved data.\n * @param {object} futureCardData - a promise of the Card's data\n */\n Card.prototype.$unwrap = function(futureCardData) {\n var _this = this;\n\n // Expose the promise\n this.$futureCardData = futureCardData;\n\n // Resolve the promise\n this.$futureCardData.then(function(data) {\n // Calling $timeout will force Angular to refresh the view\n Card.$timeout(function() {\n _this.init(data);\n // Instanciate Card objects for list members\n angular.forEach(_this.refs, function(o, i) {\n if (o.email) o.emails = [{value: o.email}];\n o.id = o.reference;\n _this.refs[i] = new Card(o);\n });\n if (_this.birthday) {\n _this.birthday = new Date(_this.birthday * 1000);\n } else {\n _this.birthday = new Date();\n }\n // Make a copy of the data for an eventual reset\n _this.$shadowData = _this.$omit(true);\n });\n });\n };\n\n /**\n * @function $omit\n * @memberof Card.prototype\n * @desc Return a sanitized object used to send to the server.\n * @param {boolean} [deep] - make a deep copy if true\n * @return an object literal copy of the Card instance\n */\n Card.prototype.$omit = function(deep) {\n var card = {};\n angular.forEach(this, function(value, key) {\n if (key == 'refs') {\n card.refs = _.map(value, function(o) {\n return o.$omit(deep);\n });\n }\n else if (key != 'constructor' && key[0] != '$') {\n if (deep)\n card[key] = angular.copy(value);\n else\n card[key] = value;\n }\n });\n return card;\n };\n\n Card.prototype.toString = function() {\n var desc = this.id + ' ' + this.$$fullname;\n\n if (this.$$email)\n desc += ' <' + this.$$email + '>';\n\n return '[' + desc + ']';\n };\n})();\n"]} \ No newline at end of file +{"version":3,"file":"Contacts.services.js","sources":["Contacts/AddressBook.service.js","Contacts/Card.service.js"],"names":["AddressBook","futureAddressBookData","then","this","init","name","id","newAddressBookData","$$resource","create","$unwrap","$acl","$$Acl","$factory","$q","$timeout","$log","Settings","Resource","Card","Acl","Preferences","angular","extend","activeUser","$Card","$Preferences","$query","search","value","sort","asc","selectedFolder","$refreshTimeout","ready","settings","Contact","SortingState","parseInt","module","e","factory","$filterAll","options","excludedCards","params","$cards","when","isUndefined","fetch","response","results","card","index","compareIds","data","_","filter","contacts","find","length","splice","each","$add","addressbook","list","sibling","i","isSubscription","$subscriptions","$addressbooks","o","localeCompare","indexOf","pluck","$findAll","_this","$remotes","forEach","isRemote","push","union","$find","addressbookId","$subscribe","uid","path","userResource","addressbookData","prototype","cards","isOwned","isSuperUser","owner","login","$id","$futureAddressBookData","$selectedCount","count","selected","$startRefreshTimeout","cancel","refreshViewCheck","defaults","SOGoRefreshViewCheck","f","bind","$reload","timeInterval","$filter","dry","oldIndex","removedCards","findIndex","$rename","$save","$delete","promise","d","defer","remove","resolve","status","reject","$deleteCards","uids","map","post","difference","$copyCards","folder","save","$omit","$getCard","cardId","isError","isObject","key","futureCardData","partial","pid","newCardData","newguid","isNew","$TEL_TYPES","$EMAIL_TYPES","$URL_TYPES","$ADDRESS_TYPES","Gravatar","$gravatar","SOGoContactsCategories","$categories","join","$unwrapCollection","filterCategories","query","re","RegExp","category","collection","$futureCardData","refs","$$fullname","$fullname","$$email","$preferredEmail","$$image","image","empty","action","c_component","$shadowData","attribute","names","fn","c_cn","c_givenname","nickname","c_sn","c_org","emails","$description","description","title","role","orgUnits","unit","org","email","test","type","$shortFormat","fullname","$birthday","birthday","getFullYear","getMonth","getDate","$isCard","$isList","$addOrgUnit","orgUnit","$addCategory","categories","$addEmail","$addPhone","phones","$addUrl","url","urls","$addAddress","postoffice","street","street2","locality","region","country","postalcode","addresses","$addMember","$reset","reference","Date","deep","copy","getTime","toString","desc"],"mappings":"CAEA,WACE,YAOA,SAASA,aAAYC,uBAEnB,GAA0C,kBAA/BA,uBAAsBC,KAE/B,GADAC,KAAKC,KAAKH,uBACNE,KAAKE,OAASF,KAAKG,GAAI,CAEzB,GAAIC,oBAAqBP,YAAYQ,WAAWC,OAAO,eAAgBN,KAAKE,KAC5EF,MAAKO,QAAQH,wBAENJ,MAAKG,KACZH,KAAKQ,KAAO,GAAIX,aAAYY,MAAM,YAAcT,KAAKG,SAKvDH,MAAKO,QAAQT,uBASjBD,YAAYa,UAAY,KAAM,WAAY,OAAQ,aAAc,WAAY,OAAQ,MAAO,cAAe,SAASC,GAAIC,SAAUC,KAAMC,SAAUC,SAAUC,KAAMC,IAAKC,aAqBpK,MApBAC,SAAQC,OAAOvB,aACbc,GAAIA,GACJC,SAAUA,SACVC,KAAMA,KACNR,WAAY,GAAIU,UAASD,SAASO,WAAW,aAAe,WAAYP,SAASO,cACjFC,MAAON,KACPP,MAAOQ,IACPM,aAAcL,YACdM,QAASC,OAAQ,kBAAmBC,MAAO,GAAIC,KAAM,OAAQC,IAAK,GAClEP,WAAYP,SAASO,aACrBQ,eAAgB,KAChBC,gBAAiB,OAGnBZ,YAAYa,QAAQhC,KAAK,WACnBmB,YAAYc,SAASC,QAAQC,eAC/BrC,YAAY2B,OAAOG,KAAOT,YAAYc,SAASC,QAAQC,aAAa,GACpErC,YAAY2B,OAAOI,IAAMO,SAASjB,YAAYc,SAASC,QAAQC,aAAa,OAGzErC,aAOT,KACEsB,QAAQiB,OAAO,mBAEjB,MAAMC,GACJlB,QAAQiB,OAAO,mBAAoB,gBAErCjB,QAAQiB,OAAO,mBACZE,QAAQ,cAAezC,YAAYa,UAUtCb,YAAY0C,WAAa,SAASd,OAAQe,QAASC,eACjD,GAAIC,SAAUjB,OAAQA,OAEtB,KAAKA,OAGH,MADA5B,aAAY8C,UACL9C,YAAYc,GAAGiC,KAAK/C,YAAY8C,OAEzC,IAAIxB,QAAQ0B,YAAYhD,YAAY8C,QAElC9C,YAAY8C,cAET,IAAI9C,YAAY2B,QAAUC,OAE7B,MAAO5B,aAAYc,GAAGiC,KAAK/C,YAAY8C,OAMzC,OAJA9C,aAAY2B,OAASC,OAErBN,QAAQC,OAAOsB,OAAQF,SAEhB3C,YAAYQ,WAAWyC,MAAM,KAAM,mBAAoBJ,QAAQ3C,KAAK,SAASgD,UAClF,GAAIC,SAASC,KAAMC,MACfC,WAAa,SAASC,MACpB,MAAOpD,MAAKG,IAAMiD,KAAKjD,GAY7B,KARE6C,QAFEP,cAEQY,EAAEC,OAAOP,SAASQ,SAAU,SAASH,MAC7C,MAAOC,GAAER,YAAYQ,EAAEG,KAAKf,cAAeU,WAAYC,SAI/CL,SAASQ,SAGhBL,MAAQrD,YAAY8C,OAAOc,OAAS,EAAGP,OAAS,EAAGA,QACtDD,KAAOpD,YAAY8C,OAAOO,OACtBG,EAAER,YAAYQ,EAAEG,KAAKR,QAASG,WAAYF,QAC5CpD,YAAY8C,OAAOe,OAAOR,MAAO,EAUrC,OANAG,GAAEM,KAAKX,QAAS,SAASI,KAAMF,OAC7B,GAAIG,EAAER,YAAYQ,EAAEG,KAAK3D,YAAY8C,OAAQQ,WAAYC,OAAQ,CAC/D,GAAIH,MAAO,GAAIpD,aAAYyB,MAAM8B,KAAM3B,OACvC5B,aAAY8C,OAAOe,OAAOR,MAAO,EAAGD,SAGjCpD,YAAY8C,UASvB9C,YAAY+D,KAAO,SAASC,aAE1B,GAAIC,MAAMC,QAASC,CAEnBF,MAAOD,YAAYI,eAAgBjE,KAAKkE,eAAiBlE,KAAKmE,cAC9DJ,QAAUV,EAAEG,KAAKM,KAAM,SAASM,GAC9B,MAA0B,YAAlBP,YAAY1D,IACH,YAARiE,EAAEjE,IACyC,IAA3CiE,EAAElE,KAAKmE,cAAcR,YAAY3D,QAE5C8D,EAAID,QAAUV,EAAEiB,QAAQjB,EAAEkB,MAAMT,KAAM,MAAOC,QAAQ5D,IAAM,EAC3D2D,KAAKJ,OAAOM,EAAG,EAAGH,cASpBhE,YAAY2E,SAAW,SAASpB,MAC9B,GAAIqB,OAAQzE,IAgBZ,OAfIoD,QACFpD,KAAKmE,iBACLnE,KAAKkE,kBACLlE,KAAK0E,YAELvD,QAAQwD,QAAQvB,KAAM,SAASgB,EAAGJ,GAChC,GAAIH,aAAc,GAAIhE,aAAYuE,EAC9BP,aAAYe,SACdH,MAAMC,SAASG,KAAKhB,aACbA,YAAYI,eACnBQ,MAAMP,eAAeW,KAAKhB,aAE1BY,MAAMN,cAAcU,KAAKhB,gBAGxBR,EAAEyB,MAAM9E,KAAKmE,cAAenE,KAAKkE,eAAgBlE,KAAK0E,WAS/D7E,YAAYkF,MAAQ,SAASC,eAC3B,GAAIlF,uBAAwBD,YAAYQ,WAAWyC,MAAMkC,cAAe,OAAQnF,YAAY2B,OAC5F,OAAO,IAAI3B,aAAYC,wBAUzBD,YAAYoF,WAAa,SAASC,IAAKC,MACrC,GAAIV,OAAQzE,IACZ,OAAOH,aAAYQ,WAAW+E,aAAaF,KAAKpC,MAAMqC,KAAM,aAAapF,KAAK,SAASsF,iBACrF,GAAIxB,aAAc,GAAIhE,aAAYwF,gBAOlC,OANIhC,GAAER,YAAYQ,EAAEG,KAAKiB,MAAMP,eAAgB,SAASE,GACtD,MAAOA,GAAEjE,IAAMkF,gBAAgBlF,OAG/BN,YAAY+D,KAAKC,aAEZA,eAUXhE,YAAYyF,UAAUrF,KAAO,SAASmD,MACpCpD,KAAK2C,UACL3C,KAAKuF,SACLpE,QAAQC,OAAOpB,KAAMoD,MAErBpD,KAAKwF,QAAU3F,YAAYwB,WAAWoE,aAAezF,KAAK0F,OAAS7F,YAAYwB,WAAWsE,MAC1F3F,KAAKiE,gBAAkBjE,KAAK4E,UAAY5E,KAAK0F,OAAS7F,YAAYwB,WAAWsE,OAS/E9F,YAAYyF,UAAUM,IAAM,WAC1B,MAAI5F,MAAKG,GAEAN,YAAYc,GAAGiC,KAAK5C,KAAKG,IAIzBH,KAAK6F,uBAAuB9F,KAAK,SAAS8D,aAC/C,MAAOA,aAAY1D,MAWzBN,YAAYyF,UAAUQ,eAAiB,WACrC,GAAIC,MAMJ,OAJAA,OAAQ,EACJ/F,KAAKuF,QACPQ,MAAS1C,EAAEC,OAAOtD,KAAKuF,MAAO,SAAStC,MAAQ,MAAOA,MAAK+C,WAAcvC,QAEpEsC,OAQTlG,YAAYyF,UAAUW,qBAAuB,WAC3C,GAAIxB,OAAQzE,IAERH,aAAYiC,iBACdjC,YAAYe,SAASsF,OAAOrG,YAAYiC,iBAE1CjC,YAAY0B,aAAaQ,QAAQhC,KAAK,WAEpC,GAAIoG,kBAAmBtG,YAAY0B,aAAa6E,SAASC,oBACzD,IAAIF,kBAAwC,YAApBA,iBAAgC,CACtD,GAAIG,GAAInF,QAAQoF,KAAK9B,MAAO5E,YAAYyF,UAAUkB,QAClD3G,aAAYiC,gBAAkBjC,YAAYe,SAAS0F,EAAmC,IAAhCH,iBAAiBM,oBAW7E5G,YAAYyF,UAAUkB,QAAU,WAC9B,GAAI/B,OAAQzE,IAIZ,OAFAA,MAAKiG,uBAEEpG,YAAYQ,WAAWyC,MAAM9C,KAAKG,GAAI,QAC1CJ,KAAK,SAASgD,UACb,GAAIG,OAAOD,KACPD,QAAUD,SAASwC,MACnBA,MAAQd,MAAMc,MACdpC,WAAa,SAASC,MACpB,MAAOpD,MAAKG,IAAMiD,KAAKjD,GAI7B,KAAK+C,MAAQqC,MAAM9B,OAAS,EAAGP,OAAS,EAAGA,QACzCD,KAAOsC,MAAMrC,OACTG,EAAER,YAAYQ,EAAEG,KAAKR,QAASG,WAAYF,QAC5CsC,MAAM7B,OAAOR,MAAO,EAYxB,OAPAG,GAAEM,KAAKX,QAAS,SAASI,KAAMF,OAC7B,GAAIG,EAAER,YAAYQ,EAAEG,KAAK+B,MAAOpC,WAAYC,OAAQ,CAClD,GAAIH,MAAO,GAAIpD,aAAYyB,MAAM8B,KACjCmC,OAAM7B,OAAOR,MAAO,EAAGD,SAIpBsC,SAYb1F,YAAYyF,UAAUoB,QAAU,SAASjF,OAAQe,QAASC,eACxD,GAAIgC,OAAQzE,IAEZ,OAAOH,aAAY0B,aAAaQ,QAAQhC,KAAK,WAC3C,GAAIyC,UACFrB,QAAQC,OAAOvB,YAAY2B,OAAQgB,SAE/BA,QAAQmE,KAAK,CACf,IAAKlF,OAGH,MADAgD,OAAM9B,UACC9C,YAAYc,GAAGiC,KAAK6B,MAAM9B,OAE9B,IAAI9C,YAAY2B,OAAOE,OAASD,OAEnC,MAAO5B,aAAYc,GAAGiC,KAAK6B,MAAM9B,QAOvC,MAFA9C,aAAY2B,OAAOE,MAAQD,OAEpBgD,MAAMmB,MAAM7F,KAAK,SAASiF,eAC/B,MAAOnF,aAAYQ,WAAWyC,MAAMkC,cAAe,OAAQnF,YAAY2B,UACtEzB,KAAK,SAASgD,UACf,GAAIC,SAASuC,MAAOtC,KAAMC,MACtBC,WAAa,SAASC,MACpB,MAAOqB,OAAMtE,IAAMiD,KAAKjD,GAoB9B,KAfEoF,MAHE/C,SAAWA,QAAQmE,IAGblC,MAAM9B,OAGN8B,MAAMc,MAIdvC,QAFEP,cAEQY,EAAEC,OAAOP,SAASwC,MAAO,SAAStC,MAC1C,MAAOI,GAAER,YAAYQ,EAAEG,KAAKf,cAAeU,WAAYF,SAI/CF,SAASwC,MAGhBrC,MAAQqC,MAAM9B,OAAS,EAAGP,OAAS,EAAGA,QACzCD,KAAOsC,MAAMrC,OACTG,EAAER,YAAYQ,EAAEG,KAAKR,QAASG,WAAYF,QAC5CsC,MAAM7B,OAAOR,MAAO,EAmBxB,OAfAG,GAAEM,KAAKX,QAAS,SAASI,KAAMF,OAC7B,GAAIG,EAAER,YAAYQ,EAAEG,KAAK+B,MAAOpC,WAAYC,OAAQ,CAClD,GAAIH,MAAO,GAAIpD,aAAYyB,MAAM8B,KAAM3B,OACvC8D,OAAM7B,OAAOR,MAAO,EAAGD,SAI3BI,EAAEM,KAAKX,QAAS,SAASI,KAAMF,OAC7B,GAAI0D,UAAUC,YACVtB,OAAMrC,OAAO/C,IAAMiD,KAAKjD,KAC1ByG,SAAWvD,EAAEyD,UAAUvB,MAAOpC,WAAYC,MAC1CyD,aAAetB,MAAM7B,OAAOkD,SAAU,GACtCrB,MAAM7B,OAAOR,MAAO,EAAG2D,aAAa,OAGjCtB,WAYb1F,YAAYyF,UAAUyB,QAAU,SAAS7G,MACvC,GAAI8D,GAAIX,EAAEiB,QAAQjB,EAAEkB,MAAM1E,YAAYsE,cAAe,MAAOnE,KAAKG,GAIjE,OAHAH,MAAKE,KAAOA,KACZL,YAAYsE,cAAcT,OAAOM,EAAG,GACpCnE,YAAY+D,KAAK5D,MACVA,KAAKgH,SASdnH,YAAYyF,UAAU2B,QAAU,WAC9B,GAEInD,MACAoD,QAHAzC,MAAQzE,KACRmH,EAAItH,YAAYc,GAAGyG,OAoBvB,OAhBIpH,MAAKiE,gBACPiD,QAAUrH,YAAYQ,WAAWyC,MAAM9C,KAAKG,GAAI,eAChD2D,KAAOjE,YAAYqE,iBAGnBgD,QAAUrH,YAAYQ,WAAWgH,OAAOrH,KAAKG,IAC7C2D,KAAOjE,YAAYsE,eAGrB+C,QAAQnH,KAAK,WACX,GAAIiE,GAAIX,EAAEiB,QAAQjB,EAAEkB,MAAMT,KAAM,MAAOW,MAAMtE,GAC7C2D,MAAKJ,OAAOM,EAAG,GACfmD,EAAEG,WACD,SAASlE,KAAMmE,QAChBJ,EAAEK,OAAOpE,QAEJ+D,EAAED,SASXrH,YAAYyF,UAAUmC,aAAe,SAASlC,OAE5C,GAAImC,MAAOrE,EAAEsE,IAAIpC,MAAO,SAAStC,MAAQ,MAAOA,MAAK9C,KACjDsE,MAAQzE,IAEZ,OAAOH,aAAYQ,WAAWuH,KAAK5H,KAAKG,GAAI,eAAgBuH,KAAMA,OAAO3H,KAAK,WAC5E0E,MAAMc,MAAQlC,EAAEwE,WAAWpD,MAAMc,MAAOA,UAU5C1F,YAAYyF,UAAUwC,WAAa,SAASvC,MAAOwC,QACjD,GAAIL,MAAOrE,EAAEsE,IAAIpC,MAAO,SAAStC,MAAQ,MAAOA,MAAK9C,IACrD,OAAON,aAAYQ,WAAWuH,KAAK5H,KAAKG,GAAI,QAASuH,KAAMA,KAAMK,OAAQA,UAS3ElI,YAAYyF,UAAU0B,MAAQ,WAC5B,MAAOnH,aAAYQ,WAAW2H,KAAKhI,KAAKG,GAAIH,KAAKiI,SAASlI,KAAK,SAASqD,MACtE,MAAOA,SAUXvD,YAAYyF,UAAU4C,SAAW,SAASC,QACxC,MAAOnI,MAAK4F,MAAM7F,KAAK,SAASiF,eAC9B,MAAOnF,aAAYyB,MAAMyD,MAAMC,cAAemD,WAUlDtI,YAAYyF,UAAU/E,QAAU,SAAST,uBACvC,GAAI2E,OAAQzE,IAGZA,MAAK6F,uBAAyB/F,sBAAsBC,KAAK,SAASqD,MAChE,MAAOvD,aAAYe,SAAS,WAmB1B,MAhBAO,SAAQwD,QAAQ9E,YAAY2E,WAAY,SAASJ,EAAGJ,GAC9CI,EAAEjE,IAAMiD,KAAKjD,IACfgB,QAAQC,OAAOqD,MAAOL,KAI1BK,MAAMxE,KAAKmD,MAEXjC,QAAQwD,QAAQF,MAAMc,MAAO,SAASnB,EAAGJ,GACvCS,MAAMc,MAAMvB,GAAK,GAAInE,aAAYyB,MAAM8C,KAGzCK,MAAMjE,KAAO,GAAIX,aAAYY,MAAM,YAAcgE,MAAMtE,IAEvDsE,MAAMwB,uBAECxB,SAER,SAASrB,MACVqB,MAAM2D,SAAU,EACZjH,QAAQkH,SAASjF,OACnBvD,YAAYe,SAAS,WACnBO,QAAQC,OAAOqD,MAAOrB,WAY9BvD,YAAYyF,UAAU2C,MAAQ,WAC5B,GAAIpE,eAQJ,OAPA1C,SAAQwD,QAAQ3E,KAAM,SAAS0B,MAAO4G,KACzB,eAAPA,KACO,SAAPA,KACU,KAAVA,IAAI,KACNzE,YAAYyE,KAAO5G,SAGhBmC,gBCziBX,WACE,YAQA,SAAS7C,MAAKuH,eAAgBC,SAG5B,GAAmC,kBAAxBD,gBAAexI,MAExB,GADAC,KAAKC,KAAKsI,eAAgBC,SACtBxI,KAAKyI,MAAQzI,KAAKG,GAAI,CAGxB,GAAIuI,aAAc1H,KAAKX,WAAWsI,QAAQ3I,KAAKyI,IAC/CzI,MAAKO,QAAQmI,aACb1I,KAAK4I,OAAQ,OAKf5I,MAAKO,QAAQgI,gBAIjBvH,KAAK6H,YAAc,OAAQ,OAAQ,OAAQ,MAAO,SAClD7H,KAAK8H,cAAgB,OAAQ,OAAQ,QACrC9H,KAAK+H,YAAc,OAAQ,OAAQ,QACnC/H,KAAKgI,gBAAkB,OAAQ,QAO/BhI,KAAKN,UAAY,WAAY,aAAc,WAAY,cAAe,WAAY,SAASE,SAAUE,SAAUC,SAAUG,YAAa+H,UAapI,MAZA9H,SAAQC,OAAOJ,MACbX,WAAY,GAAIU,UAASD,SAASO,WAAW,aAAe,WAAYP,SAASO,cACjFT,SAAUA,SACVsI,UAAWD,WAGb/H,YAAYa,QAAQhC,KAAK,WACnBmB,YAAYkF,SAAS+C,yBACvBnI,KAAKoI,YAAclI,YAAYkF,SAAS+C,0BAIrCnI,MAOT,KACEG,QAAQiB,OAAO,mBAEjB,MAAMC,GACJlB,QAAQiB,OAAO,mBAAoB,gBAErCjB,QAAQiB,OAAO,mBACZE,QAAQ,OAAQtB,KAAKN,UASxBM,KAAK+D,MAAQ,SAASC,cAAemD,QACnC,GAAII,gBAAiBvI,KAAKK,WAAWyC,OAAOkC,cAAemD,QAAQkB,KAAK,KAAM,OAE9E,OAAIlB,QAAe,GAAInH,MAAKuH,gBAErBvH,KAAKsI,kBAAkBf,iBAUhCvH,KAAKuI,iBAAmB,SAASC,OAC/B,GAAIC,IAAK,GAAIC,QAAOF,MAAO,IAC3B,OAAOnG,GAAEC,OAAOtC,KAAKoI,YAAa,SAASO,UACzC,MAA8B,IAAvBA,SAASlI,OAAOgI,OAS3BzI,KAAKsI,kBAAoB,SAASf,gBAChC,GAAIqB,cAYJ,OAVAA,YAAWC,gBAAkBtB,eAE7BA,eAAexI,KAAK,SAASwF,OAC3BvE,KAAKJ,SAAS,WACZO,QAAQwD,QAAQY,MAAO,SAASnC,KAAMF,OACpC0G,WAAWxG,KAAKjD,IAAM,GAAIa,MAAKoC,YAK9BwG,YAST5I,KAAKsE,UAAUrF,KAAO,SAASmD,KAAMoF,SACnCxI,KAAK8J,QACL3I,QAAQC,OAAOpB,KAAMoD,MAChBpD,KAAK+J,aACR/J,KAAK+J,WAAa/J,KAAKgK,aACpBhK,KAAKiK,UACRjK,KAAKiK,QAAUjK,KAAKkK,gBAAgB1B,UACjCxI,KAAKmK,UACRnK,KAAKmK,QAAUnK,KAAKoK,OAASpJ,KAAKkI,UAAUlJ,KAAKkK,gBAAgB1B,SAAU,KAC7ExI,KAAKgG,UAAW,EAGhBhG,KAAKqK,MAAQ,KASfrJ,KAAKsE,UAAUM,IAAM,WACnB,MAAO5F,MAAK6J,gBAAgB9J,KAAK,SAASqD,MACxC,MAAOA,MAAKjD,MAShBa,KAAKsE,UAAU0B,MAAQ,WACrB,GAAIvC,OAAQzE,KACRsK,OAAS,eAIb,OAFwB,SAApBtK,KAAKuK,cAAwBD,OAAS,cAEnCtJ,KAAKX,WAAW2H,MAAMhI,KAAKyI,IAAKzI,KAAKG,IAAM,SAASkJ,KAAK,KACpCrJ,KAAKiI,SACHqC,OAAQA,SACnCvK,KAAK,SAASqD,MAGb,MADAqB,OAAM+F,YAAc/F,MAAMwD,OAAM,GACzB7E,QAIbpC,KAAKsE,UAAU2B,QAAU,SAASwD,UAAWvH,OAC3C,MAAIuH,gBACEvH,MAAQ,IAAMlD,KAAKyK,WAAWhH,OAASP,MACzClD,KAAKyK,WAAW/G,OAAOR,MAAO,SAGvBlD,MAAKyK,YAIPzJ,KAAKX,WAAWgH,QAAQrH,KAAKyI,IAAKzI,KAAKG,IAAIkJ,KAAK,OAI3DrI,KAAKsE,UAAU0E,UAAY,WACzB,GAA0BU,OAAtBC,GAAK3K,KAAK4K,MAAQ,EAsBtB,OArBkB,KAAdD,GAAGlH,SACLiH,SACI1K,KAAK6K,aAAe7K,KAAK6K,YAAYpH,OAAS,GAChDiH,MAAM7F,KAAK7E,KAAK6K,aACd7K,KAAK8K,UAAY9K,KAAK8K,SAASrH,OAAS,GAC1CiH,MAAM7F,KAAK,OAAS7E,KAAK8K,SAAW,SAClC9K,KAAK+K,MAAQ/K,KAAK+K,KAAKtH,OAAS,GAClCiH,MAAM7F,KAAK7E,KAAK+K,MACdL,MAAMjH,OAAS,EACjBkH,GAAKD,MAAMrB,KAAK,KACTrJ,KAAKgL,OAAShL,KAAKgL,MAAMvH,OAAS,EACzCkH,GAAK3K,KAAKgL,MAEHhL,KAAKiL,QAAUjL,KAAKiL,OAAOxH,OAAS,EAC3CkH,GAAKtH,EAAEG,KAAKxD,KAAKiL,OAAQ,SAASjH,GAAK,MAAmB,KAAZA,EAAEtC,QAAiBA,MAE1D1B,KAAK4K,MAAQ5K,KAAK4K,KAAKnH,OAAS,IACvCkH,GAAK3K,KAAK4K,OAIPD,IAGT3J,KAAKsE,UAAU4F,aAAe,WAC5B,GAAIC,eAWJ,OAVInL,MAAKoL,OAAOD,YAAYtG,KAAK7E,KAAKoL,OAClCpL,KAAKqL,MAAMF,YAAYtG,KAAK7E,KAAKqL,MACjCrL,KAAKsL,UAAYtL,KAAKsL,SAAS7H,OAAS,GAC1CJ,EAAEsB,QAAQ3E,KAAKsL,SAAU,SAASC,MACb,KAAfA,KAAK7J,OACPyJ,YAAYtG,KAAK0G,KAAK7J,SAExB1B,KAAKwL,KAAKL,YAAYtG,KAAK7E,KAAKwL,KAChCxL,KAAKmL,aAAaA,YAAYtG,KAAK7E,KAAKmL,aAErCA,YAAY9B,KAAK,OAU1BrI,KAAKsE,UAAU4E,gBAAkB,SAAS1B,SACxC,GAAIiD,OAAOhC,EAyBX,OAxBIjB,WACFiB,GAAK,GAAIC,QAAOlB,QAAS,KACzBiD,MAAQpI,EAAEG,KAAKxD,KAAKiL,OAAQ,SAAS7G,GACnC,MAAOqF,IAAGiC,KAAKtH,EAAE1C,UAGjB+J,MACFA,MAAQA,MAAM/J,OAGd+J,MAAQpI,EAAEG,KAAKxD,KAAKiL,OAAQ,SAAS7G,GACnC,MAAiB,QAAVA,EAAEuH,OAGTF,MADEA,MACMA,MAAM/J,MAEP1B,KAAKiL,QAAUjL,KAAKiL,OAAOxH,OAC1BzD,KAAKiL,OAAO,GAAGvJ,MAGf,IAIL+J,OASTzK,KAAKsE,UAAUsG,aAAe,SAASpD,SACrC,GAAIqD,UAAW7L,KAAKgK,YAChByB,MAAQzL,KAAKkK,gBAAgB1B,QAGjC,OAFIiD,QAASA,OAASI,WACpBA,UAAY,KAAOJ,MAAQ,KACtBI,UAQT7K,KAAKsE,UAAUwG,UAAY,WACzB,MAAI9L,MAAK+L,UACC/L,KAAK+L,SAASC,cAAehM,KAAK+L,SAASE,WAAa,EAAGjM,KAAK+L,SAASG,WAAW7C,KAAK,KAE5F,IAGTrI,KAAKsE,UAAU6G,QAAU,WACvB,MAA2B,SAApBnM,KAAKuK,aAGdvJ,KAAKsE,UAAU8G,QAAU,WACvB,MAA2B,SAApBpM,KAAKuK,aAGdvJ,KAAKsE,UAAU+G,YAAc,SAASC,SACpC,GAAInL,QAAQ0B,YAAY7C,KAAKsL,UAC3BtL,KAAKsL,WAAa5J,MAAO4K,cAEtB,CACH,IAAK,GAAItI,GAAI,EAAGA,EAAIhE,KAAKsL,SAAS7H,QAC5BzD,KAAKsL,SAAStH,GAAGtC,OAAS4K,QADUtI,KAKtCA,GAAKhE,KAAKsL,SAAS7H,QACrBzD,KAAKsL,SAASzG,MAAMnD,MAAO4K,UAE/B,MAAOtM,MAAKsL,SAAS7H,OAAS,GAGhCzC,KAAKsE,UAAUiH,aAAe,SAAS5C,UACrC,GAAIxI,QAAQ0B,YAAY7C,KAAKwM,YAC3BxM,KAAKwM,aAAe9K,MAAOiI,eAExB,CACH,IAAK,GAAI3F,GAAI,EAAGA,EAAIhE,KAAKwM,WAAW/I,QAC9BzD,KAAKwM,WAAWxI,GAAGtC,OAASiI,SADU3F,KAKxCA,GAAKhE,KAAKwM,WAAW/I,QACvBzD,KAAKwM,WAAW3H,MAAMnD,MAAOiI,aAInC3I,KAAKsE,UAAUmH,UAAY,SAASd,MAOlC,MANIxK,SAAQ0B,YAAY7C,KAAKiL,QAC3BjL,KAAKiL,SAAWU,KAAMA,KAAMjK,MAAO,KAE5B2B,EAAER,YAAYQ,EAAEG,KAAKxD,KAAKiL,OAAQ,SAASjH,GAAK,MAAmB,KAAZA,EAAEtC,UAChE1B,KAAKiL,OAAOpG,MAAM8G,KAAMA,KAAMjK,MAAO,KAEhC1B,KAAKiL,OAAOxH,OAAS,GAG9BzC,KAAKsE,UAAUoH,UAAY,SAASf,MAOlC,MANIxK,SAAQ0B,YAAY7C,KAAK2M,QAC3B3M,KAAK2M,SAAWhB,KAAMA,KAAMjK,MAAO,KAE5B2B,EAAER,YAAYQ,EAAEG,KAAKxD,KAAK2M,OAAQ,SAAS3I,GAAK,MAAmB,KAAZA,EAAEtC,UAChE1B,KAAK2M,OAAO9H,MAAM8G,KAAMA,KAAMjK,MAAO,KAEhC1B,KAAK2M,OAAOlJ,OAAS,GAG9BzC,KAAKsE,UAAUsH,QAAU,SAASjB,KAAMkB,KAOtC,MANI1L,SAAQ0B,YAAY7C,KAAK8M,MAC3B9M,KAAK8M,OAASnB,KAAMA,KAAMjK,MAAOmL,MAE1BxJ,EAAER,YAAYQ,EAAEG,KAAKxD,KAAK8M,KAAM,SAAS9I,GAAK,MAAOA,GAAEtC,OAASmL,QACvE7M,KAAK8M,KAAKjI,MAAM8G,KAAMA,KAAMjK,MAAOmL,MAE9B7M,KAAK8M,KAAKrJ,OAAS,GAG5BzC,KAAKsE,UAAUyH,YAAc,SAASpB,KAAMqB,WAAYC,OAAQC,QAASC,SAAUC,OAAQC,QAASC,YAalG,MAZInM,SAAQ0B,YAAY7C,KAAKuN,WAC3BvN,KAAKuN,YAAc5B,KAAMA,KAAMqB,WAAYA,WAAYC,OAAQA,OAAQC,QAASA,QAASC,SAAUA,SAAUC,OAAQA,OAAQC,QAASA,QAASC,WAAYA,aAEnJjK,EAAEG,KAAKxD,KAAKuN,UAAW,SAASvJ,GACxC,MAAOA,GAAEiJ,QAAUA,QACjBjJ,EAAEkJ,SAAWA,SACblJ,EAAEmJ,UAAYA,UACdnJ,EAAEqJ,SAAWA,SACbrJ,EAAEsJ,YAAcA,cAElBtN,KAAKuN,UAAU1I,MAAM8G,KAAMA,KAAMqB,WAAYA,WAAYC,OAAQA,OAAQC,QAASA,QAASC,SAAUA,SAAUC,OAAQA,OAAQC,QAASA,QAASC,WAAYA,aAExJtN,KAAKuN,UAAU9J,OAAS,GAGjCzC,KAAKsE,UAAUkI,WAAa,SAAS/B,OACnC,GACIzH,GADAf,KAAO,GAAIjC,OAAMyK,MAAOA,MAAOR,SAAUvJ,MAAO+J,SAEpD,IAAItK,QAAQ0B,YAAY7C,KAAK8J,MAC3B9J,KAAK8J,MAAQ7G,UAEV,IAAqB,IAAjBwI,MAAMhI,OACbzD,KAAK8J,KAAKjF,KAAK5B,UAEZ,CACH,IAAKe,EAAI,EAAGA,EAAIhE,KAAK8J,KAAKrG,QACpBzD,KAAK8J,KAAK9F,GAAGyH,OAASA,MADMzH,KAK9BA,GAAKhE,KAAK8J,KAAKrG,QACjBzD,KAAK8J,KAAKjF,KAAK5B,MAEnB,MAAOjD,MAAK8J,KAAKrG,OAAS,GAQ5BzC,KAAKsE,UAAUmI,OAAS,WACtB,GAAIhJ,OAAQzE,IACZmB,SAAQwD,QAAQ3E,KAAM,SAAS0B,MAAO4G,KACzB,eAAPA,KAAkC,KAAVA,IAAI,UACvB7D,OAAM6D,OAGjBnH,QAAQC,OAAOpB,KAAMA,KAAKwK,aAE1BrJ,QAAQwD,QAAQ3E,KAAK8J,KAAM,SAAS1F,EAAGJ,GACjCI,EAAEqH,QAAOrH,EAAE6G,SAAWvJ,MAAO0C,EAAEqH,SACnChH,MAAMqF,KAAK9F,GAAK,GAAIhD,MAAKoD,KAE3BpE,KAAKwK,YAAcxK,KAAKiI,OAAM,IA+BhCjH,KAAKsE,UAAU/E,QAAU,SAASgI,gBAChC,GAAI9D,OAAQzE,IAGZA,MAAK6J,gBAAkBtB,eAGvBvI,KAAK6J,gBAAgB9J,KAAK,SAASqD,MAEjCpC,KAAKJ,SAAS,WACZ6D,MAAMxE,KAAKmD,MAEXjC,QAAQwD,QAAQF,MAAMqF,KAAM,SAAS1F,EAAGJ,GAClCI,EAAEqH,QAAOrH,EAAE6G,SAAWvJ,MAAO0C,EAAEqH,SACnCrH,EAAEjE,GAAKiE,EAAEsJ,UACTjJ,MAAMqF,KAAK9F,GAAK,GAAIhD,MAAKoD,KAEvBK,MAAMsH,WACRtH,MAAMsH,SAAW,GAAI4B,MAAsB,IAAjBlJ,MAAMsH,WAGlCtH,MAAM+F,YAAc/F,MAAMwD,OAAM,QAYtCjH,KAAKsE,UAAU2C,MAAQ,SAAS2F,MAC9B,GAAI3K,QAuBJ,OAtBA9B,SAAQwD,QAAQ3E,KAAM,SAAS0B,MAAO4G,KACzB,QAAPA,IACFrF,KAAK6G,KAAOzG,EAAEsE,IAAIjG,MAAO,SAAS0C,GAChC,MAAOA,GAAE6D,MAAM2F,QAGH,eAAPtF,KAAkC,KAAVA,IAAI,KAC/BsF,KACF3K,KAAKqF,KAAOnH,QAAQ0M,KAAKnM,OAEzBuB,KAAKqF,KAAO5G,SAKbkM,OACC3K,KAAK8I,SACP9I,KAAK8I,SAAW9I,KAAK8I,SAAS+B,UAAU,IAExC7K,KAAK8I,SAAW,GAGb9I,MAGTjC,KAAKsE,UAAUyI,SAAW,WACxB,GAAIC,MAAOhO,KAAKG,GAAK,IAAMH,KAAK+J,UAKhC,OAHI/J,MAAKiK,UACP+D,MAAQ,KAAOhO,KAAKiK,QAAU,KAEzB,IAAM+D,KAAO","sourcesContent":["/* -*- Mode: javascript; indent-tabs-mode: nil; c-basic-offset: 2 -*- */\n\n(function() {\n 'use strict';\n\n /**\n * @name AddressBook\n * @constructor\n * @param {object} futureAddressBookData - either an object literal or a promise\n */\n function AddressBook(futureAddressBookData) {\n // Data is immediately available\n if (typeof futureAddressBookData.then !== 'function') {\n this.init(futureAddressBookData);\n if (this.name && !this.id) {\n // Create a new addressbook on the server\n var newAddressBookData = AddressBook.$$resource.create('createFolder', this.name);\n this.$unwrap(newAddressBookData);\n }\n else if (this.id) {\n this.$acl = new AddressBook.$$Acl('Contacts/' + this.id);\n }\n }\n else {\n // The promise will be unwrapped first\n this.$unwrap(futureAddressBookData);\n }\n }\n\n /**\n * @memberof AddressBook\n * @desc The factory we'll use to register with Angular\n * @returns the AddressBook constructor\n */\n AddressBook.$factory = ['$q', '$timeout', '$log', 'sgSettings', 'Resource', 'Card', 'Acl', 'Preferences', function($q, $timeout, $log, Settings, Resource, Card, Acl, Preferences) {\n angular.extend(AddressBook, {\n $q: $q,\n $timeout: $timeout,\n $log: $log,\n $$resource: new Resource(Settings.activeUser('folderURL') + 'Contacts', Settings.activeUser()),\n $Card: Card,\n $$Acl: Acl,\n $Preferences: Preferences,\n $query: {search: 'name_or_address', value: '', sort: 'c_cn', asc: 1},\n activeUser: Settings.activeUser(),\n selectedFolder: null,\n $refreshTimeout: null\n });\n // Initialize sort parameters from user's settings\n Preferences.ready().then(function() {\n if (Preferences.settings.Contact.SortingState) {\n AddressBook.$query.sort = Preferences.settings.Contact.SortingState[0];\n AddressBook.$query.asc = parseInt(Preferences.settings.Contact.SortingState[1]);\n }\n });\n return AddressBook; // return constructor\n }];\n\n /**\n * @module SOGo.ContactsUI\n * @desc Factory registration of AddressBook in Angular module.\n */\n try {\n angular.module('SOGo.ContactsUI');\n }\n catch(e) {\n angular.module('SOGo.ContactsUI', ['SOGo.Common']);\n }\n angular.module('SOGo.ContactsUI')\n .factory('AddressBook', AddressBook.$factory);\n\n /**\n * @memberof AddressBook\n * @desc Search for cards among all addressbooks matching some criterias.\n * @param {string} search - the search string to match\n * @param {object} [options] - additional options to the query (excludeGroups and excludeLists)\n * @param {object[]} excludedCards - a list of Card objects that must be excluded from the results\n * @returns a collection of Cards instances\n */\n AddressBook.$filterAll = function(search, options, excludedCards) {\n var params = {search: search};\n\n if (!search) {\n // No query specified\n AddressBook.$cards = [];\n return AddressBook.$q.when(AddressBook.$cards);\n }\n if (angular.isUndefined(AddressBook.$cards)) {\n // First session query\n AddressBook.$cards = [];\n }\n else if (AddressBook.$query == search) {\n // Query hasn't changed\n return AddressBook.$q.when(AddressBook.$cards);\n }\n AddressBook.$query = search;\n\n angular.extend(params, options);\n\n return AddressBook.$$resource.fetch(null, 'allContactSearch', params).then(function(response) {\n var results, card, index,\n compareIds = function(data) {\n return this.id == data.id;\n };\n if (excludedCards) {\n // Remove excluded cards from results\n results = _.filter(response.contacts, function(data) {\n return _.isUndefined(_.find(excludedCards, compareIds, data));\n });\n }\n else {\n results = response.contacts;\n }\n // Remove cards that no longer match the search query\n for (index = AddressBook.$cards.length - 1; index >= 0; index--) {\n card = AddressBook.$cards[index];\n if (_.isUndefined(_.find(results, compareIds, card))) {\n AddressBook.$cards.splice(index, 1);\n }\n }\n // Add new cards matching the search query\n _.each(results, function(data, index) {\n if (_.isUndefined(_.find(AddressBook.$cards, compareIds, data))) {\n var card = new AddressBook.$Card(data, search);\n AddressBook.$cards.splice(index, 0, card);\n }\n });\n return AddressBook.$cards;\n });\n };\n\n /**\n * @memberof AddressBook\n * @desc Add a new addressbook to the static list of addressbooks\n * @param {AddressBook} addressbook - an Addressbook object instance\n */\n AddressBook.$add = function(addressbook) {\n // Insert new addressbook at proper index\n var list, sibling, i;\n\n list = addressbook.isSubscription? this.$subscriptions : this.$addressbooks;\n sibling = _.find(list, function(o) {\n return (addressbook.id == 'personal' ||\n (o.id != 'personal' &&\n o.name.localeCompare(addressbook.name) === 1));\n });\n i = sibling ? _.indexOf(_.pluck(list, 'id'), sibling.id) : 1;\n list.splice(i, 0, addressbook);\n };\n\n /**\n * @memberof AddressBook\n * @desc Set or get the list of addressbooks. Will instantiate a new AddressBook object for each item.\n * @param {array} [data] - the metadata of the addressbooks\n * @returns the list of addressbooks\n */\n AddressBook.$findAll = function(data) {\n var _this = this;\n if (data) {\n this.$addressbooks = [];\n this.$subscriptions = [];\n this.$remotes = [];\n // Instanciate AddressBook objects\n angular.forEach(data, function(o, i) {\n var addressbook = new AddressBook(o);\n if (addressbook.isRemote)\n _this.$remotes.push(addressbook);\n else if (addressbook.isSubscription)\n _this.$subscriptions.push(addressbook);\n else\n _this.$addressbooks.push(addressbook);\n });\n }\n return _.union(this.$addressbooks, this.$subscriptions, this.$remotes);\n };\n\n /**\n * @memberOf AddressBook\n * @desc Fetch list of cards and return an AddressBook instance.\n * @param {string} addressbookId - the addressbook identifier\n * @returns an AddressBook object instance\n */\n AddressBook.$find = function(addressbookId) {\n var futureAddressBookData = AddressBook.$$resource.fetch(addressbookId, 'view', AddressBook.$query);\n return new AddressBook(futureAddressBookData);\n };\n\n /**\n * @memberOf AddressBook\n * @desc Subscribe to another user's addressbook and add it to the list of addressbooks.\n * @param {string} uid - user id\n * @param {string} path - path of folder for specified user\n * @returns a promise of the HTTP query result\n */\n AddressBook.$subscribe = function(uid, path) {\n var _this = this;\n return AddressBook.$$resource.userResource(uid).fetch(path, 'subscribe').then(function(addressbookData) {\n var addressbook = new AddressBook(addressbookData);\n if (_.isUndefined(_.find(_this.$subscriptions, function(o) {\n return o.id == addressbookData.id;\n }))) {\n // Not already subscribed\n AddressBook.$add(addressbook);\n }\n return addressbook;\n });\n };\n\n /**\n * @function init\n * @memberof AddressBook.prototype\n * @desc Extend instance with new data and compute additional attributes.\n * @param {object} data - attributes of addressbook\n */\n AddressBook.prototype.init = function(data) {\n this.$cards = [];\n this.cards = [];\n angular.extend(this, data);\n // Add 'isOwned' and 'isSubscription' attributes based on active user (TODO: add it server-side?)\n this.isOwned = AddressBook.activeUser.isSuperUser || this.owner == AddressBook.activeUser.login;\n this.isSubscription = !this.isRemote && this.owner != AddressBook.activeUser.login;\n };\n\n /**\n * @function $id\n * @memberof AddressBook.prototype\n * @desc Resolve the addressbook id.\n * @returns a promise of the addressbook id\n */\n AddressBook.prototype.$id = function() {\n if (this.id) {\n // Object already unwrapped\n return AddressBook.$q.when(this.id);\n }\n else {\n // Wait until object is unwrapped\n return this.$futureAddressBookData.then(function(addressbook) {\n return addressbook.id;\n });\n }\n };\n\n /**\n * @function $selectedCount\n * @memberof AddressBook.prototype\n * @desc Return the number of cards selected by the user.\n * @returns the number of selected cards\n */\n AddressBook.prototype.$selectedCount = function() {\n var count;\n\n count = 0;\n if (this.cards) {\n count = (_.filter(this.cards, function(card) { return card.selected; })).length;\n }\n return count;\n };\n\n /**\n * @function $startRefreshTimeout\n * @memberof AddressBook.prototype\n * @desc Starts the refresh timeout for the current selected address book\n */\n AddressBook.prototype.$startRefreshTimeout = function() {\n var _this = this;\n\n if (AddressBook.$refreshTimeout)\n AddressBook.$timeout.cancel(AddressBook.$refreshTimeout);\n\n AddressBook.$Preferences.ready().then(function() {\n // Restart the refresh timer, if needed\n var refreshViewCheck = AddressBook.$Preferences.defaults.SOGoRefreshViewCheck;\n if (refreshViewCheck && refreshViewCheck != 'manually') {\n var f = angular.bind(_this, AddressBook.prototype.$reload);\n AddressBook.$refreshTimeout = AddressBook.$timeout(f, refreshViewCheck.timeInterval()*1000);\n }\n });\n };\n\n /**\n * @function $reload\n * @memberof AddressBook.prototype\n * @desc Reload list of cards\n * @returns a promise of the Cards instances\n */\n AddressBook.prototype.$reload = function() {\n var _this = this;\n\n this.$startRefreshTimeout();\n\n return AddressBook.$$resource.fetch(this.id, 'view')\n .then(function(response) {\n var index, card,\n results = response.cards,\n cards = _this.cards,\n compareIds = function(data) {\n return this.id == data.id;\n };\n\n // Remove cards that no longer exist\n for (index = cards.length - 1; index >= 0; index--) {\n card = cards[index];\n if (_.isUndefined(_.find(results, compareIds, card))) {\n cards.splice(index, 1);\n }\n }\n\n // Add new cards\n _.each(results, function(data, index) {\n if (_.isUndefined(_.find(cards, compareIds, data))) {\n var card = new AddressBook.$Card(data);\n cards.splice(index, 0, card);\n }\n });\n\n return cards;\n });\n };\n\n /**\n * @function $filter\n * @memberof AddressBook.prototype\n * @desc Search for cards matching some criterias\n * @param {string} search - the search string to match\n * @param {object} [options] - additional options to the query\n * @returns a collection of Cards instances\n */\n AddressBook.prototype.$filter = function(search, options, excludedCards) {\n var _this = this;\n\n return AddressBook.$Preferences.ready().then(function() {\n if (options) {\n angular.extend(AddressBook.$query, options);\n\n if (options.dry) {\n if (!search) {\n // No query specified\n _this.$cards = [];\n return AddressBook.$q.when(_this.$cards);\n }\n else if (AddressBook.$query.value == search) {\n // Query hasn't changed\n return AddressBook.$q.when(_this.$cards);\n }\n }\n }\n\n AddressBook.$query.value = search;\n\n return _this.$id().then(function(addressbookId) {\n return AddressBook.$$resource.fetch(addressbookId, 'view', AddressBook.$query);\n }).then(function(response) {\n var results, cards, card, index,\n compareIds = function(data) {\n return _this.id == data.id;\n };\n if (options && options.dry) {\n // Don't keep a copy of the resulting cards.\n // This is usefull when doing autocompletion.\n cards = _this.$cards;\n }\n else {\n cards = _this.cards;\n }\n if (excludedCards) {\n // Remove excluded cards from results\n results = _.filter(response.cards, function(card) {\n return _.isUndefined(_.find(excludedCards, compareIds, card));\n });\n }\n else {\n results = response.cards;\n }\n // Remove cards that no longer match the search query\n for (index = cards.length - 1; index >= 0; index--) {\n card = cards[index];\n if (_.isUndefined(_.find(results, compareIds, card))) {\n cards.splice(index, 1);\n }\n }\n // Add new cards matching the search query\n _.each(results, function(data, index) {\n if (_.isUndefined(_.find(cards, compareIds, data))) {\n var card = new AddressBook.$Card(data, search);\n cards.splice(index, 0, card);\n }\n });\n // Respect the order of the results\n _.each(results, function(data, index) {\n var oldIndex, removedCards;\n if (cards[index].id != data.id) {\n oldIndex = _.findIndex(cards, compareIds, data);\n removedCards = cards.splice(oldIndex, 1);\n cards.splice(index, 0, removedCards[0]);\n }\n });\n return cards;\n });\n });\n };\n\n /**\n * @function $rename\n * @memberof AddressBook.prototype\n * @desc Rename the addressbook and keep the list sorted\n * @param {string} name - the new name\n * @returns a promise of the HTTP operation\n */\n AddressBook.prototype.$rename = function(name) {\n var i = _.indexOf(_.pluck(AddressBook.$addressbooks, 'id'), this.id);\n this.name = name;\n AddressBook.$addressbooks.splice(i, 1);\n AddressBook.$add(this);\n return this.$save();\n };\n\n /**\n * @function $delete\n * @memberof AddressBook.prototype\n * @desc Delete the addressbook from the server and the static list of addressbooks.\n * @returns a promise of the HTTP operation\n */\n AddressBook.prototype.$delete = function() {\n var _this = this,\n d = AddressBook.$q.defer(),\n list,\n promise;\n\n if (this.isSubscription) {\n promise = AddressBook.$$resource.fetch(this.id, 'unsubscribe');\n list = AddressBook.$subscriptions;\n }\n else {\n promise = AddressBook.$$resource.remove(this.id);\n list = AddressBook.$addressbooks;\n }\n\n promise.then(function() {\n var i = _.indexOf(_.pluck(list, 'id'), _this.id);\n list.splice(i, 1);\n d.resolve();\n }, function(data, status) {\n d.reject(data);\n });\n return d.promise;\n };\n\n /**\n * @function $deleteCards\n * @memberof AddressBook.prototype\n * @desc Delete multiple cards from addressbook.\n * @return a promise of the HTTP operation\n */\n AddressBook.prototype.$deleteCards = function(cards) {\n\n var uids = _.map(cards, function(card) { return card.id; });\n var _this = this;\n \n return AddressBook.$$resource.post(this.id, 'batchDelete', {uids: uids}).then(function() {\n _this.cards = _.difference(_this.cards, cards);\n });\n };\n\n /**\n * @function $copyCards\n * @memberof AddressBook.prototype\n * @desc Copy multiple cards from addressbook to an other one.\n * @return a promise of the HTTP operation\n */\n AddressBook.prototype.$copyCards = function(cards, folder) {\n var uids = _.map(cards, function(card) { return card.id; });\n return AddressBook.$$resource.post(this.id, 'copy', {uids: uids, folder: folder});\n };\n\n /**\n * @function $save\n * @memberof AddressBook.prototype\n * @desc Save the addressbook to the server. This currently can only affect the name of the addressbook.\n * @returns a promise of the HTTP operation\n */\n AddressBook.prototype.$save = function() {\n return AddressBook.$$resource.save(this.id, this.$omit()).then(function(data) {\n return data;\n });\n };\n\n /**\n * @function $getCard\n * @memberof AddressBook.prototype\n * @desc Fetch the card attributes from the server.\n * @returns a promise of the HTTP operation\n */\n AddressBook.prototype.$getCard = function(cardId) {\n return this.$id().then(function(addressbookId) {\n return AddressBook.$Card.$find(addressbookId, cardId);\n });\n };\n\n /**\n * @function $unwrap\n * @memberof AddressBook.prototype\n * @desc Unwrap a promise and instanciate new Card objects using received data.\n * @param {promise} futureAddressBookData - a promise of the AddressBook's data\n */\n AddressBook.prototype.$unwrap = function(futureAddressBookData) {\n var _this = this;\n\n // Expose and sesolve the promise\n this.$futureAddressBookData = futureAddressBookData.then(function(data) {\n return AddressBook.$timeout(function() {\n // Extend AddressBook instance from data of addressbooks list.\n // Will inherit attributes such as isEditable and isRemote.\n angular.forEach(AddressBook.$findAll(), function(o, i) {\n if (o.id == data.id) {\n angular.extend(_this, o);\n }\n });\n // Extend AddressBook instance with received data\n _this.init(data);\n // Instanciate Card objects\n angular.forEach(_this.cards, function(o, i) {\n _this.cards[i] = new AddressBook.$Card(o);\n });\n // Instanciate Acl object\n _this.$acl = new AddressBook.$$Acl('Contacts/' + _this.id);\n\n _this.$startRefreshTimeout();\n\n return _this;\n });\n }, function(data) {\n _this.isError = true;\n if (angular.isObject(data)) {\n AddressBook.$timeout(function() {\n angular.extend(_this, data);\n });\n }\n });\n };\n\n /**\n * @function $omit\n * @memberof AddressBook.prototype\n * @desc Return a sanitized object used to send to the server.\n * @return an object literal copy of the Addressbook instance\n */\n AddressBook.prototype.$omit = function() {\n var addressbook = {};\n angular.forEach(this, function(value, key) {\n if (key != 'constructor' &&\n key != 'cards' &&\n key[0] != '$') {\n addressbook[key] = value;\n }\n });\n return addressbook;\n };\n})();\n","/* -*- Mode: javascript; indent-tabs-mode: nil; c-basic-offset: 2 -*- */\n\n(function() {\n 'use strict';\n\n /**\n * @name Card\n * @constructor\n * @param {object} futureCardData\n * @param {string} [partial]\n */\n function Card(futureCardData, partial) {\n\n // Data is immediately available\n if (typeof futureCardData.then !== 'function') {\n this.init(futureCardData, partial);\n if (this.pid && !this.id) {\n // Prepare for the creation of a new card;\n // Get UID from the server.\n var newCardData = Card.$$resource.newguid(this.pid);\n this.$unwrap(newCardData);\n this.isNew = true;\n }\n }\n else {\n // The promise will be unwrapped first\n this.$unwrap(futureCardData);\n }\n }\n\n Card.$TEL_TYPES = ['work', 'home', 'cell', 'fax', 'pager'];\n Card.$EMAIL_TYPES = ['work', 'home', 'pref'];\n Card.$URL_TYPES = ['work', 'home', 'pref'];\n Card.$ADDRESS_TYPES = ['work', 'home'];\n\n /**\n * @memberof Card\n * @desc The factory we'll use to register with Angular.\n * @returns the Card constructor\n */\n Card.$factory = ['$timeout', 'sgSettings', 'Resource', 'Preferences', 'Gravatar', function($timeout, Settings, Resource, Preferences, Gravatar) {\n angular.extend(Card, {\n $$resource: new Resource(Settings.activeUser('folderURL') + 'Contacts', Settings.activeUser()),\n $timeout: $timeout,\n $gravatar: Gravatar\n });\n // Initialize categories from user's defaults\n Preferences.ready().then(function() {\n if (Preferences.defaults.SOGoContactsCategories) {\n Card.$categories = Preferences.defaults.SOGoContactsCategories;\n }\n });\n\n return Card; // return constructor\n }];\n\n /**\n * @module SOGo.ContactsUI\n * @desc Factory registration of Card in Angular module.\n */\n try {\n angular.module('SOGo.ContactsUI');\n }\n catch(e) {\n angular.module('SOGo.ContactsUI', ['SOGo.Common']);\n }\n angular.module('SOGo.ContactsUI')\n .factory('Card', Card.$factory);\n\n /**\n * @memberof Card\n * @desc Fetch a card from a specific addressbook.\n * @param {string} addressbookId - the addressbook ID\n * @param {string} cardId - the card ID\n * @see {@link AddressBook.$getCard}\n */\n Card.$find = function(addressbookId, cardId) {\n var futureCardData = this.$$resource.fetch([addressbookId, cardId].join('/'), 'view');\n\n if (cardId) return new Card(futureCardData); // a single card\n\n return Card.$unwrapCollection(futureCardData); // a collection of cards\n };\n\n /**\n * @function filterCategories\n * @memberof Card.prototype\n * @desc Search for categories matching some criterias\n * @param {string} search - the search string to match\n * @returns a collection of strings\n */\n Card.filterCategories = function(query) {\n var re = new RegExp(query, 'i');\n return _.filter(Card.$categories, function(category) {\n return category.search(re) != -1;\n });\n };\n\n /**\n * @memberof Card\n * @desc Unwrap to a collection of Card instances.\n * @param {object} futureCardData\n */\n Card.$unwrapCollection = function(futureCardData) {\n var collection = {};\n\n collection.$futureCardData = futureCardData;\n\n futureCardData.then(function(cards) {\n Card.$timeout(function() {\n angular.forEach(cards, function(data, index) {\n collection[data.id] = new Card(data);\n });\n });\n });\n\n return collection;\n };\n\n /**\n * @function init\n * @memberof Card.prototype\n * @desc Extend instance with required attributes and new data.\n * @param {object} data - attributes of card\n */\n Card.prototype.init = function(data, partial) {\n this.refs = [];\n angular.extend(this, data);\n if (!this.$$fullname)\n this.$$fullname = this.$fullname();\n if (!this.$$email)\n this.$$email = this.$preferredEmail(partial);\n if (!this.$$image)\n this.$$image = this.image || Card.$gravatar(this.$preferredEmail(partial), 32);\n this.selected = false;\n\n // An empty attribute to trick md-autocomplete when adding attendees from the appointment editor\n this.empty = ' ';\n };\n\n /**\n * @function $id\n * @memberof Card.prototype\n * @desc Return the card ID.\n * @returns the card ID\n */\n Card.prototype.$id = function() {\n return this.$futureCardData.then(function(data) {\n return data.id;\n });\n };\n\n /**\n * @function $save\n * @memberof Card.prototype\n * @desc Save the card to the server.\n */\n Card.prototype.$save = function() {\n var _this = this,\n action = 'saveAsContact';\n\n if (this.c_component == 'vlist') action = 'saveAsList';\n\n return Card.$$resource.save([this.pid, this.id || '_new_'].join('/'),\n this.$omit(),\n { action: action })\n .then(function(data) {\n // Make a copy of the data for an eventual reset\n _this.$shadowData = _this.$omit(true);\n return data;\n });\n };\n\n Card.prototype.$delete = function(attribute, index) {\n if (attribute) {\n if (index > -1 && this[attribute].length > index) {\n this[attribute].splice(index, 1);\n }\n else\n delete this[attribute];\n }\n else {\n // No arguments -- delete card\n return Card.$$resource.remove([this.pid, this.id].join('/'));\n }\n };\n\n Card.prototype.$fullname = function() {\n var fn = this.c_cn || '', names;\n if (fn.length === 0) {\n names = [];\n if (this.c_givenname && this.c_givenname.length > 0)\n names.push(this.c_givenname);\n if (this.nickname && this.nickname.length > 0)\n names.push('' + this.nickname + '');\n if (this.c_sn && this.c_sn.length > 0)\n names.push(this.c_sn);\n if (names.length > 0)\n fn = names.join(' ');\n else if (this.c_org && this.c_org.length > 0) {\n fn = this.c_org;\n }\n else if (this.emails && this.emails.length > 0) {\n fn = _.find(this.emails, function(i) { return i.value !== ''; }).value;\n }\n else if (this.c_cn && this.c_cn.length > 0) {\n fn = this.c_cn;\n }\n }\n\n return fn;\n };\n\n Card.prototype.$description = function() {\n var description = [];\n if (this.title) description.push(this.title);\n if (this.role) description.push(this.role);\n if (this.orgUnits && this.orgUnits.length > 0)\n _.forEach(this.orgUnits, function(unit) {\n if (unit.value !== '')\n description.push(unit.value);\n });\n if (this.org) description.push(this.org);\n if (this.description) description.push(this.description);\n\n return description.join(', ');\n };\n\n /**\n * @function $preferredEmail\n * @memberof Card.prototype\n * @desc Get the preferred email address.\n * @param {string} [partial] - a partial string that the email must match\n * @returns the first email address of type \"pref\" or the first address if none found\n */\n Card.prototype.$preferredEmail = function(partial) {\n var email, re;\n if (partial) {\n re = new RegExp(partial, 'i');\n email = _.find(this.emails, function(o) {\n return re.test(o.value);\n });\n }\n if (email) {\n email = email.value;\n }\n else {\n email = _.find(this.emails, function(o) {\n return o.type == 'pref';\n });\n if (email) {\n email = email.value;\n }\n else if (this.emails && this.emails.length) {\n email = this.emails[0].value;\n }\n else {\n email = '';\n }\n }\n\n return email;\n };\n\n /**\n * @function $shortFormat\n * @memberof Card.prototype\n * @param {string} [partial] - a partial string that the email must match\n * @returns the fullname along with a matching email address in parentheses\n */\n Card.prototype.$shortFormat = function(partial) {\n var fullname = this.$fullname(),\n email = this.$preferredEmail(partial);\n if (email && email != fullname)\n fullname += ' <' + email + '>';\n return fullname;\n };\n\n /**\n * @function $birthday\n * @memberof Card.prototype\n * @returns the formatted birthday object\n */\n Card.prototype.$birthday = function() {\n if (this.birthday) {\n return [this.birthday.getFullYear(), this.birthday.getMonth() + 1, this.birthday.getDate()].join('/');\n }\n return '';\n };\n\n Card.prototype.$isCard = function() {\n return this.c_component == 'vcard';\n };\n\n Card.prototype.$isList = function() {\n return this.c_component == 'vlist';\n };\n\n Card.prototype.$addOrgUnit = function(orgUnit) {\n if (angular.isUndefined(this.orgUnits)) {\n this.orgUnits = [{value: orgUnit}];\n }\n else {\n for (var i = 0; i < this.orgUnits.length; i++) {\n if (this.orgUnits[i].value == orgUnit) {\n break;\n }\n }\n if (i == this.orgUnits.length)\n this.orgUnits.push({value: orgUnit});\n }\n return this.orgUnits.length - 1;\n };\n\n Card.prototype.$addCategory = function(category) {\n if (angular.isUndefined(this.categories)) {\n this.categories = [{value: category}];\n }\n else {\n for (var i = 0; i < this.categories.length; i++) {\n if (this.categories[i].value == category) {\n break;\n }\n }\n if (i == this.categories.length)\n this.categories.push({value: category});\n }\n };\n\n Card.prototype.$addEmail = function(type) {\n if (angular.isUndefined(this.emails)) {\n this.emails = [{type: type, value: ''}];\n }\n else if (_.isUndefined(_.find(this.emails, function(i) { return i.value === ''; }))) {\n this.emails.push({type: type, value: ''});\n }\n return this.emails.length - 1;\n };\n\n Card.prototype.$addPhone = function(type) {\n if (angular.isUndefined(this.phones)) {\n this.phones = [{type: type, value: ''}];\n }\n else if (_.isUndefined(_.find(this.phones, function(i) { return i.value === ''; }))) {\n this.phones.push({type: type, value: ''});\n }\n return this.phones.length - 1;\n };\n\n Card.prototype.$addUrl = function(type, url) {\n if (angular.isUndefined(this.urls)) {\n this.urls = [{type: type, value: url}];\n }\n else if (_.isUndefined(_.find(this.urls, function(i) { return i.value == url; }))) {\n this.urls.push({type: type, value: url});\n }\n return this.urls.length - 1;\n };\n\n Card.prototype.$addAddress = function(type, postoffice, street, street2, locality, region, country, postalcode) {\n if (angular.isUndefined(this.addresses)) {\n this.addresses = [{type: type, postoffice: postoffice, street: street, street2: street2, locality: locality, region: region, country: country, postalcode: postalcode}];\n }\n else if (!_.find(this.addresses, function(i) {\n return i.street == street &&\n i.street2 == street2 &&\n i.locality == locality &&\n i.country == country &&\n i.postalcode == postalcode;\n })) {\n this.addresses.push({type: type, postoffice: postoffice, street: street, street2: street2, locality: locality, region: region, country: country, postalcode: postalcode});\n }\n return this.addresses.length - 1;\n };\n\n Card.prototype.$addMember = function(email) {\n var card = new Card({email: email, emails: [{value: email}]}),\n i;\n if (angular.isUndefined(this.refs)) {\n this.refs = [card];\n }\n else if (email.length === 0) {\n this.refs.push(card);\n }\n else {\n for (i = 0; i < this.refs.length; i++) {\n if (this.refs[i].email == email) {\n break;\n }\n }\n if (i == this.refs.length)\n this.refs.push(card);\n }\n return this.refs.length - 1;\n };\n\n /**\n * @function $reset\n * @memberof Card.prototype\n * @desc Reset the original state the card's data.\n */\n Card.prototype.$reset = function() {\n var _this = this;\n angular.forEach(this, function(value, key) {\n if (key != 'constructor' && key[0] != '$') {\n delete _this[key];\n }\n });\n angular.extend(this, this.$shadowData);\n // Reinstanciate Card objects for list members\n angular.forEach(this.refs, function(o, i) {\n if (o.email) o.emails = [{value: o.email}];\n _this.refs[i] = new Card(o);\n });\n this.$shadowData = this.$omit(true);\n };\n\n /**\n * @function $updateMember\n * @memberof Card.prototype\n * @desc Update an existing list member from a Card instance.\n * A list member has the following attribtues:\n * - email\n * - reference\n * - fn\n * @param {number} index\n * @param {string} email\n * @param {Card} card\n */\n // Card.prototype.$updateMember = function(index, email, card) {\n // var ref = {\n // email: email,\n // emails: [{value: email}],\n // reference: card.c_name,\n // c_cn: card.$fullname()\n // };\n // this.refs[index] = new Card(ref);\n // };\n\n /**\n * @function $unwrap\n * @memberof Card.prototype\n * @desc Unwrap a promise and make a copy of the resolved data.\n * @param {object} futureCardData - a promise of the Card's data\n */\n Card.prototype.$unwrap = function(futureCardData) {\n var _this = this;\n\n // Expose the promise\n this.$futureCardData = futureCardData;\n\n // Resolve the promise\n this.$futureCardData.then(function(data) {\n // Calling $timeout will force Angular to refresh the view\n Card.$timeout(function() {\n _this.init(data);\n // Instanciate Card objects for list members\n angular.forEach(_this.refs, function(o, i) {\n if (o.email) o.emails = [{value: o.email}];\n o.id = o.reference;\n _this.refs[i] = new Card(o);\n });\n if (_this.birthday) {\n _this.birthday = new Date(_this.birthday * 1000);\n }\n // Make a copy of the data for an eventual reset\n _this.$shadowData = _this.$omit(true);\n });\n });\n };\n\n /**\n * @function $omit\n * @memberof Card.prototype\n * @desc Return a sanitized object used to send to the server.\n * @param {boolean} [deep] - make a deep copy if true\n * @return an object literal copy of the Card instance\n */\n Card.prototype.$omit = function(deep) {\n var card = {};\n angular.forEach(this, function(value, key) {\n if (key == 'refs') {\n card.refs = _.map(value, function(o) {\n return o.$omit(deep);\n });\n }\n else if (key != 'constructor' && key[0] != '$') {\n if (deep)\n card[key] = angular.copy(value);\n else\n card[key] = value;\n }\n });\n\n // We convert back our birthday object\n if (!deep) {\n if (card.birthday)\n card.birthday = card.birthday.getTime()/1000;\n else\n card.birthday = 0;\n }\n\n return card;\n };\n\n Card.prototype.toString = function() {\n var desc = this.id + ' ' + this.$$fullname;\n\n if (this.$$email)\n desc += ' <' + this.$$email + '>';\n\n return '[' + desc + ']';\n };\n})();\n"]} \ No newline at end of file diff --git a/UI/WebServerResources/js/Mailer.services.js b/UI/WebServerResources/js/Mailer.services.js index 1a03afab5..0cec70fd6 100644 --- a/UI/WebServerResources/js/Mailer.services.js +++ b/UI/WebServerResources/js/Mailer.services.js @@ -1,2 +1,2 @@ -!function(){"use strict";function Account(futureAccountData){"function"!=typeof futureAccountData.then&&(angular.extend(this,futureAccountData),_.each(this.identities,function(identity){identity.fullName?identity.full=identity.fullName+" <"+identity.email+">":identity.full="<"+identity.email+">"}),Account.$log.debug("Account: "+JSON.stringify(futureAccountData,void 0,2)))}Account.$factory=["$q","$timeout","$log","sgSettings","Resource","Mailbox","Message",function($q,$timeout,$log,Settings,Resource,Mailbox,Message){return angular.extend(Account,{$q:$q,$timeout:$timeout,$log:$log,$$resource:new Resource(Settings.baseURL(),Settings.activeUser()),$Mailbox:Mailbox,$Message:Message}),Account}];try{angular.module("SOGo.MailerUI")}catch(e){angular.module("SOGo.MailerUI",["SOGo.Common"])}angular.module("SOGo.MailerUI").factory("Account",Account.$factory),Account.$findAll=function(data){var collection=[];return data&&angular.forEach(data,function(o,i){o.id=i,collection[i]=new Account(o)}),collection},Account.prototype.$getMailboxes=function(options){var _this=this,deferred=Account.$q.defer();return!this.$mailboxes||options&&options.reload?Account.$Mailbox.$find(this).then(function(data){_this.$mailboxes=data,_this.$flattenMailboxes({reload:!0}),deferred.resolve(_this.$mailboxes)}):deferred.resolve(this.$mailboxes),deferred.promise},Account.prototype.$flattenMailboxes=function(options){var _this=this,allMailboxes=[],_visit=function(mailboxes){_.each(mailboxes,function(o){allMailboxes.push(o),o.children&&o.children.length>0&&_visit(o.children)})};return!this.$$flattenMailboxes||options&&options.reload?(_visit(this.$mailboxes),_this.$$flattenMailboxes=allMailboxes):allMailboxes=this.$$flattenMailboxes,allMailboxes},Account.prototype.$getMailboxByType=function(type){var mailbox,_find=function(mailboxes){var mailbox=_.find(mailboxes,function(o){return o.type==type});return mailbox||angular.forEach(mailboxes,function(o){!mailbox&&o.children&&o.children.length>0&&(mailbox=_find(o.children))}),mailbox};mailbox=_find(this.$mailboxes),console.debug(mailbox),console.debug(this.specialMailboxes)},Account.prototype.$getMailboxByPath=function(path){var mailbox=null,_find=function(mailboxes){var mailbox=_.find(mailboxes,function(o){return o.path==path});return mailbox||angular.forEach(mailboxes,function(o){!mailbox&&o.children&&o.children.length>0&&(mailbox=_find(o.children))}),mailbox};return mailbox=_find(this.$mailboxes)},Account.prototype.$newMailbox=function(path,name){var _this=this,deferred=Account.$q.defer();return Account.$$resource.post(path,"createFolder",{name:name}).then(function(){_this.$getMailboxes({reload:!0}),deferred.resolve()},function(response){deferred.reject(response.error)}),deferred.promise},Account.prototype.$newMessage=function(){var _this=this;return Account.$$resource.fetch(this.id.toString(),"compose").then(function(data){Account.$log.debug("New message (compose): "+JSON.stringify(data,void 0,2));var message=new Account.$Message(data.accountId,_this.$getMailboxByPath(data.mailboxPath),data);return message}).then(function(message){return Account.$$resource.fetch(message.$absolutePath({asDraft:!0}),"edit").then(function(data){return Account.$log.debug("New message (edit): "+JSON.stringify(data,void 0,2)),angular.extend(message.editable,data),message})})},Account.prototype.$addDelegate=function(user){var _this=this,deferred=Account.$q.defer(),param={uid:user.uid};return!user.uid||_.indexOf(_.pluck(this.delegates,"uid"),user.uid)>-1?deferred.resolve():Account.$$resource.fetch(this.id.toString(),"addDelegate",param).then(function(){_this.delegates.push(user),deferred.resolve(_this.users)},function(data,status){deferred.reject(l("An error occured please try again."))}),deferred.promise},Account.prototype.$removeDelegate=function(uid){var _this=this,param={uid:uid};return Account.$$resource.fetch(this.id.toString(),"removeDelegate",param).then(function(){var i=_.indexOf(_.pluck(_this.delegates,"uid"),uid);i>=0&&_this.delegates.splice(i,1)})}}(),function(){"use strict";function Mailbox(account,futureMailboxData){if(this.$account=account,"function"!=typeof futureMailboxData.then){if(this.init(futureMailboxData),this.name&&!this.path){var newMailboxData=Mailbox.$$resource.create("createFolder",this.name);this.$unwrap(newMailboxData)}}else this.$unwrap(futureMailboxData)}Mailbox.$factory=["$q","$timeout","$log","sgSettings","Resource","Message","Acl","Preferences","sgMailbox_PRELOAD",function($q,$timeout,$log,Settings,Resource,Message,Acl,Preferences,PRELOAD){return angular.extend(Mailbox,{$q:$q,$timeout:$timeout,$log:$log,$$resource:new Resource(Settings.activeUser("folderURL")+"Mail",Settings.activeUser()),$Message:Message,$$Acl:Acl,$Preferences:Preferences,$query:{sort:"date",asc:0},selectedFolder:null,$refreshTimeout:null,PRELOAD:PRELOAD}),Preferences.ready().then(function(){Preferences.settings.Mail.SortingState&&(Mailbox.$query.sort=Preferences.settings.Mail.SortingState[0],Mailbox.$query.asc=parseInt(Preferences.settings.Mail.SortingState[1]))}),Mailbox}];try{angular.module("SOGo.MailerUI")}catch(e){angular.module("SOGo.MailerUI",["SOGo.Common"])}angular.module("SOGo.MailerUI").constant("sgMailbox_PRELOAD",{LOOKAHEAD:50,SIZE:100}).factory("Mailbox",Mailbox.$factory),Mailbox.$find=function(account){var futureMailboxData;return futureMailboxData=this.$$resource.fetch(account.id.toString(),"view"),Mailbox.$unwrapCollection(account,futureMailboxData)},Mailbox.$unwrapCollection=function(account,futureMailboxData){var collection=[],createMailboxes=function(level,mailbox){for(var i=0;istartIndex&&max>startIndex;startIndex++)angular.isDefined(this.$messages[startIndex].subject)||this.$messages[startIndex].loading?endIndex++:(uids.push(this.$messages[startIndex].uid),this.$messages[startIndex].loading=!0);Mailbox.$log.debug("Loading UIDs "+uids.join(" ")),futureHeadersData=Mailbox.$$resource.post(this.id,"headers",{uids:uids}),this.$unwrapHeaders(futureHeadersData)}return loaded},Mailbox.prototype.isEditable=function(){return"folder"==this.type},Mailbox.prototype.$rename=function(){var findParent,parent,children,i,_this=this,deferred=Mailbox.$q.defer();return this.name==this.$shadowData.name?(deferred.resolve(),deferred.promise):(findParent=function(parent,children){var parentMailbox=null,mailbox=_.find(children,function(o){return o.path==_this.path});return mailbox?parentMailbox=parent:angular.forEach(children,function(o){!parentMailbox&&o.children&&o.children.length>0&&(parentMailbox=findParent(o,o.children))}),parentMailbox},parent=findParent(null,this.$account.$mailboxes),children=null===parent?this.$account.$mailboxes:parent.children,i=_.indexOf(_.pluck(children,"id"),this.id),this.$save().then(function(data){var sibling;angular.extend(_this,data),_this.id=_this.$id(),children.splice(i,1),sibling=_.find(children,function(o){return Mailbox.$log.debug(o.name+" ? "+_this.name),"folder"==o.type&&o.name.localeCompare(_this.name)>0}),i=sibling?_.indexOf(_.pluck(children,"id"),sibling.id):children.length,children.splice(i,0,_this),deferred.resolve()},function(data){deferred.reject(data)}),deferred.promise)},Mailbox.prototype.$compact=function(){return Mailbox.$$resource.post(this.id,"expunge")},Mailbox.prototype.$setFolderAs=function(type){return Mailbox.$$resource.post(this.id,"setAs"+type+"Folder")},Mailbox.prototype.$emptyTrash=function(){var promise,_this=this,deferred=Mailbox.$q.defer();return promise=Mailbox.$$resource.post(this.id,"emptyTrash"),promise.then(function(){_this.$messages=[],_this.uidsMap={},_this.unseenCount=0},function(data,status){deferred.reject(data)}),deferred.promise},Mailbox.prototype.$markAsRead=function(){return Mailbox.$$resource.post(this.id,"markRead")},Mailbox.prototype.$flagMessages=function(uids,flags,operation){var data={msgUIDs:uids,flags:flags,operation:operation};return Mailbox.$$resource.post(this.id,"addOrRemoveLabel",data)},Mailbox.prototype.$delete=function(){var promise,_this=this,deferred=Mailbox.$q.defer();return promise=Mailbox.$$resource.remove(this.id),promise.then(function(){_this.$account.$getMailboxes({reload:!0}),deferred.resolve(!0)},function(data,status){deferred.reject(data)}),deferred.promise},Mailbox.prototype.$deleteMessages=function(uids){return Mailbox.$$resource.post(this.id,"batchDelete",{uids:uids})},Mailbox.prototype.$copyMessages=function(uids,folder){return Mailbox.$$resource.post(this.id,"copyMessages",{uids:uids,folder:folder})},Mailbox.prototype.$moveMessages=function(uids,folder){return Mailbox.$$resource.post(this.id,"moveMessages",{uids:uids,folder:folder})},Mailbox.prototype.$reset=function(){var _this=this;angular.forEach(this,function(value,key){"constructor"!=key&&"children"!=key&&"$"!=key[0]&&delete _this[key]}),angular.extend(this,this.$shadowData),this.$shadowData=this.$omit()},Mailbox.prototype.$save=function(){var _this=this;return Mailbox.$$resource.save(this.id,this.$omit()).then(function(data){return _this.$shadowData=_this.$omit(),Mailbox.$log.debug(JSON.stringify(data,void 0,2)),data},function(data){Mailbox.$log.error(JSON.stringify(data,void 0,2)),_this.$reset()})},Mailbox.prototype.$newMailbox=function(path,name){return this.$account.$newMailbox(path,name)},Mailbox.prototype.$omit=function(){var mailbox={};return angular.forEach(this,function(value,key){"constructor"!=key&&"children"!=key&&"$"!=key[0]&&(mailbox[key]=value)}),mailbox},Mailbox.prototype.$unwrap=function(futureMailboxData){var _this=this,deferred=Mailbox.$q.defer();return this.$futureMailboxData=futureMailboxData,this.$futureMailboxData.then(function(data){Mailbox.$timeout(function(){var uids,headers;_this.init(data),_this.uids&&(Mailbox.$log.debug("unwrapping "+data.uids.length+" messages"),headers=_.invoke(_this.headers[0],"toLowerCase"),_this.headers.splice(0,1),_this.threaded&&(uids=_this.uids[0],_this.uids.splice(0,1)),_.reduce(_this.uids,function(msgs,msg,i){var data;return data=_this.threaded?_.object(uids,msg):{uid:msg.toString()},_this.uidsMap[data.uid]=i,msgs.push(new Mailbox.$Message(_this.$account.id,_this,data)),msgs},_this.$messages),_.each(_this.headers,function(data){var msg=_.object(headers,data),i=_this.uidsMap[msg.uid.toString()];_.extend(_this.$messages[i],msg)})),Mailbox.$log.debug("mailbox "+_this.id+" ready"),_this.$isLoading=!1,deferred.resolve(_this.$messages)})},function(data){angular.extend(_this,data),_this.isError=!0,deferred.reject()}),deferred.promise},Mailbox.prototype.$unwrapHeaders=function(futureHeadersData){var _this=this;futureHeadersData.then(function(data){Mailbox.$timeout(function(){var headers,j;data.length>0&&(headers=_.invoke(data[0],"toLowerCase"),data.splice(0,1),_.each(data,function(messageHeaders){messageHeaders=_.object(headers,messageHeaders),j=_this.uidsMap[messageHeaders.uid.toString()],angular.isDefined(j)&&_.extend(_this.$messages[j],messageHeaders)}))})})}}(),function(){"use strict";function Message(accountId,mailbox,futureMessageData){this.accountId=accountId,this.$mailbox=mailbox,this.$hasUnsafeContent=!1,this.$loadUnsafeContent=!1,this.editable={to:[],cc:[],bcc:[]},"function"!=typeof futureMessageData.then?(angular.extend(this,futureMessageData),this.id=this.$absolutePath(),this.$formatFullAddresses()):this.$unwrap(futureMessageData),this.selected=!1}Message.$factory=["$q","$timeout","$log","$sce","sgSettings","Gravatar","Resource","Preferences",function($q,$timeout,$log,$sce,Settings,Gravatar,Resource,Preferences){return angular.extend(Message,{$q:$q,$timeout:$timeout,$log:$log,$sce:$sce,$gravatar:Gravatar,$$resource:new Resource(Settings.activeUser("folderURL")+"Mail",Settings.activeUser())}),Preferences.ready().then(function(){Preferences.defaults.SOGoMailLabelsColors&&(Message.$tags=Preferences.defaults.SOGoMailLabelsColors)}),Message}];try{angular.module("SOGo.MailerUI")}catch(e){angular.module("SOGo.MailerUI",["SOGo.Common"])}angular.module("SOGo.MailerUI").factory("Message",Message.$factory),Message.filterTags=function(query){var re=new RegExp(query,"i");return _.filter(_.keys(Message.$tags),function(tag){var value=Message.$tags[tag];return-1!=value[0].search(re)})},Message.prototype.$absolutePath=function(options){var path;return path=_.map(this.$mailbox.path.split("/"),function(component){return"folder"+component.asCSSIdentifier()}),path.splice(0,0,this.accountId),options&&options.asDraft&&this.draftId?path.push(this.draftId):path.push(this.uid),path.join("/")},Message.prototype.$setUID=function(uid){var oldUID=this.uid||-1;oldUID!=uid&&(this.uid=uid,this.id=this.$absolutePath(),oldUID>-1&&this.$mailbox.uidsMap[oldUID]&&(this.$mailbox.uidsMap[uid]=this.$mailbox.uidsMap[oldUID],this.$mailbox.uidsMap[oldUID]=null))},Message.prototype.$formatFullAddresses=function(){var _this=this;_.each(["from","to","cc","bcc","reply-to"],function(type){_.each(_this[type],function(data,i){data.name&&data.name!=data.email?data.full=data.name+" <"+data.email+">":data.full="<"+data.email+">"})})},Message.prototype.$shortAddress=function(type){var address="";return this[type]&&this[type].length>0&&(address=this[type][0].name||this[type][0].email||""),address},Message.prototype.loadUnsafeContent=function(){this.$loadUnsafeContent=!0},Message.prototype.$content=function(){var _this=this,parts=[],_visit=function(part){part.msgclass="msg-attachment-other","UIxMailPartAlternativeViewer"==part.type?_visit(_.find(part.content,function(alternatePart){return part.preferredPart==alternatePart.contentType})):angular.isArray(part.content)?_.each(part.content,function(mixedPart){_visit(mixedPart)}):(angular.isUndefined(part.safeContent)&&(part.safeContent=part.content,_this.$hasUnsafeContent=part.safeContent.indexOf(" unsafe-")>-1),"UIxMailPartHTMLViewer"==part.type?(part.html=!0,_this.$loadUnsafeContent?(angular.isUndefined(part.unsafeContent)&&(part.unsafeContent=document.createElement("div"),part.unsafeContent.innerHTML=part.safeContent,angular.forEach(["src","data","classid","background","style"],function(suffix){var element,value,i,elements=part.unsafeContent.querySelectorAll("[unsafe-"+suffix+"]");for(i=0;i":identity.full="<"+identity.email+">"}),Account.$log.debug("Account: "+JSON.stringify(futureAccountData,void 0,2)))}Account.$factory=["$q","$timeout","$log","sgSettings","Resource","Mailbox","Message",function($q,$timeout,$log,Settings,Resource,Mailbox,Message){return angular.extend(Account,{$q:$q,$timeout:$timeout,$log:$log,$$resource:new Resource(Settings.baseURL(),Settings.activeUser()),$Mailbox:Mailbox,$Message:Message}),Account}];try{angular.module("SOGo.MailerUI")}catch(e){angular.module("SOGo.MailerUI",["SOGo.Common"])}angular.module("SOGo.MailerUI").factory("Account",Account.$factory),Account.$findAll=function(data){var collection=[];return data&&angular.forEach(data,function(o,i){o.id=i,collection[i]=new Account(o)}),collection},Account.prototype.$getMailboxes=function(options){var _this=this,deferred=Account.$q.defer();return!this.$mailboxes||options&&options.reload?Account.$Mailbox.$find(this).then(function(data){_this.$mailboxes=data,_this.$flattenMailboxes({reload:!0}),deferred.resolve(_this.$mailboxes)}):deferred.resolve(this.$mailboxes),deferred.promise},Account.prototype.$flattenMailboxes=function(options){var _this=this,allMailboxes=[],_visit=function(mailboxes){_.each(mailboxes,function(o){allMailboxes.push(o),o.children&&o.children.length>0&&_visit(o.children)})};return!this.$$flattenMailboxes||options&&options.reload?(_visit(this.$mailboxes),_this.$$flattenMailboxes=allMailboxes):allMailboxes=this.$$flattenMailboxes,allMailboxes},Account.prototype.$getMailboxByType=function(type){var mailbox,_find=function(mailboxes){var mailbox=_.find(mailboxes,function(o){return o.type==type});return mailbox||angular.forEach(mailboxes,function(o){!mailbox&&o.children&&o.children.length>0&&(mailbox=_find(o.children))}),mailbox};mailbox=_find(this.$mailboxes),console.debug(mailbox),console.debug(this.specialMailboxes)},Account.prototype.$getMailboxByPath=function(path){var mailbox=null,_find=function(mailboxes){var mailbox=_.find(mailboxes,function(o){return o.path==path});return mailbox||angular.forEach(mailboxes,function(o){!mailbox&&o.children&&o.children.length>0&&(mailbox=_find(o.children))}),mailbox};return mailbox=_find(this.$mailboxes)},Account.prototype.$newMailbox=function(path,name){var _this=this;return Account.$$resource.post(path.toString(),"createFolder",{name:name}).then(function(){_this.$getMailboxes({reload:!0})})},Account.prototype.$newMessage=function(){var _this=this;return Account.$$resource.fetch(this.id.toString(),"compose").then(function(data){Account.$log.debug("New message (compose): "+JSON.stringify(data,void 0,2));var message=new Account.$Message(data.accountId,_this.$getMailboxByPath(data.mailboxPath),data);return message}).then(function(message){return Account.$$resource.fetch(message.$absolutePath({asDraft:!0}),"edit").then(function(data){return Account.$log.debug("New message (edit): "+JSON.stringify(data,void 0,2)),angular.extend(message.editable,data),message})})},Account.prototype.$addDelegate=function(user){var _this=this,deferred=Account.$q.defer(),param={uid:user.uid};return!user.uid||_.indexOf(_.pluck(this.delegates,"uid"),user.uid)>-1?deferred.resolve():Account.$$resource.fetch(this.id.toString(),"addDelegate",param).then(function(){_this.delegates.push(user),deferred.resolve(_this.users)},function(data,status){deferred.reject(l("An error occured please try again."))}),deferred.promise},Account.prototype.$removeDelegate=function(uid){var _this=this,param={uid:uid};return Account.$$resource.fetch(this.id.toString(),"removeDelegate",param).then(function(){var i=_.indexOf(_.pluck(_this.delegates,"uid"),uid);i>=0&&_this.delegates.splice(i,1)})}}(),function(){"use strict";function Mailbox(account,futureMailboxData){if(this.$account=account,"function"!=typeof futureMailboxData.then){if(this.init(futureMailboxData),this.name&&!this.path){var newMailboxData=Mailbox.$$resource.create("createFolder",this.name);this.$unwrap(newMailboxData)}}else this.$unwrap(futureMailboxData)}Mailbox.$factory=["$q","$timeout","$log","sgSettings","Resource","Message","Acl","Preferences","sgMailbox_PRELOAD",function($q,$timeout,$log,Settings,Resource,Message,Acl,Preferences,PRELOAD){return angular.extend(Mailbox,{$q:$q,$timeout:$timeout,$log:$log,$$resource:new Resource(Settings.activeUser("folderURL")+"Mail",Settings.activeUser()),$Message:Message,$$Acl:Acl,$Preferences:Preferences,$query:{sort:"date",asc:0},selectedFolder:null,$refreshTimeout:null,PRELOAD:PRELOAD}),Preferences.ready().then(function(){Preferences.settings.Mail.SortingState&&(Mailbox.$query.sort=Preferences.settings.Mail.SortingState[0],Mailbox.$query.asc=parseInt(Preferences.settings.Mail.SortingState[1]))}),Mailbox}];try{angular.module("SOGo.MailerUI")}catch(e){angular.module("SOGo.MailerUI",["SOGo.Common"])}angular.module("SOGo.MailerUI").constant("sgMailbox_PRELOAD",{LOOKAHEAD:50,SIZE:100}).factory("Mailbox",Mailbox.$factory),Mailbox.$find=function(account){var futureMailboxData;return futureMailboxData=this.$$resource.fetch(account.id.toString(),"view"),Mailbox.$unwrapCollection(account,futureMailboxData)},Mailbox.$unwrapCollection=function(account,futureMailboxData){var collection=[],createMailboxes=function(level,mailbox){for(var i=0;istartIndex&&max>startIndex;startIndex++)angular.isDefined(this.$messages[startIndex].subject)||this.$messages[startIndex].loading?endIndex++:(uids.push(this.$messages[startIndex].uid),this.$messages[startIndex].loading=!0);Mailbox.$log.debug("Loading UIDs "+uids.join(" ")),futureHeadersData=Mailbox.$$resource.post(this.id,"headers",{uids:uids}),this.$unwrapHeaders(futureHeadersData)}return loaded},Mailbox.prototype.isEditable=function(){return"folder"==this.type},Mailbox.prototype.$rename=function(){var findParent,parent,children,i,_this=this,deferred=Mailbox.$q.defer();return this.name==this.$shadowData.name?(deferred.resolve(),deferred.promise):(findParent=function(parent,children){var parentMailbox=null,mailbox=_.find(children,function(o){return o.path==_this.path});return mailbox?parentMailbox=parent:angular.forEach(children,function(o){!parentMailbox&&o.children&&o.children.length>0&&(parentMailbox=findParent(o,o.children))}),parentMailbox},parent=findParent(null,this.$account.$mailboxes),children=null===parent?this.$account.$mailboxes:parent.children,i=_.indexOf(_.pluck(children,"id"),this.id),this.$save().then(function(data){var sibling;angular.extend(_this,data),_this.id=_this.$id(),children.splice(i,1),sibling=_.find(children,function(o){return Mailbox.$log.debug(o.name+" ? "+_this.name),"folder"==o.type&&o.name.localeCompare(_this.name)>0}),i=sibling?_.indexOf(_.pluck(children,"id"),sibling.id):children.length,children.splice(i,0,_this),deferred.resolve()},function(data){deferred.reject(data)}),deferred.promise)},Mailbox.prototype.$compact=function(){return Mailbox.$$resource.post(this.id,"expunge")},Mailbox.prototype.$setFolderAs=function(type){return Mailbox.$$resource.post(this.id,"setAs"+type+"Folder")},Mailbox.prototype.$emptyTrash=function(){var _this=this;return Mailbox.$$resource.post(this.id,"emptyTrash").then(function(){_this.$messages=[],_this.uidsMap={},_this.unseenCount=0,angular.isDefined(_this.children)&&_this.children.length&&_this.$account.$getMailboxes({reload:!0})})},Mailbox.prototype.$markAsRead=function(){return Mailbox.$$resource.post(this.id,"markRead")},Mailbox.prototype.$flagMessages=function(uids,flags,operation){var data={msgUIDs:uids,flags:flags,operation:operation};return Mailbox.$$resource.post(this.id,"addOrRemoveLabel",data)},Mailbox.prototype.$delete=function(){var promise,_this=this,deferred=Mailbox.$q.defer();return promise=Mailbox.$$resource.remove(this.id),promise.then(function(){_this.$account.$getMailboxes({reload:!0}),deferred.resolve(!0)},function(data,status){deferred.reject(data)}),deferred.promise},Mailbox.prototype.$deleteMessages=function(uids){return Mailbox.$$resource.post(this.id,"batchDelete",{uids:uids})},Mailbox.prototype.$copyMessages=function(uids,folder){return Mailbox.$$resource.post(this.id,"copyMessages",{uids:uids,folder:folder})},Mailbox.prototype.$moveMessages=function(uids,folder){return Mailbox.$$resource.post(this.id,"moveMessages",{uids:uids,folder:folder})},Mailbox.prototype.$reset=function(){var _this=this;angular.forEach(this,function(value,key){"constructor"!=key&&"children"!=key&&"$"!=key[0]&&delete _this[key]}),angular.extend(this,this.$shadowData),this.$shadowData=this.$omit()},Mailbox.prototype.$save=function(){var _this=this;return Mailbox.$$resource.save(this.id,this.$omit()).then(function(data){return _this.$shadowData=_this.$omit(),Mailbox.$log.debug(JSON.stringify(data,void 0,2)),data},function(data){Mailbox.$log.error(JSON.stringify(data,void 0,2)),_this.$reset()})},Mailbox.prototype.$newMailbox=function(path,name){return this.$account.$newMailbox(path,name)},Mailbox.prototype.$omit=function(){var mailbox={};return angular.forEach(this,function(value,key){"constructor"!=key&&"children"!=key&&"$"!=key[0]&&(mailbox[key]=value)}),mailbox},Mailbox.prototype.$unwrap=function(futureMailboxData){var _this=this,deferred=Mailbox.$q.defer();return this.$futureMailboxData=futureMailboxData,this.$futureMailboxData.then(function(data){Mailbox.$timeout(function(){var uids,headers;_this.init(data),_this.uids&&(Mailbox.$log.debug("unwrapping "+data.uids.length+" messages"),headers=_.invoke(_this.headers[0],"toLowerCase"),_this.headers.splice(0,1),_this.threaded&&(uids=_this.uids[0],_this.uids.splice(0,1)),_.reduce(_this.uids,function(msgs,msg,i){var data;return data=_this.threaded?_.object(uids,msg):{uid:msg.toString()},_this.uidsMap[data.uid]=i,msgs.push(new Mailbox.$Message(_this.$account.id,_this,data)),msgs},_this.$messages),_.each(_this.headers,function(data){var msg=_.object(headers,data),i=_this.uidsMap[msg.uid.toString()];_.extend(_this.$messages[i],msg)})),Mailbox.$log.debug("mailbox "+_this.id+" ready"),_this.$isLoading=!1,deferred.resolve(_this.$messages)})},function(data){angular.extend(_this,data),_this.isError=!0,deferred.reject()}),deferred.promise},Mailbox.prototype.$unwrapHeaders=function(futureHeadersData){var _this=this;futureHeadersData.then(function(data){Mailbox.$timeout(function(){var headers,j;data.length>0&&(headers=_.invoke(data[0],"toLowerCase"),data.splice(0,1),_.each(data,function(messageHeaders){messageHeaders=_.object(headers,messageHeaders),j=_this.uidsMap[messageHeaders.uid.toString()],angular.isDefined(j)&&_.extend(_this.$messages[j],messageHeaders)}))})})}}(),function(){"use strict";function Message(accountId,mailbox,futureMessageData){this.accountId=accountId,this.$mailbox=mailbox,this.$hasUnsafeContent=!1,this.$loadUnsafeContent=!1,this.$showDetailedRecipients=!1,this.editable={to:[],cc:[],bcc:[]},"function"!=typeof futureMessageData.then?(angular.extend(this,futureMessageData),this.id=this.$absolutePath(),this.$formatFullAddresses()):this.$unwrap(futureMessageData),this.selected=!1}Message.$factory=["$q","$timeout","$log","$sce","sgSettings","Gravatar","Resource","Preferences",function($q,$timeout,$log,$sce,Settings,Gravatar,Resource,Preferences){return angular.extend(Message,{$q:$q,$timeout:$timeout,$log:$log,$sce:$sce,$gravatar:Gravatar,$$resource:new Resource(Settings.activeUser("folderURL")+"Mail",Settings.activeUser())}),Preferences.ready().then(function(){Preferences.defaults.SOGoMailLabelsColors&&(Message.$tags=Preferences.defaults.SOGoMailLabelsColors)}),Message}];try{angular.module("SOGo.MailerUI")}catch(e){angular.module("SOGo.MailerUI",["SOGo.Common"])}angular.module("SOGo.MailerUI").factory("Message",Message.$factory),Message.filterTags=function(query){var re=new RegExp(query,"i");return _.filter(_.keys(Message.$tags),function(tag){var value=Message.$tags[tag];return-1!=value[0].search(re)})},Message.prototype.$absolutePath=function(options){var path;return path=_.map(this.$mailbox.path.split("/"),function(component){return"folder"+component.asCSSIdentifier()}),path.splice(0,0,this.accountId),options&&options.asDraft&&this.draftId?path.push(this.draftId):path.push(this.uid),path.join("/")},Message.prototype.$setUID=function(uid){var oldUID=this.uid||-1;oldUID!=uid&&(this.uid=uid,this.id=this.$absolutePath(),oldUID>-1&&this.$mailbox.uidsMap[oldUID]&&(this.$mailbox.uidsMap[uid]=this.$mailbox.uidsMap[oldUID],this.$mailbox.uidsMap[oldUID]=null))},Message.prototype.$formatFullAddresses=function(){var _this=this,identities=_.pluck(_this.$mailbox.$account.identities,"email");_.each(["from","to","cc","bcc","reply-to"],function(type){_.each(_this[type],function(data,i){data.name&&data.name!=data.email?(data.full=data.name+" <"+data.email+">",data.name.split(" ").length&&(data.shortname=data.name.split(" ")[0].replace("'",""))):(data.full="<"+data.email+">",data.shortname=data.email.split("@")[0]),data.image=Message.$gravatar(data.email,32),_.indexOf(identities,data.email)>=0&&(data.shortname="me")})})},Message.prototype.$shortRecipients=function(){var _this=this,result=[];return _.each(["to","cc","bcc"],function(type){_.each(_this[type],function(data,i){result.push(data.shortname)})}),result.join(", ")},Message.prototype.$shortAddress=function(type){var address="";return this[type]&&this[type].length>0&&(address=this[type][0].name||this[type][0].email||""),address},Message.prototype.loadUnsafeContent=function(){this.$loadUnsafeContent=!0},Message.prototype.showDetailedRecipients=function(){this.$showDetailedRecipients=!0},Message.prototype.$content=function(){var _this=this,parts=[],_visit=function(part){part.msgclass="msg-attachment-other","UIxMailPartAlternativeViewer"==part.type?_visit(_.find(part.content,function(alternatePart){return part.preferredPart==alternatePart.contentType})):angular.isArray(part.content)?_.each(part.content,function(mixedPart){_visit(mixedPart)}):(angular.isUndefined(part.safeContent)&&(part.safeContent=part.content,_this.$hasUnsafeContent=part.safeContent.indexOf(" unsafe-")>-1),"UIxMailPartHTMLViewer"==part.type?(part.html=!0,_this.$loadUnsafeContent?(angular.isUndefined(part.unsafeContent)&&(part.unsafeContent=document.createElement("div"),part.unsafeContent.innerHTML=part.safeContent,angular.forEach(["src","data","classid","background","style"],function(suffix){var element,value,i,elements=part.unsafeContent.querySelectorAll("[unsafe-"+suffix+"]");for(i=0;i';\n else\n identity.full = '<' + identity.email + '>';\n });\n Account.$log.debug('Account: ' + JSON.stringify(futureAccountData, undefined, 2));\n }\n else {\n // The promise will be unwrapped first\n //this.$unwrap(futureAccountData);\n }\n }\n\n /**\n * @memberof Account\n * @desc The factory we'll use to register with Angular\n * @returns the Account constructor\n */\n Account.$factory = ['$q', '$timeout', '$log', 'sgSettings', 'Resource', 'Mailbox', 'Message', function($q, $timeout, $log, Settings, Resource, Mailbox, Message) {\n angular.extend(Account, {\n $q: $q,\n $timeout: $timeout,\n $log: $log,\n $$resource: new Resource(Settings.baseURL(), Settings.activeUser()),\n $Mailbox: Mailbox,\n $Message: Message\n });\n\n return Account; // return constructor\n }];\n\n /**\n * @module SOGo.MailerUI\n * @desc Factory registration of Account in Angular module.\n */\n try {\n angular.module('SOGo.MailerUI');\n }\n catch(e) {\n angular.module('SOGo.MailerUI', ['SOGo.Common']);\n }\n angular.module('SOGo.MailerUI')\n .factory('Account', Account.$factory);\n\n /**\n * @memberof Account\n * @desc Set the list of accounts and instanciate a new Account object for each item.\n * @param {array} [data] - the metadata of the accounts\n * @returns the list of accounts\n */\n Account.$findAll = function(data) {\n var collection = [];\n if (data) {\n // Each entry is spun up as an Account instance\n angular.forEach(data, function(o, i) {\n o.id = i;\n collection[i] = new Account(o);\n });\n }\n return collection;\n };\n\n /**\n * @function $getMailboxes\n * @memberof Account.prototype\n * @desc Fetch the list of mailboxes for the current account.\n * @param {object} [options] - force a reload by setting 'reload' to true\n * @returns a promise of the HTTP operation\n */\n Account.prototype.$getMailboxes = function(options) {\n var _this = this,\n deferred = Account.$q.defer();\n\n if (this.$mailboxes && !(options && options.reload)) {\n deferred.resolve(this.$mailboxes);\n }\n else {\n Account.$Mailbox.$find(this).then(function(data) {\n _this.$mailboxes = data;\n _this.$flattenMailboxes({reload: true});\n deferred.resolve(_this.$mailboxes);\n });\n }\n\n return deferred.promise;\n };\n\n /**\n * @function $flattenMailboxes\n * @memberof Account.prototype\n * @desc Get a flatten array of the mailboxes.\n * @param {object} [options] - force a reload\n * @returns an array of Mailbox instances\n */\n Account.prototype.$flattenMailboxes = function(options) {\n var _this = this,\n allMailboxes = [],\n _visit = function(mailboxes) {\n _.each(mailboxes, function(o) {\n allMailboxes.push(o);\n if (o.children && o.children.length > 0) {\n _visit(o.children);\n }\n });\n };\n\n if (this.$$flattenMailboxes && !(options && options.reload)) {\n allMailboxes = this.$$flattenMailboxes;\n }\n else {\n _visit(this.$mailboxes);\n _this.$$flattenMailboxes = allMailboxes;\n }\n\n return allMailboxes;\n };\n\n Account.prototype.$getMailboxByType = function(type) {\n var mailbox,\n // Recursive find function\n _find = function(mailboxes) {\n var mailbox = _.find(mailboxes, function(o) {\n return o.type == type;\n });\n if (!mailbox) {\n angular.forEach(mailboxes, function(o) {\n if (!mailbox && o.children && o.children.length > 0) {\n mailbox = _find(o.children);\n }\n });\n }\n return mailbox;\n };\n mailbox = _find(this.$mailboxes);\n\n console.debug(mailbox);\n console.debug(this.specialMailboxes);\n };\n\n /**\n * @function $getMailboxByPath\n * @memberof Account.prototype\n * @desc Recursively find a mailbox using its path\n * @returns a promise of the HTTP operation\n */\n Account.prototype.$getMailboxByPath = function(path) {\n var mailbox = null,\n // Recursive find function\n _find = function(mailboxes) {\n var mailbox = _.find(mailboxes, function(o) {\n return o.path == path;\n });\n if (!mailbox) {\n angular.forEach(mailboxes, function(o) {\n if (!mailbox && o.children && o.children.length > 0) {\n mailbox = _find(o.children);\n }\n });\n }\n return mailbox;\n };\n mailbox = _find(this.$mailboxes);\n\n return mailbox;\n };\n\n /**\n * @function $newMailbox\n * @memberof Account.prototype\n * @desc Create a new mailbox on the server and refresh the list of mailboxes.\n * @returns a promise of the HTTP operations\n */\n Account.prototype.$newMailbox = function(path, name) {\n var _this = this,\n deferred = Account.$q.defer();\n\n Account.$$resource.post(path, 'createFolder', {name: name}).then(function() {\n _this.$getMailboxes({reload: true});\n deferred.resolve();\n }, function(response) {\n deferred.reject(response.error);\n });\n\n return deferred.promise;\n };\n\n /**\n * @function $newMessage\n * @memberof Account.prototype\n * @desc Prepare a new Message object associated to the appropriate mailbox.\n * @returns a promise of the HTTP operations\n */\n Account.prototype.$newMessage = function() {\n var _this = this;\n\n // Query account for draft folder and draft UID\n return Account.$$resource.fetch(this.id.toString(), 'compose').then(function(data) {\n Account.$log.debug('New message (compose): ' + JSON.stringify(data, undefined, 2));\n var message = new Account.$Message(data.accountId, _this.$getMailboxByPath(data.mailboxPath), data);\n return message;\n }).then(function(message) {\n // Fetch draft initial data\n return Account.$$resource.fetch(message.$absolutePath({asDraft: true}), 'edit').then(function(data) {\n Account.$log.debug('New message (edit): ' + JSON.stringify(data, undefined, 2));\n angular.extend(message.editable, data);\n return message;\n });\n });\n };\n\n /**\n * @function $addDelegate\n * @memberof Account.prototype\n * @param {Object} user - a User object with minimal set of attributes (uid, isGroup, cn, c_email)\n * @desc Remove a user from the account's delegates\n * @see {@link User.$filter}\n */\n Account.prototype.$addDelegate = function(user) {\n var _this = this,\n deferred = Account.$q.defer(),\n param = {uid: user.uid};\n if (!user.uid || _.indexOf(_.pluck(this.delegates, 'uid'), user.uid) > -1) {\n // No UID specified or user already in delegates\n deferred.resolve();\n }\n else {\n Account.$$resource.fetch(this.id.toString(), 'addDelegate', param).then(function() {\n _this.delegates.push(user);\n deferred.resolve(_this.users);\n }, function(data, status) {\n deferred.reject(l('An error occured please try again.'));\n });\n }\n return deferred.promise;\n };\n\n /**\n * @function $removeDelegate\n * @memberof Account.prototype\n * @param {Object} user - a User object with minimal set of attributes (uid, isGroup, cn, c_email)\n * @desc Remove a user from the account's delegates\n * @return a promise of the server call to remove the user from the account's delegates\n */\n Account.prototype.$removeDelegate = function(uid) {\n var _this = this,\n param = {uid: uid};\n return Account.$$resource.fetch(this.id.toString(), 'removeDelegate', param).then(function() {\n var i = _.indexOf(_.pluck(_this.delegates, 'uid'), uid);\n if (i >= 0) {\n _this.delegates.splice(i, 1);\n }\n });\n };\n \n})();\n","/* -*- Mode: javascript; indent-tabs-mode: nil; c-basic-offset: 2 -*- */\n\n(function() {\n 'use strict';\n\n /**\n * @name Mailbox\n * @constructor\n * @param {object} futureMailboxData - either an object literal or a promise\n */\n function Mailbox(account, futureMailboxData) {\n this.$account = account;\n // Data is immediately available\n if (typeof futureMailboxData.then !== 'function') {\n this.init(futureMailboxData);\n if (this.name && !this.path) {\n // Create a new mailbox on the server\n var newMailboxData = Mailbox.$$resource.create('createFolder', this.name);\n this.$unwrap(newMailboxData);\n }\n }\n else {\n // The promise will be unwrapped first\n // NOTE: this condition never happen for the moment\n this.$unwrap(futureMailboxData);\n }\n }\n\n /**\n * @memberof Mailbox\n * @desc The factory we'll use to register with Angular\n * @returns the Mailbox constructor\n */\n Mailbox.$factory = ['$q', '$timeout', '$log', 'sgSettings', 'Resource', 'Message', 'Acl', 'Preferences', 'sgMailbox_PRELOAD', function($q, $timeout, $log, Settings, Resource, Message, Acl, Preferences, PRELOAD) {\n angular.extend(Mailbox, {\n $q: $q,\n $timeout: $timeout,\n $log: $log,\n $$resource: new Resource(Settings.activeUser('folderURL') + 'Mail', Settings.activeUser()),\n $Message: Message,\n $$Acl: Acl,\n $Preferences: Preferences,\n $query: { sort: 'date', asc: 0 },\n selectedFolder: null,\n $refreshTimeout: null,\n PRELOAD: PRELOAD\n });\n // Initialize sort parameters from user's settings\n Preferences.ready().then(function() {\n if (Preferences.settings.Mail.SortingState) {\n Mailbox.$query.sort = Preferences.settings.Mail.SortingState[0];\n Mailbox.$query.asc = parseInt(Preferences.settings.Mail.SortingState[1]);\n }\n });\n\n return Mailbox; // return constructor\n }];\n\n /**\n * @module SOGo.MailerUI\n * @desc Factory registration of Mailbox in Angular module.\n */\n try {\n angular.module('SOGo.MailerUI');\n }\n catch(e) {\n angular.module('SOGo.MailerUI', ['SOGo.Common']);\n }\n angular.module('SOGo.MailerUI')\n .constant('sgMailbox_PRELOAD', {\n LOOKAHEAD: 50,\n SIZE: 100\n })\n .factory('Mailbox', Mailbox.$factory);\n\n /**\n * @memberof Mailbox\n * @desc Fetch list of mailboxes of a specific account\n * @param {string} accountId - the account\n * @return a promise of the HTTP operation\n * @see {@link Account.$getMailboxes}\n */\n Mailbox.$find = function(account) {\n var path, futureMailboxData;\n\n futureMailboxData = this.$$resource.fetch(account.id.toString(), 'view');\n\n return Mailbox.$unwrapCollection(account, futureMailboxData); // a collection of mailboxes\n };\n\n /**\n * @memberof Mailbox\n * @desc Unwrap to a collection of Mailbox instances.\n * @param {string} account - the account\n * @param {promise} futureMailboxData - a promise of the mailboxes metadata\n * @returns a promise of a collection of Mailbox objects\n */\n Mailbox.$unwrapCollection = function(account, futureMailboxData) {\n var collection = [],\n // Local recursive function\n createMailboxes = function(level, mailbox) {\n for (var i = 0; i < mailbox.children.length; i++) {\n mailbox.children[i].level = level;\n mailbox.children[i] = new Mailbox(account, mailbox.children[i]);\n createMailboxes(level+1, mailbox.children[i]);\n }\n };\n //collection.$futureMailboxData = futureMailboxData;\n\n return futureMailboxData.then(function(data) {\n return Mailbox.$timeout(function() {\n // Each entry is spun up as a Mailbox instance\n angular.forEach(data.mailboxes, function(data, index) {\n data.level = 0;\n var mailbox = new Mailbox(account, data);\n createMailboxes(1, mailbox); // recursively create all sub-mailboxes\n collection.push(mailbox);\n });\n return collection;\n });\n });\n };\n\n /**\n * @memberof Mailbox\n * @desc Build the path of the mailbox (or account only).\n * @param {string} accountId - the account ID\n * @param {string} [mailboxPath] - the mailbox path\n * @returns a string representing the path relative to the mail module\n */\n Mailbox.$absolutePath = function(accountId, mailboxPath) {\n var path = [];\n\n if (mailboxPath) {\n path = _.map(mailboxPath.split('/'), function(component) {\n return 'folder' + component.asCSSIdentifier();\n });\n }\n\n path.splice(0, 0, accountId); // insert account ID\n\n return path.join('/');\n };\n\n /**\n * @function init\n * @memberof Mailbox.prototype\n * @desc Extend instance with new data and compute additional attributes.\n * @param {object} data - attributes of mailbox\n */\n Mailbox.prototype.init = function(data) {\n var _this = this;\n this.$isLoading = false;\n this.$messages = [];\n this.uidsMap = {};\n angular.extend(this, data);\n if (this.path) {\n this.id = this.$id();\n this.$acl = new Mailbox.$$Acl('Mail/' + this.id);\n }\n if (this.type) {\n this.$isEditable = this.isEditable();\n }\n if (angular.isUndefined(this.$shadowData)) {\n // Make a copy of the data for an eventual reset\n this.$shadowData = this.$omit();\n }\n };\n\n /**\n * @function $id\n * @memberof Mailbox.prototype\n * @desc Build the unique ID to identified the mailbox.\n * @returns a string representing the path relative to the mail module\n */\n Mailbox.prototype.$id = function() {\n return Mailbox.$absolutePath(this.$account.id, this.path);\n };\n\n /**\n * @function $selectedCount\n * @memberof Mailbox.prototype\n * @desc Return the number of messages selected by the user.\n * @returns the number of selected messages\n */\n Mailbox.prototype.$selectedCount = function() {\n var count;\n\n count = 0;\n if (this.$messages) {\n count = (_.filter(this.$messages, function(message) { return message.selected; })).length;\n }\n return count;\n };\n\n /**\n * @function $filter\n * @memberof Mailbox.prototype\n * @desc Fetch the messages metadata of the mailbox\n * @param {object} [sort] - sort preferences. Defaults to descendent by date.\n * @param {string} sort.match - either AND or OR\n * @param {string} sort.sort - either arrival, subject, from, to, date, or size\n * @param {boolean} sort.asc - sort is ascendant if true\n * @param {object[]} [filters] - list of filters for the query\n * @param {string} filters.searchBy - either subject, from, to, cc, or body\n * @param {string} filters.searchInput - the search string to match\n * @param {boolean} filters.negative - negate the condition\n * @returns a promise of the HTTP operation\n */\n Mailbox.prototype.$filter = function(sortingAttributes, filters) {\n var _this = this, options = {};\n\n if (!angular.isDefined(this.unseenCount))\n this.unseenCount = 0;\n\n this.$isLoading = true;\n\n return Mailbox.$Preferences.ready().then(function() {\n\n if (Mailbox.$refreshTimeout)\n Mailbox.$timeout.cancel(Mailbox.$refreshTimeout);\n\n if (sortingAttributes)\n // Sorting preferences are common to all mailboxes\n angular.extend(Mailbox.$query, sortingAttributes);\n\n angular.extend(options, { sortingAttributes: Mailbox.$query });\n if (angular.isDefined(filters)) {\n options.filters = _.reject(filters, function(filter) {\n return angular.isUndefined(filter.searchInput) || filter.searchInput.length === 0;\n });\n _.each(options.filters, function(filter) {\n var secondFilter,\n match = filter.searchBy.match(/(\\w+)_or_(\\w+)/);\n if (match) {\n options.sortingAttributes.match = 'OR';\n filter.searchBy = match[1];\n secondFilter = angular.copy(filter);\n secondFilter.searchBy = match[2];\n options.filters.push(secondFilter);\n }\n });\n }\n\n // Restart the refresh timer, if needed\n var refreshViewCheck = Mailbox.$Preferences.defaults.SOGoRefreshViewCheck;\n if (refreshViewCheck && refreshViewCheck != 'manually') {\n var f = angular.bind(_this, Mailbox.prototype.$filter);\n Mailbox.$refreshTimeout = Mailbox.$timeout(f, refreshViewCheck.timeInterval()*1000);\n }\n\n var futureMailboxData = Mailbox.$$resource.post(_this.id, 'view', options);\n return _this.$unwrap(futureMailboxData);\n });\n };\n\n /**\n * @function $loadMessage\n * @memberof Mailbox.prototype\n * @desc Check if the message is loaded and in any case, fetch more messages headers from the server.\n * @returns true if the message metadata are already fetched\n */\n Mailbox.prototype.$loadMessage = function(messageId) {\n var startIndex = this.uidsMap[messageId],\n endIndex,\n max = this.$messages.length,\n loaded = false,\n uids,\n futureHeadersData;\n if (angular.isDefined(this.uidsMap[messageId]) && startIndex < this.$messages.length) {\n // Index is valid\n if (angular.isDefined(this.$messages[startIndex].subject)) {// || this.$messages[startIndex].loading) {\n // Message headers are loaded or data is coming\n loaded = true;\n }\n\n // Preload more headers if possible\n endIndex = Math.min(startIndex + Mailbox.PRELOAD.LOOKAHEAD, max - 1);\n if (!angular.isDefined(this.$messages[endIndex].subject) &&\n !angular.isDefined(this.$messages[endIndex].loading)) {\n endIndex = Math.min(startIndex + Mailbox.PRELOAD.SIZE, max);\n for (uids = []; startIndex < endIndex && startIndex < max; startIndex++) {\n if (angular.isDefined(this.$messages[startIndex].subject) || this.$messages[startIndex].loading) {\n // Message at this index is already loaded; increase the end index\n endIndex++;\n }\n else {\n // Message at this index will be loaded\n uids.push(this.$messages[startIndex].uid);\n this.$messages[startIndex].loading = true;\n }\n }\n\n Mailbox.$log.debug('Loading UIDs ' + uids.join(' '));\n futureHeadersData = Mailbox.$$resource.post(this.id, 'headers', {uids: uids});\n this.$unwrapHeaders(futureHeadersData);\n }\n }\n return loaded;\n };\n\n /**\n * @function isEditable\n * @memberof Mailbox.prototype\n * @desc Checks if the mailbox is editable based on its type.\n * @returns true if the mailbox is not a special folder.\n */\n Mailbox.prototype.isEditable = function() {\n return this.type == 'folder';\n };\n\n /**\n * @function $rename\n * @memberof AddressBook.prototype\n * @desc Rename the addressbook and keep the list sorted\n * @param {string} name - the new name\n * @returns a promise of the HTTP operation\n */\n Mailbox.prototype.$rename = function() {\n var _this = this,\n findParent,\n deferred = Mailbox.$q.defer(),\n parent,\n children,\n i;\n\n if (this.name == this.$shadowData.name) {\n // Name hasn't changed\n deferred.resolve();\n return deferred.promise;\n }\n\n // Local recursive function\n findParent = function(parent, children) {\n var parentMailbox = null,\n mailbox = _.find(children, function(o) {\n return o.path == _this.path;\n });\n if (mailbox) {\n parentMailbox = parent;\n }\n else {\n angular.forEach(children, function(o) {\n if (!parentMailbox && o.children && o.children.length > 0) {\n parentMailbox = findParent(o, o.children);\n }\n });\n }\n return parentMailbox;\n };\n\n // Find mailbox parent\n parent = findParent(null, this.$account.$mailboxes);\n if (parent === null)\n children = this.$account.$mailboxes;\n else\n children = parent.children;\n\n // Find index of mailbox among siblings\n i = _.indexOf(_.pluck(children, 'id'), this.id);\n\n this.$save().then(function(data) {\n var sibling;\n angular.extend(_this, data); // update the path attribute\n _this.id = _this.$id();\n\n // Move mailbox among its siblings according to its new name\n children.splice(i, 1);\n sibling = _.find(children, function(o) {\n Mailbox.$log.debug(o.name + ' ? ' + _this.name);\n return (o.type == 'folder' && o.name.localeCompare(_this.name) > 0);\n });\n if (sibling) {\n i = _.indexOf(_.pluck(children, 'id'), sibling.id);\n }\n else {\n i = children.length;\n }\n children.splice(i, 0, _this);\n\n deferred.resolve();\n }, function(data) {\n deferred.reject(data);\n });\n\n return deferred.promise;\n };\n\n /**\n * @function $compact\n * @memberof Mailbox.prototype\n * @desc Compact the mailbox\n * @returns a promise of the HTTP operation\n */\n Mailbox.prototype.$compact = function() {\n return Mailbox.$$resource.post(this.id, 'expunge');\n };\n\n /**\n * @function $setFolderAs\n * @memberof Mailbox.prototype\n * @desc Set a folder as Drafts/Sent/Trash\n * @returns a promise of the HTTP operation\n */\n Mailbox.prototype.$setFolderAs = function(type) {\n return Mailbox.$$resource.post(this.id, 'setAs' + type + 'Folder');\n };\n\n /**\n * @function $emptyTrash\n * @memberof Mailbox.prototype\n * @desc Empty the Trash folder.\n * @returns a promise of the HTTP operation\n */\n Mailbox.prototype.$emptyTrash = function() {\n var _this = this,\n deferred = Mailbox.$q.defer(),\n promise;\n\n promise = Mailbox.$$resource.post(this.id, 'emptyTrash');\n\n promise.then(function() {\n // Remove all messages from the mailbox\n _this.$messages = [];\n _this.uidsMap = {};\n _this.unseenCount = 0;\n }, function(data, status) {\n deferred.reject(data);\n });\n\n return deferred.promise;\n };\n\n /**\n * @function $markAsRead\n * @memberof Mailbox.prototype\n * @desc Mark all messages from folder as read\n * @returns a promise of the HTTP operation\n */\n Mailbox.prototype.$markAsRead = function() {\n return Mailbox.$$resource.post(this.id, 'markRead');\n };\n\n /**\n * @function $flagMessages\n * @memberof Mailbox.prototype\n * @desc Add or remove a flag on a message set\n * @returns a promise of the HTTP operation\n */\n Mailbox.prototype.$flagMessages = function(uids, flags, operation) {\n var data = {msgUIDs: uids,\n flags: flags,\n operation: operation};\n\n return Mailbox.$$resource.post(this.id, 'addOrRemoveLabel', data);\n };\n\n /**\n * @function $delete\n * @memberof Mailbox.prototype\n * @desc Delete the mailbox from the server\n * @returns a promise of the HTTP operation\n */\n Mailbox.prototype.$delete = function() {\n var _this = this,\n deferred = Mailbox.$q.defer(),\n promise;\n\n promise = Mailbox.$$resource.remove(this.id);\n\n promise.then(function() {\n _this.$account.$getMailboxes({reload: true});\n deferred.resolve(true);\n }, function(data, status) {\n deferred.reject(data);\n });\n return deferred.promise;\n };\n\n /**\n * @function $deleteMessages\n * @memberof Mailbox.prototype\n * @desc Delete multiple messages from mailbox.\n * @return a promise of the HTTP operation\n */\n Mailbox.prototype.$deleteMessages = function(uids) {\n return Mailbox.$$resource.post(this.id, 'batchDelete', {uids: uids});\n };\n\n /**\n * @function $copyMessages\n * @memberof Mailbox.prototype\n * @desc Copy multiple messages from the current mailbox to a target one\n * @return a promise of the HTTP operation\n */\n Mailbox.prototype.$copyMessages = function(uids, folder) {\n return Mailbox.$$resource.post(this.id, 'copyMessages', {uids: uids, folder: folder});\n };\n\n /**\n * @function $moveMessages\n * @memberof Mailbox.prototype\n * @desc Move multiple messages from the current mailbox to a target one\n * @return a promise of the HTTP operation\n */\n Mailbox.prototype.$moveMessages = function(uids, folder) {\n return Mailbox.$$resource.post(this.id, 'moveMessages', {uids: uids, folder: folder});\n };\n \n /**\n * @function $reset\n * @memberof Mailbox.prototype\n * @desc Reset the original state the mailbox's data.\n */\n Mailbox.prototype.$reset = function() {\n var _this = this;\n angular.forEach(this, function(value, key) {\n if (key != 'constructor' && key != 'children' && key[0] != '$') {\n delete _this[key];\n }\n });\n angular.extend(this, this.$shadowData);\n this.$shadowData = this.$omit();\n };\n\n /**\n * @function $save\n * @memberof Mailbox.prototype\n * @desc Save the mailbox to the server. This currently can only affect the name of the mailbox.\n * @returns a promise of the HTTP operation\n */\n Mailbox.prototype.$save = function() {\n var _this = this;\n\n return Mailbox.$$resource.save(this.id, this.$omit()).then(function(data) {\n // Make a copy of the data for an eventual reset\n _this.$shadowData = _this.$omit();\n Mailbox.$log.debug(JSON.stringify(data, undefined, 2));\n return data;\n }, function(data) {\n Mailbox.$log.error(JSON.stringify(data, undefined, 2));\n // Restore previous version\n _this.$reset();\n });\n };\n\n /**\n * @function $newMailbox\n * @memberof Mailbox.prototype\n * @desc Create a new mailbox on the server and refresh the list of mailboxes.\n * @returns a promise of the HTTP operations\n */\n Mailbox.prototype.$newMailbox = function(path, name) {\n return this.$account.$newMailbox(path, name);\n };\n\n /**\n * @function $omit\n * @memberof Mailbox.prototype\n * @desc Return a sanitized object used to send to the server.\n * @return an object literal copy of the Mailbox instance\n */\n Mailbox.prototype.$omit = function() {\n var mailbox = {};\n angular.forEach(this, function(value, key) {\n if (key != 'constructor' &&\n key != 'children' &&\n key[0] != '$') {\n mailbox[key] = value;\n }\n });\n return mailbox;\n };\n\n /**\n * @function $unwrap\n * @memberof Mailbox.prototype\n * @desc Unwrap a promise and instanciate new Message objects using received data.\n * @param {promise} futureMailboxData - a promise of the Mailbox's metadata\n * @returns a promise of the HTTP operation\n */\n Mailbox.prototype.$unwrap = function(futureMailboxData) {\n var _this = this,\n deferred = Mailbox.$q.defer();\n\n this.$futureMailboxData = futureMailboxData;\n this.$futureMailboxData.then(function(data) {\n Mailbox.$timeout(function() {\n var uids, headers;\n\n _this.init(data);\n\n if (_this.uids) {\n Mailbox.$log.debug('unwrapping ' + data.uids.length + ' messages');\n \n // First entry of 'headers' are keys\n headers = _.invoke(_this.headers[0], 'toLowerCase');\n _this.headers.splice(0, 1);\n\n // First entry of 'uids' are keys when threaded view is enabled\n if (_this.threaded) {\n uids = _this.uids[0];\n _this.uids.splice(0, 1);\n }\n\n // Instanciate Message objects\n _.reduce(_this.uids, function(msgs, msg, i) {\n var data;\n if (_this.threaded)\n data = _.object(uids, msg);\n else\n data = {uid: msg.toString()};\n\n // Build map of UID <=> index\n _this.uidsMap[data.uid] = i;\n\n msgs.push(new Mailbox.$Message(_this.$account.id, _this, data));\n\n return msgs;\n }, _this.$messages);\n\n // Extend Message objects with received headers\n _.each(_this.headers, function(data) {\n var msg = _.object(headers, data),\n i = _this.uidsMap[msg.uid.toString()];\n _.extend(_this.$messages[i], msg);\n });\n }\n Mailbox.$log.debug('mailbox ' + _this.id + ' ready');\n _this.$isLoading = false;\n deferred.resolve(_this.$messages);\n });\n }, function(data) {\n angular.extend(_this, data);\n _this.isError = true;\n deferred.reject();\n });\n\n return deferred.promise;\n };\n\n /**\n * @function $unwrapHeaders\n * @memberof Mailbox.prototype\n * @desc Unwrap a promise and extend matching Message objects using received data.\n * @param {promise} futureHeadersData - a promise of some messages metadata\n */\n Mailbox.prototype.$unwrapHeaders = function(futureHeadersData) {\n var _this = this;\n\n futureHeadersData.then(function(data) {\n Mailbox.$timeout(function() {\n var headers, j;\n if (data.length > 0) {\n // First entry of 'headers' are keys\n headers = _.invoke(data[0], 'toLowerCase');\n data.splice(0, 1);\n _.each(data, function(messageHeaders) {\n messageHeaders = _.object(headers, messageHeaders);\n j = _this.uidsMap[messageHeaders.uid.toString()];\n if (angular.isDefined(j)) {\n _.extend(_this.$messages[j], messageHeaders);\n }\n });\n }\n });\n });\n };\n\n})();\n","/* -*- Mode: javascript; indent-tabs-mode: nil; c-basic-offset: 2 -*- */\n\n(function() {\n 'use strict';\n\n /**\n * @name Message\n * @constructor\n * @param {string} accountId - the account ID\n * @param {string} mailboxPath - an array of the mailbox path components\n * @param {object} futureAddressBookData - either an object literal or a promise\n */\n function Message(accountId, mailbox, futureMessageData) {\n this.accountId = accountId;\n this.$mailbox = mailbox;\n this.$hasUnsafeContent = false;\n this.$loadUnsafeContent = false;\n this.editable = {to: [], cc: [], bcc: []};\n // Data is immediately available\n if (typeof futureMessageData.then !== 'function') {\n //console.debug(JSON.stringify(futureMessageData, undefined, 2));\n angular.extend(this, futureMessageData);\n this.id = this.$absolutePath();\n this.$formatFullAddresses();\n }\n else {\n // The promise will be unwrapped first\n this.$unwrap(futureMessageData);\n }\n this.selected = false;\n }\n\n /**\n * @memberof Message\n * @desc The factory we'll use to register with Angular\n * @returns the Message constructor\n */\n Message.$factory = ['$q', '$timeout', '$log', '$sce', 'sgSettings', 'Gravatar', 'Resource', 'Preferences', function($q, $timeout, $log, $sce, Settings, Gravatar, Resource, Preferences) {\n angular.extend(Message, {\n $q: $q,\n $timeout: $timeout,\n $log: $log,\n $sce: $sce,\n $gravatar: Gravatar,\n $$resource: new Resource(Settings.activeUser('folderURL') + 'Mail', Settings.activeUser())\n });\n // Initialize tags form user's defaults\n Preferences.ready().then(function() {\n if (Preferences.defaults.SOGoMailLabelsColors) {\n Message.$tags = Preferences.defaults.SOGoMailLabelsColors;\n }\n });\n\n return Message; // return constructor\n }];\n\n /**\n * @module SOGo.MailerUI\n * @desc Factory registration of Message in Angular module.\n */\n try {\n angular.module('SOGo.MailerUI');\n }\n catch(e) {\n angular.module('SOGo.MailerUI', ['SOGo.Common']);\n }\n angular.module('SOGo.MailerUI')\n .factory('Message', Message.$factory);\n\n /**\n * @function filterTags\n * @memberof Message.prototype\n * @desc Search for tags (ie., mail labels) matching some criterias\n * @param {string} search - the search string to match\n * @returns a collection of strings\n */\n Message.filterTags = function(query) {\n var re = new RegExp(query, 'i');\n return _.filter(_.keys(Message.$tags), function(tag) {\n var value = Message.$tags[tag];\n return value[0].search(re) != -1;\n });\n };\n\n /**\n * @function $absolutePath\n * @memberof Message.prototype\n * @desc Build the path of the message\n * @returns a string representing the path relative to the mail module\n */\n Message.prototype.$absolutePath = function(options) {\n var path;\n\n path = _.map(this.$mailbox.path.split('/'), function(component) {\n return 'folder' + component.asCSSIdentifier();\n });\n path.splice(0, 0, this.accountId); // insert account ID\n if (options && options.asDraft && this.draftId) {\n path.push(this.draftId); // add draft ID\n }\n else {\n path.push(this.uid); // add message UID\n }\n\n return path.join('/');\n };\n\n /**\n * @function $setUID\n * @memberof Message.prototype\n * @desc Change the UID of the message. This happens when saving a draft.\n * @param {number} uid - the new message UID\n */\n Message.prototype.$setUID = function(uid) {\n var oldUID = this.uid || -1;\n\n if (oldUID != uid) {\n this.uid = uid;\n this.id = this.$absolutePath();\n if (oldUID > -1 && this.$mailbox.uidsMap[oldUID]) {\n this.$mailbox.uidsMap[uid] = this.$mailbox.uidsMap[oldUID];\n this.$mailbox.uidsMap[oldUID] = null;\n }\n }\n };\n\n /**\n * @function $formatFullAddresses\n * @memberof Message.prototype\n * @desc Format all sender and recipients addresses with a complete description (name ).\n */\n Message.prototype.$formatFullAddresses = function() {\n var _this = this;\n\n // Build long representation of email addresses\n _.each(['from', 'to', 'cc', 'bcc', 'reply-to'], function(type) {\n _.each(_this[type], function(data, i) {\n if (data.name && data.name != data.email)\n data.full = data.name + ' <' + data.email + '>';\n else\n data.full = '<' + data.email + '>';\n });\n });\n };\n\n /**\n * @function $shortAddress\n * @memberof Message.prototype\n * @desc Format the first address of a specific type with a short description.\n * @returns a string of the name or the email of the envelope address type\n */\n Message.prototype.$shortAddress = function(type) {\n var address = '';\n if (this[type] && this[type].length > 0) {\n address = this[type][0].name || this[type][0].email || '';\n }\n\n return address;\n };\n\n /**\n * @function loadUnsafeContent\n * @memberof Message.prototype\n * @desc Mark the message to load unsafe resources when calling $content().\n */\n Message.prototype.loadUnsafeContent = function() {\n this.$loadUnsafeContent = true;\n };\n\n /**\n * @function $content\n * @memberof Message.prototype\n * @desc Get the message body as accepted by SCE (Angular Strict Contextual Escaping).\n * @returns the HTML representation of the body\n */\n Message.prototype.$content = function() {\n var _this = this,\n parts = [],\n _visit = function(part) {\n part.msgclass = 'msg-attachment-other';\n if (part.type == 'UIxMailPartAlternativeViewer') {\n _visit(_.find(part.content, function(alternatePart) {\n return part.preferredPart == alternatePart.contentType;\n }));\n }\n // Can be used for UIxMailPartMixedViewer and UIxMailPartMessageViewer\n else if (angular.isArray(part.content)) {\n _.each(part.content, function(mixedPart) {\n _visit(mixedPart);\n });\n }\n else {\n if (angular.isUndefined(part.safeContent)) {\n // Keep a copy of the original content\n part.safeContent = part.content;\n _this.$hasUnsafeContent = (part.safeContent.indexOf(' unsafe-') > -1);\n }\n if (part.type == 'UIxMailPartHTMLViewer') {\n part.html = true;\n if (_this.$loadUnsafeContent) {\n if (angular.isUndefined(part.unsafeContent)) {\n part.unsafeContent = document.createElement('div');\n part.unsafeContent.innerHTML = part.safeContent;\n angular.forEach(['src', 'data', 'classid', 'background', 'style'], function(suffix) {\n var elements = part.unsafeContent.querySelectorAll('[unsafe-' + suffix + ']'),\n element,\n value,\n i;\n for (i = 0; i < elements.length; i++) {\n element = angular.element(elements[i]);\n value = element.attr('unsafe-' + suffix);\n element.attr(suffix, value);\n element.removeAttr('unsafe-' + suffix);\n }\n });\n }\n part.content = Message.$sce.trustAs('html', part.unsafeContent.innerHTML);\n }\n else {\n part.content = Message.$sce.trustAs('html', part.safeContent);\n }\n parts.push(part);\n }\n else if (part.type == 'UIxMailPartICalViewer' ||\n part.type == 'UIxMailPartImageViewer' ||\n part.type == 'UIxMailPartLinkViewer') {\n\n // UIxMailPartICalViewer injects 'participants'\n if (part.participants) {\n _.each(part.participants, function(participant) {\n participant.image = Message.$gravatar(participant.email, 32);\n });\n }\n\n if (part.type == 'UIxMailPartImageViewer')\n part.msgclass = 'msg-attachment-image';\n\n // Trusted content that can be compiled (Angularly-speaking)\n part.compile = true;\n parts.push(part);\n }\n else {\n part.html = true;\n part.content = Message.$sce.trustAs('html', part.safeContent);\n parts.push(part);\n }\n }\n };\n _visit(this.parts);\n\n return parts;\n };\n\n /**\n * @function $editableContent\n * @memberof Message.prototype\n * @desc First, fetch the draft ID that corresponds to the temporary draft object on the SOGo server.\n * Secondly, fetch the editable message body along with other metadata such as the recipients.\n * @returns the HTML representation of the body\n */\n Message.prototype.$editableContent = function() {\n var _this = this;\n\n return Message.$$resource.fetch(this.id, 'edit').then(function(data) {\n angular.extend(_this, data);\n return Message.$$resource.fetch(_this.$absolutePath({asDraft: true}), 'edit').then(function(data) {\n Message.$log.debug('editable = ' + JSON.stringify(data, undefined, 2));\n angular.extend(_this.editable, data);\n return data.text;\n });\n });\n };\n\n /**\n * @function addTag\n * @memberof Message.prototype\n * @desc Add a mail tag on the current message.\n * @param {string} tag - the tag name\n * @returns a promise of the HTTP operation\n */\n Message.prototype.addTag = function(tag) {\n return this.$addOrRemoveTag('add', tag);\n };\n\n /**\n * @function removeTag\n * @memberof Message.prototype\n * @desc Remove a mail tag from the current message.\n * @param {string} tag - the tag name\n * @returns a promise of the HTTP operation\n */\n Message.prototype.removeTag = function(tag) {\n return this.$addOrRemoveTag('remove', tag);\n };\n\n /**\n * @function $addOrRemoveTag\n * @memberof Message.prototype\n * @desc Add or remove a mail tag on the current message.\n * @param {string} operation - the operation name to perform\n * @param {string} tag - the tag name\n * @returns a promise of the HTTP operation\n */\n Message.prototype.$addOrRemoveTag = function(operation, tag) {\n var data = {\n operation: operation,\n msgUIDs: [this.uid],\n flags: tag\n };\n\n if (tag)\n return Message.$$resource.post(this.$mailbox.$id(), 'addOrRemoveLabel', data);\n };\n\n /**\n * @function $imipAction\n * @memberof Message.prototype\n * @desc Perform IMIP actions on the current message.\n * @param {string} path - the path of the IMIP calendar part \n * @param {string} action - the the IMIP action to perform\n * @param {object} data - the delegation info \n */\n Message.prototype.$imipAction = function(path, action, data) {\n var _this = this;\n Message.$$resource.post([this.id, path].join('/'), action, data).then(function(data) {\n Message.$timeout(function() {\n _this.$reload();\n }, function() {\n // TODO: show toast\n });\n });\n };\n\n /**\n * @function $sendMDN\n * @memberof Message.prototype\n * @desc Send MDN response for current email message\n */\n Message.prototype.$sendMDN = function() {\n this.shouldAskReceipt = 0;\n return Message.$$resource.post(this.id, 'sendMDN');\n };\n\n /**\n * @function $deleteAttachment\n * @memberof Message.prototype\n * @desc Delete an attachment from a message being composed\n * @param {string} filename - the filename of the attachment to delete\n */\n Message.prototype.$deleteAttachment = function(filename) {\n var action = 'deleteAttachment?filename=' + filename;\n var _this = this;\n Message.$$resource.post(this.$absolutePath({asDraft: true}), action).then(function(data) {\n Message.$timeout(function() {\n _this.editable.attachmentAttrs = _.filter(_this.editable.attachmentAttrs, function(attachment) {\n return attachment.filename != filename;\n });\n }, function() {\n // TODO: show toast\n });\n });\n };\n\n /**\n * @function $markAsFlaggedOrUnflagged\n * @memberof Message.prototype\n * @desc Add or remove a the \\\\Flagged flag on the current message.\n * @returns a promise of the HTTP operation\n */\n Message.prototype.toggleFlag = function() {\n var _this = this,\n action = 'markMessageFlagged';\n\n if (this.isflagged)\n action = 'markMessageUnflagged';\n\n return Message.$$resource.post(this.id, action).then(function(data) {\n Message.$timeout(function() {\n _this.isflagged = !_this.isflagged;\n });\n });\n };\n\n /**\n * @function $reload\n * @memberof Message.prototype\n * @desc Fetch the viewable message body along with other metadata such as the list of attachments.\n * @returns a promise of the HTTP operation\n */\n Message.prototype.$reload = function() {\n var futureMessageData;\n\n futureMessageData = Message.$$resource.fetch(this.id, 'view');\n\n return this.$unwrap(futureMessageData);\n };\n\n /**\n * @function $reply\n * @memberof Message.prototype\n * @desc Prepare a new Message object as a reply to the sender.\n * @returns a promise of the HTTP operations\n */\n Message.prototype.$reply = function() {\n return this.$newDraft('reply');\n };\n\n /**\n * @function $replyAll\n * @memberof Message.prototype\n * @desc Prepare a new Message object as a reply to the sender and all recipients.\n * @returns a promise of the HTTP operations\n */\n Message.prototype.$replyAll = function() {\n return this.$newDraft('replyall');\n };\n\n /**\n * @function $forward\n * @memberof Message.prototype\n * @desc Prepare a new Message object as a forward.\n * @returns a promise of the HTTP operations\n */\n Message.prototype.$forward = function() {\n return this.$newDraft('forward');\n };\n\n /**\n * @function $newDraft\n * @memberof Message.prototype\n * @desc Prepare a new Message object as a reply or a forward of the current message and associated\n * to the draft mailbox.\n * @see {@link Account.$newMessage}\n * @see {@link Message.$editableContent}\n * @see {@link Message.$reply}\n * @see {@link Message.$replyAll}\n * @see {@link Message.$forwad}\n * @param {string} action - the HTTP action to perform on the message\n * @returns a promise of the HTTP operations\n */\n Message.prototype.$newDraft = function(action) {\n var _this = this;\n\n // Query server for draft folder and draft UID\n return Message.$$resource.fetch(this.id, action).then(function(data) {\n var mailbox, message;\n Message.$log.debug('New ' + action + ': ' + JSON.stringify(data, undefined, 2));\n mailbox = _this.$mailbox.$account.$getMailboxByPath(data.mailboxPath);\n message = new Message(data.accountId, mailbox, data);\n // Fetch draft initial data\n return Message.$$resource.fetch(message.$absolutePath({asDraft: true}), 'edit').then(function(data) {\n Message.$log.debug('New ' + action + ': ' + JSON.stringify(data, undefined, 2));\n angular.extend(message.editable, data);\n return message;\n });\n });\n };\n\n /**\n * @function $save\n * @memberof Message.prototype\n * @desc Save the message to the server.\n * @returns a promise of the HTTP operation\n */\n Message.prototype.$save = function() {\n var _this = this,\n data = this.editable;\n\n Message.$log.debug('save = ' + JSON.stringify(data, undefined, 2));\n\n return Message.$$resource.save(this.$absolutePath({asDraft: true}), data).then(function(response) {\n Message.$log.debug('save = ' + JSON.stringify(response, undefined, 2));\n _this.$setUID(response.uid);\n _this.$reload(); // fetch a new viewable version of the message\n });\n };\n\n /**\n * @function $send\n * @memberof Message.prototype\n * @desc Send the message.\n * @returns a promise of the HTTP operation\n */\n Message.prototype.$send = function() {\n var data = angular.copy(this.editable),\n deferred = Message.$q.defer();\n\n Message.$log.debug('send = ' + JSON.stringify(data, undefined, 2));\n\n Message.$$resource.post(this.$absolutePath({asDraft: true}), 'send', data).then(function(data) {\n if (data.status == 'success') {\n deferred.resolve(data);\n }\n else {\n deferred.reject(data);\n }\n });\n\n return deferred.promise;\n };\n\n /**\n * @function $unwrap\n * @memberof Message.prototype\n * @desc Unwrap a promise. \n * @param {promise} futureMessageData - a promise of some of the Message's data\n */\n Message.prototype.$unwrap = function(futureMessageData) {\n var _this = this,\n deferred = Message.$q.defer();\n\n // Expose the promise\n this.$futureMessageData = futureMessageData;\n\n // Resolve the promise\n this.$futureMessageData.then(function(data) {\n // Calling $timeout will force Angular to refresh the view\n Message.$timeout(function() {\n angular.extend(_this, data);\n _this.id = _this.$absolutePath();\n _this.$formatFullAddresses();\n _this.$loadUnsafeContent = false;\n deferred.resolve(_this);\n });\n if (!_this.isread) {\n Message.$$resource.fetch(_this.id, 'markMessageRead').then(function() {\n Message.$timeout(function() {\n _this.isread = true;\n _this.$mailbox.unseenCount--;\n });\n });\n }\n }, function(data) {\n angular.extend(_this, data);\n _this.isError = true;\n Message.$log.error(_this.error);\n deferred.reject();\n });\n\n return deferred.promise;\n };\n\n /**\n * @function $omit\n * @memberof Message.prototype\n * @desc Return a sanitized object used to send to the server.\n * @return an object literal copy of the Message instance\n */\n Message.prototype.$omit = function() {\n var message = {};\n angular.forEach(this, function(value, key) {\n if (key != 'constructor' && key[0] != '$') {\n message[key] = value;\n }\n });\n\n // Format addresses as arrays\n _.each(['from', 'to', 'cc', 'bcc', 'reply-to'], function(type) {\n if (message[type])\n message[type] = _.invoke(message[type].split(','), 'trim');\n });\n\n //Message.$log.debug(JSON.stringify(message, undefined, 2));\n return message;\n };\n\n})();\n"]} \ No newline at end of file +{"version":3,"file":"Mailer.services.js","sources":["Mailer/Account.service.js","Mailer/Mailbox.service.js","Mailer/Message.service.js"],"names":["Account","futureAccountData","then","angular","extend","this","_","each","identities","identity","fullName","full","email","$log","debug","JSON","stringify","undefined","$factory","$q","$timeout","Settings","Resource","Mailbox","Message","$$resource","baseURL","activeUser","$Mailbox","$Message","module","e","factory","$findAll","data","collection","forEach","o","i","id","prototype","$getMailboxes","options","_this","deferred","defer","$mailboxes","reload","$find","$flattenMailboxes","resolve","promise","allMailboxes","_visit","mailboxes","push","children","length","$$flattenMailboxes","$getMailboxByType","type","mailbox","_find","find","console","specialMailboxes","$getMailboxByPath","path","$newMailbox","name","post","toString","$newMessage","fetch","message","accountId","mailboxPath","$absolutePath","asDraft","editable","$addDelegate","user","param","uid","indexOf","pluck","delegates","users","status","reject","l","$removeDelegate","splice","account","futureMailboxData","$account","init","newMailboxData","create","$unwrap","Acl","Preferences","PRELOAD","$$Acl","$Preferences","$query","sort","asc","selectedFolder","$refreshTimeout","ready","settings","Mail","SortingState","parseInt","constant","LOOKAHEAD","SIZE","$unwrapCollection","createMailboxes","level","index","map","split","component","asCSSIdentifier","join","$isLoading","$messages","uidsMap","$id","$acl","$isEditable","isEditable","isUndefined","$shadowData","$omit","$selectedCount","count","filter","selected","$filter","sortingAttributes","filters","isDefined","unseenCount","cancel","searchInput","secondFilter","match","searchBy","copy","refreshViewCheck","defaults","SOGoRefreshViewCheck","f","bind","timeInterval","$loadMessage","messageId","endIndex","uids","futureHeadersData","startIndex","max","loaded","subject","Math","min","loading","$unwrapHeaders","$rename","findParent","parent","parentMailbox","$save","sibling","localeCompare","$compact","$setFolderAs","$emptyTrash","$markAsRead","$flagMessages","flags","operation","msgUIDs","$delete","remove","$deleteMessages","$copyMessages","folder","$moveMessages","$reset","value","key","save","error","$futureMailboxData","headers","invoke","threaded","reduce","msgs","msg","object","isError","j","messageHeaders","futureMessageData","$mailbox","$hasUnsafeContent","$loadUnsafeContent","$showDetailedRecipients","to","cc","bcc","$formatFullAddresses","$sce","Gravatar","$gravatar","SOGoMailLabelsColors","$tags","filterTags","query","re","RegExp","keys","tag","search","draftId","$setUID","oldUID","shortname","replace","image","$shortRecipients","result","$shortAddress","address","loadUnsafeContent","showDetailedRecipients","$content","parts","part","msgclass","content","alternatePart","preferredPart","contentType","isArray","mixedPart","safeContent","html","unsafeContent","document","createElement","innerHTML","suffix","element","elements","querySelectorAll","attr","removeAttr","trustAs","participants","participant","compile","$editableContent","text","addTag","$addOrRemoveTag","removeTag","$imipAction","action","$reload","$sendMDN","shouldAskReceipt","$deleteAttachment","filename","attachmentAttrs","attachment","toggleFlag","isflagged","$reply","$newDraft","$replyAll","$forward","response","$send","$futureMessageData","isread"],"mappings":"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","sourcesContent":["/* -*- Mode: javascript; indent-tabs-mode: nil; c-basic-offset: 2 -*- */\n\n(function() {\n 'use strict';\n\n /**\n * @name Account\n * @constructor\n * @param {object} futureAccountData\n */\n function Account(futureAccountData) {\n // Data is immediately available\n if (typeof futureAccountData.then !== 'function') {\n angular.extend(this, futureAccountData);\n _.each(this.identities, function(identity) {\n if (identity.fullName)\n identity.full = identity.fullName + ' <' + identity.email + '>';\n else\n identity.full = '<' + identity.email + '>';\n });\n Account.$log.debug('Account: ' + JSON.stringify(futureAccountData, undefined, 2));\n }\n else {\n // The promise will be unwrapped first\n //this.$unwrap(futureAccountData);\n }\n }\n\n /**\n * @memberof Account\n * @desc The factory we'll use to register with Angular\n * @returns the Account constructor\n */\n Account.$factory = ['$q', '$timeout', '$log', 'sgSettings', 'Resource', 'Mailbox', 'Message', function($q, $timeout, $log, Settings, Resource, Mailbox, Message) {\n angular.extend(Account, {\n $q: $q,\n $timeout: $timeout,\n $log: $log,\n $$resource: new Resource(Settings.baseURL(), Settings.activeUser()),\n $Mailbox: Mailbox,\n $Message: Message\n });\n\n return Account; // return constructor\n }];\n\n /**\n * @module SOGo.MailerUI\n * @desc Factory registration of Account in Angular module.\n */\n try {\n angular.module('SOGo.MailerUI');\n }\n catch(e) {\n angular.module('SOGo.MailerUI', ['SOGo.Common']);\n }\n angular.module('SOGo.MailerUI')\n .factory('Account', Account.$factory);\n\n /**\n * @memberof Account\n * @desc Set the list of accounts and instanciate a new Account object for each item.\n * @param {array} [data] - the metadata of the accounts\n * @returns the list of accounts\n */\n Account.$findAll = function(data) {\n var collection = [];\n if (data) {\n // Each entry is spun up as an Account instance\n angular.forEach(data, function(o, i) {\n o.id = i;\n collection[i] = new Account(o);\n });\n }\n return collection;\n };\n\n /**\n * @function $getMailboxes\n * @memberof Account.prototype\n * @desc Fetch the list of mailboxes for the current account.\n * @param {object} [options] - force a reload by setting 'reload' to true\n * @returns a promise of the HTTP operation\n */\n Account.prototype.$getMailboxes = function(options) {\n var _this = this,\n deferred = Account.$q.defer();\n\n if (this.$mailboxes && !(options && options.reload)) {\n deferred.resolve(this.$mailboxes);\n }\n else {\n Account.$Mailbox.$find(this).then(function(data) {\n _this.$mailboxes = data;\n _this.$flattenMailboxes({reload: true});\n deferred.resolve(_this.$mailboxes);\n });\n }\n\n return deferred.promise;\n };\n\n /**\n * @function $flattenMailboxes\n * @memberof Account.prototype\n * @desc Get a flatten array of the mailboxes.\n * @param {object} [options] - force a reload\n * @returns an array of Mailbox instances\n */\n Account.prototype.$flattenMailboxes = function(options) {\n var _this = this,\n allMailboxes = [],\n _visit = function(mailboxes) {\n _.each(mailboxes, function(o) {\n allMailboxes.push(o);\n if (o.children && o.children.length > 0) {\n _visit(o.children);\n }\n });\n };\n\n if (this.$$flattenMailboxes && !(options && options.reload)) {\n allMailboxes = this.$$flattenMailboxes;\n }\n else {\n _visit(this.$mailboxes);\n _this.$$flattenMailboxes = allMailboxes;\n }\n\n return allMailboxes;\n };\n\n Account.prototype.$getMailboxByType = function(type) {\n var mailbox,\n // Recursive find function\n _find = function(mailboxes) {\n var mailbox = _.find(mailboxes, function(o) {\n return o.type == type;\n });\n if (!mailbox) {\n angular.forEach(mailboxes, function(o) {\n if (!mailbox && o.children && o.children.length > 0) {\n mailbox = _find(o.children);\n }\n });\n }\n return mailbox;\n };\n mailbox = _find(this.$mailboxes);\n\n console.debug(mailbox);\n console.debug(this.specialMailboxes);\n };\n\n /**\n * @function $getMailboxByPath\n * @memberof Account.prototype\n * @desc Recursively find a mailbox using its path\n * @returns a promise of the HTTP operation\n */\n Account.prototype.$getMailboxByPath = function(path) {\n var mailbox = null,\n // Recursive find function\n _find = function(mailboxes) {\n var mailbox = _.find(mailboxes, function(o) {\n return o.path == path;\n });\n if (!mailbox) {\n angular.forEach(mailboxes, function(o) {\n if (!mailbox && o.children && o.children.length > 0) {\n mailbox = _find(o.children);\n }\n });\n }\n return mailbox;\n };\n mailbox = _find(this.$mailboxes);\n\n return mailbox;\n };\n\n /**\n * @function $newMailbox\n * @memberof Account.prototype\n * @desc Create a new mailbox on the server and refresh the list of mailboxes.\n * @returns a promise of the HTTP operations\n */\n Account.prototype.$newMailbox = function(path, name) {\n var _this = this;\n\n return Account.$$resource.post(path.toString(), 'createFolder', {name: name}).then(function() {\n _this.$getMailboxes({reload: true});\n });\n };\n\n /**\n * @function $newMessage\n * @memberof Account.prototype\n * @desc Prepare a new Message object associated to the appropriate mailbox.\n * @returns a promise of the HTTP operations\n */\n Account.prototype.$newMessage = function() {\n var _this = this;\n\n // Query account for draft folder and draft UID\n return Account.$$resource.fetch(this.id.toString(), 'compose').then(function(data) {\n Account.$log.debug('New message (compose): ' + JSON.stringify(data, undefined, 2));\n var message = new Account.$Message(data.accountId, _this.$getMailboxByPath(data.mailboxPath), data);\n return message;\n }).then(function(message) {\n // Fetch draft initial data\n return Account.$$resource.fetch(message.$absolutePath({asDraft: true}), 'edit').then(function(data) {\n Account.$log.debug('New message (edit): ' + JSON.stringify(data, undefined, 2));\n angular.extend(message.editable, data);\n return message;\n });\n });\n };\n\n /**\n * @function $addDelegate\n * @memberof Account.prototype\n * @param {Object} user - a User object with minimal set of attributes (uid, isGroup, cn, c_email)\n * @desc Remove a user from the account's delegates\n * @see {@link User.$filter}\n */\n Account.prototype.$addDelegate = function(user) {\n var _this = this,\n deferred = Account.$q.defer(),\n param = {uid: user.uid};\n if (!user.uid || _.indexOf(_.pluck(this.delegates, 'uid'), user.uid) > -1) {\n // No UID specified or user already in delegates\n deferred.resolve();\n }\n else {\n Account.$$resource.fetch(this.id.toString(), 'addDelegate', param).then(function() {\n _this.delegates.push(user);\n deferred.resolve(_this.users);\n }, function(data, status) {\n deferred.reject(l('An error occured please try again.'));\n });\n }\n return deferred.promise;\n };\n\n /**\n * @function $removeDelegate\n * @memberof Account.prototype\n * @param {Object} user - a User object with minimal set of attributes (uid, isGroup, cn, c_email)\n * @desc Remove a user from the account's delegates\n * @return a promise of the server call to remove the user from the account's delegates\n */\n Account.prototype.$removeDelegate = function(uid) {\n var _this = this,\n param = {uid: uid};\n return Account.$$resource.fetch(this.id.toString(), 'removeDelegate', param).then(function() {\n var i = _.indexOf(_.pluck(_this.delegates, 'uid'), uid);\n if (i >= 0) {\n _this.delegates.splice(i, 1);\n }\n });\n };\n \n})();\n","/* -*- Mode: javascript; indent-tabs-mode: nil; c-basic-offset: 2 -*- */\n\n(function() {\n 'use strict';\n\n /**\n * @name Mailbox\n * @constructor\n * @param {object} futureMailboxData - either an object literal or a promise\n */\n function Mailbox(account, futureMailboxData) {\n this.$account = account;\n // Data is immediately available\n if (typeof futureMailboxData.then !== 'function') {\n this.init(futureMailboxData);\n if (this.name && !this.path) {\n // Create a new mailbox on the server\n var newMailboxData = Mailbox.$$resource.create('createFolder', this.name);\n this.$unwrap(newMailboxData);\n }\n }\n else {\n // The promise will be unwrapped first\n // NOTE: this condition never happen for the moment\n this.$unwrap(futureMailboxData);\n }\n }\n\n /**\n * @memberof Mailbox\n * @desc The factory we'll use to register with Angular\n * @returns the Mailbox constructor\n */\n Mailbox.$factory = ['$q', '$timeout', '$log', 'sgSettings', 'Resource', 'Message', 'Acl', 'Preferences', 'sgMailbox_PRELOAD', function($q, $timeout, $log, Settings, Resource, Message, Acl, Preferences, PRELOAD) {\n angular.extend(Mailbox, {\n $q: $q,\n $timeout: $timeout,\n $log: $log,\n $$resource: new Resource(Settings.activeUser('folderURL') + 'Mail', Settings.activeUser()),\n $Message: Message,\n $$Acl: Acl,\n $Preferences: Preferences,\n $query: { sort: 'date', asc: 0 },\n selectedFolder: null,\n $refreshTimeout: null,\n PRELOAD: PRELOAD\n });\n // Initialize sort parameters from user's settings\n Preferences.ready().then(function() {\n if (Preferences.settings.Mail.SortingState) {\n Mailbox.$query.sort = Preferences.settings.Mail.SortingState[0];\n Mailbox.$query.asc = parseInt(Preferences.settings.Mail.SortingState[1]);\n }\n });\n\n return Mailbox; // return constructor\n }];\n\n /**\n * @module SOGo.MailerUI\n * @desc Factory registration of Mailbox in Angular module.\n */\n try {\n angular.module('SOGo.MailerUI');\n }\n catch(e) {\n angular.module('SOGo.MailerUI', ['SOGo.Common']);\n }\n angular.module('SOGo.MailerUI')\n .constant('sgMailbox_PRELOAD', {\n LOOKAHEAD: 50,\n SIZE: 100\n })\n .factory('Mailbox', Mailbox.$factory);\n\n /**\n * @memberof Mailbox\n * @desc Fetch list of mailboxes of a specific account\n * @param {string} accountId - the account\n * @return a promise of the HTTP operation\n * @see {@link Account.$getMailboxes}\n */\n Mailbox.$find = function(account) {\n var path, futureMailboxData;\n\n futureMailboxData = this.$$resource.fetch(account.id.toString(), 'view');\n\n return Mailbox.$unwrapCollection(account, futureMailboxData); // a collection of mailboxes\n };\n\n /**\n * @memberof Mailbox\n * @desc Unwrap to a collection of Mailbox instances.\n * @param {string} account - the account\n * @param {promise} futureMailboxData - a promise of the mailboxes metadata\n * @returns a promise of a collection of Mailbox objects\n */\n Mailbox.$unwrapCollection = function(account, futureMailboxData) {\n var collection = [],\n // Local recursive function\n createMailboxes = function(level, mailbox) {\n for (var i = 0; i < mailbox.children.length; i++) {\n mailbox.children[i].level = level;\n mailbox.children[i] = new Mailbox(account, mailbox.children[i]);\n createMailboxes(level+1, mailbox.children[i]);\n }\n };\n //collection.$futureMailboxData = futureMailboxData;\n\n return futureMailboxData.then(function(data) {\n return Mailbox.$timeout(function() {\n // Each entry is spun up as a Mailbox instance\n angular.forEach(data.mailboxes, function(data, index) {\n data.level = 0;\n var mailbox = new Mailbox(account, data);\n createMailboxes(1, mailbox); // recursively create all sub-mailboxes\n collection.push(mailbox);\n });\n return collection;\n });\n });\n };\n\n /**\n * @memberof Mailbox\n * @desc Build the path of the mailbox (or account only).\n * @param {string} accountId - the account ID\n * @param {string} [mailboxPath] - the mailbox path\n * @returns a string representing the path relative to the mail module\n */\n Mailbox.$absolutePath = function(accountId, mailboxPath) {\n var path = [];\n\n if (mailboxPath) {\n path = _.map(mailboxPath.split('/'), function(component) {\n return 'folder' + component.asCSSIdentifier();\n });\n }\n\n path.splice(0, 0, accountId); // insert account ID\n\n return path.join('/');\n };\n\n /**\n * @function init\n * @memberof Mailbox.prototype\n * @desc Extend instance with new data and compute additional attributes.\n * @param {object} data - attributes of mailbox\n */\n Mailbox.prototype.init = function(data) {\n var _this = this;\n this.$isLoading = false;\n this.$messages = [];\n this.uidsMap = {};\n angular.extend(this, data);\n if (this.path) {\n this.id = this.$id();\n this.$acl = new Mailbox.$$Acl('Mail/' + this.id);\n }\n if (this.type) {\n this.$isEditable = this.isEditable();\n }\n if (angular.isUndefined(this.$shadowData)) {\n // Make a copy of the data for an eventual reset\n this.$shadowData = this.$omit();\n }\n };\n\n /**\n * @function $id\n * @memberof Mailbox.prototype\n * @desc Build the unique ID to identified the mailbox.\n * @returns a string representing the path relative to the mail module\n */\n Mailbox.prototype.$id = function() {\n return Mailbox.$absolutePath(this.$account.id, this.path);\n };\n\n /**\n * @function $selectedCount\n * @memberof Mailbox.prototype\n * @desc Return the number of messages selected by the user.\n * @returns the number of selected messages\n */\n Mailbox.prototype.$selectedCount = function() {\n var count;\n\n count = 0;\n if (this.$messages) {\n count = (_.filter(this.$messages, function(message) { return message.selected; })).length;\n }\n return count;\n };\n\n /**\n * @function $filter\n * @memberof Mailbox.prototype\n * @desc Fetch the messages metadata of the mailbox\n * @param {object} [sort] - sort preferences. Defaults to descendent by date.\n * @param {string} sort.match - either AND or OR\n * @param {string} sort.sort - either arrival, subject, from, to, date, or size\n * @param {boolean} sort.asc - sort is ascendant if true\n * @param {object[]} [filters] - list of filters for the query\n * @param {string} filters.searchBy - either subject, from, to, cc, or body\n * @param {string} filters.searchInput - the search string to match\n * @param {boolean} filters.negative - negate the condition\n * @returns a promise of the HTTP operation\n */\n Mailbox.prototype.$filter = function(sortingAttributes, filters) {\n var _this = this, options = {};\n\n if (!angular.isDefined(this.unseenCount))\n this.unseenCount = 0;\n\n this.$isLoading = true;\n\n return Mailbox.$Preferences.ready().then(function() {\n\n if (Mailbox.$refreshTimeout)\n Mailbox.$timeout.cancel(Mailbox.$refreshTimeout);\n\n if (sortingAttributes)\n // Sorting preferences are common to all mailboxes\n angular.extend(Mailbox.$query, sortingAttributes);\n\n angular.extend(options, { sortingAttributes: Mailbox.$query });\n if (angular.isDefined(filters)) {\n options.filters = _.reject(filters, function(filter) {\n return angular.isUndefined(filter.searchInput) || filter.searchInput.length === 0;\n });\n _.each(options.filters, function(filter) {\n var secondFilter,\n match = filter.searchBy.match(/(\\w+)_or_(\\w+)/);\n if (match) {\n options.sortingAttributes.match = 'OR';\n filter.searchBy = match[1];\n secondFilter = angular.copy(filter);\n secondFilter.searchBy = match[2];\n options.filters.push(secondFilter);\n }\n });\n }\n\n // Restart the refresh timer, if needed\n var refreshViewCheck = Mailbox.$Preferences.defaults.SOGoRefreshViewCheck;\n if (refreshViewCheck && refreshViewCheck != 'manually') {\n var f = angular.bind(_this, Mailbox.prototype.$filter);\n Mailbox.$refreshTimeout = Mailbox.$timeout(f, refreshViewCheck.timeInterval()*1000);\n }\n\n var futureMailboxData = Mailbox.$$resource.post(_this.id, 'view', options);\n return _this.$unwrap(futureMailboxData);\n });\n };\n\n /**\n * @function $loadMessage\n * @memberof Mailbox.prototype\n * @desc Check if the message is loaded and in any case, fetch more messages headers from the server.\n * @returns true if the message metadata are already fetched\n */\n Mailbox.prototype.$loadMessage = function(messageId) {\n var startIndex = this.uidsMap[messageId],\n endIndex,\n max = this.$messages.length,\n loaded = false,\n uids,\n futureHeadersData;\n if (angular.isDefined(this.uidsMap[messageId]) && startIndex < this.$messages.length) {\n // Index is valid\n if (angular.isDefined(this.$messages[startIndex].subject)) {// || this.$messages[startIndex].loading) {\n // Message headers are loaded or data is coming\n loaded = true;\n }\n\n // Preload more headers if possible\n endIndex = Math.min(startIndex + Mailbox.PRELOAD.LOOKAHEAD, max - 1);\n if (!angular.isDefined(this.$messages[endIndex].subject) &&\n !angular.isDefined(this.$messages[endIndex].loading)) {\n endIndex = Math.min(startIndex + Mailbox.PRELOAD.SIZE, max);\n for (uids = []; startIndex < endIndex && startIndex < max; startIndex++) {\n if (angular.isDefined(this.$messages[startIndex].subject) || this.$messages[startIndex].loading) {\n // Message at this index is already loaded; increase the end index\n endIndex++;\n }\n else {\n // Message at this index will be loaded\n uids.push(this.$messages[startIndex].uid);\n this.$messages[startIndex].loading = true;\n }\n }\n\n Mailbox.$log.debug('Loading UIDs ' + uids.join(' '));\n futureHeadersData = Mailbox.$$resource.post(this.id, 'headers', {uids: uids});\n this.$unwrapHeaders(futureHeadersData);\n }\n }\n return loaded;\n };\n\n /**\n * @function isEditable\n * @memberof Mailbox.prototype\n * @desc Checks if the mailbox is editable based on its type.\n * @returns true if the mailbox is not a special folder.\n */\n Mailbox.prototype.isEditable = function() {\n return this.type == 'folder';\n };\n\n /**\n * @function $rename\n * @memberof AddressBook.prototype\n * @desc Rename the addressbook and keep the list sorted\n * @param {string} name - the new name\n * @returns a promise of the HTTP operation\n */\n Mailbox.prototype.$rename = function() {\n var _this = this,\n findParent,\n deferred = Mailbox.$q.defer(),\n parent,\n children,\n i;\n\n if (this.name == this.$shadowData.name) {\n // Name hasn't changed\n deferred.resolve();\n return deferred.promise;\n }\n\n // Local recursive function\n findParent = function(parent, children) {\n var parentMailbox = null,\n mailbox = _.find(children, function(o) {\n return o.path == _this.path;\n });\n if (mailbox) {\n parentMailbox = parent;\n }\n else {\n angular.forEach(children, function(o) {\n if (!parentMailbox && o.children && o.children.length > 0) {\n parentMailbox = findParent(o, o.children);\n }\n });\n }\n return parentMailbox;\n };\n\n // Find mailbox parent\n parent = findParent(null, this.$account.$mailboxes);\n if (parent === null)\n children = this.$account.$mailboxes;\n else\n children = parent.children;\n\n // Find index of mailbox among siblings\n i = _.indexOf(_.pluck(children, 'id'), this.id);\n\n this.$save().then(function(data) {\n var sibling;\n angular.extend(_this, data); // update the path attribute\n _this.id = _this.$id();\n\n // Move mailbox among its siblings according to its new name\n children.splice(i, 1);\n sibling = _.find(children, function(o) {\n Mailbox.$log.debug(o.name + ' ? ' + _this.name);\n return (o.type == 'folder' && o.name.localeCompare(_this.name) > 0);\n });\n if (sibling) {\n i = _.indexOf(_.pluck(children, 'id'), sibling.id);\n }\n else {\n i = children.length;\n }\n children.splice(i, 0, _this);\n\n deferred.resolve();\n }, function(data) {\n deferred.reject(data);\n });\n\n return deferred.promise;\n };\n\n /**\n * @function $compact\n * @memberof Mailbox.prototype\n * @desc Compact the mailbox\n * @returns a promise of the HTTP operation\n */\n Mailbox.prototype.$compact = function() {\n return Mailbox.$$resource.post(this.id, 'expunge');\n };\n\n /**\n * @function $setFolderAs\n * @memberof Mailbox.prototype\n * @desc Set a folder as Drafts/Sent/Trash\n * @returns a promise of the HTTP operation\n */\n Mailbox.prototype.$setFolderAs = function(type) {\n return Mailbox.$$resource.post(this.id, 'setAs' + type + 'Folder');\n };\n\n /**\n * @function $emptyTrash\n * @memberof Mailbox.prototype\n * @desc Empty the Trash folder.\n * @returns a promise of the HTTP operation\n */\n Mailbox.prototype.$emptyTrash = function() {\n var _this = this;\n\n return Mailbox.$$resource.post(this.id, 'emptyTrash').then(function() {\n // Remove all messages from the mailbox\n _this.$messages = [];\n _this.uidsMap = {};\n _this.unseenCount = 0;\n\n // If we had any submailboxes, lets do a refresh of the mailboxes list\n if (angular.isDefined(_this.children) && _this.children.length)\n _this.$account.$getMailboxes({reload: true});\n });\n };\n\n /**\n * @function $markAsRead\n * @memberof Mailbox.prototype\n * @desc Mark all messages from folder as read\n * @returns a promise of the HTTP operation\n */\n Mailbox.prototype.$markAsRead = function() {\n return Mailbox.$$resource.post(this.id, 'markRead');\n };\n\n /**\n * @function $flagMessages\n * @memberof Mailbox.prototype\n * @desc Add or remove a flag on a message set\n * @returns a promise of the HTTP operation\n */\n Mailbox.prototype.$flagMessages = function(uids, flags, operation) {\n var data = {msgUIDs: uids,\n flags: flags,\n operation: operation};\n\n return Mailbox.$$resource.post(this.id, 'addOrRemoveLabel', data);\n };\n\n /**\n * @function $delete\n * @memberof Mailbox.prototype\n * @desc Delete the mailbox from the server\n * @returns a promise of the HTTP operation\n */\n Mailbox.prototype.$delete = function() {\n var _this = this,\n deferred = Mailbox.$q.defer(),\n promise;\n\n promise = Mailbox.$$resource.remove(this.id);\n\n promise.then(function() {\n _this.$account.$getMailboxes({reload: true});\n deferred.resolve(true);\n }, function(data, status) {\n deferred.reject(data);\n });\n return deferred.promise;\n };\n\n /**\n * @function $deleteMessages\n * @memberof Mailbox.prototype\n * @desc Delete multiple messages from mailbox.\n * @return a promise of the HTTP operation\n */\n Mailbox.prototype.$deleteMessages = function(uids) {\n return Mailbox.$$resource.post(this.id, 'batchDelete', {uids: uids});\n };\n\n /**\n * @function $copyMessages\n * @memberof Mailbox.prototype\n * @desc Copy multiple messages from the current mailbox to a target one\n * @return a promise of the HTTP operation\n */\n Mailbox.prototype.$copyMessages = function(uids, folder) {\n return Mailbox.$$resource.post(this.id, 'copyMessages', {uids: uids, folder: folder});\n };\n\n /**\n * @function $moveMessages\n * @memberof Mailbox.prototype\n * @desc Move multiple messages from the current mailbox to a target one\n * @return a promise of the HTTP operation\n */\n Mailbox.prototype.$moveMessages = function(uids, folder) {\n return Mailbox.$$resource.post(this.id, 'moveMessages', {uids: uids, folder: folder});\n };\n \n /**\n * @function $reset\n * @memberof Mailbox.prototype\n * @desc Reset the original state the mailbox's data.\n */\n Mailbox.prototype.$reset = function() {\n var _this = this;\n angular.forEach(this, function(value, key) {\n if (key != 'constructor' && key != 'children' && key[0] != '$') {\n delete _this[key];\n }\n });\n angular.extend(this, this.$shadowData);\n this.$shadowData = this.$omit();\n };\n\n /**\n * @function $save\n * @memberof Mailbox.prototype\n * @desc Save the mailbox to the server. This currently can only affect the name of the mailbox.\n * @returns a promise of the HTTP operation\n */\n Mailbox.prototype.$save = function() {\n var _this = this;\n\n return Mailbox.$$resource.save(this.id, this.$omit()).then(function(data) {\n // Make a copy of the data for an eventual reset\n _this.$shadowData = _this.$omit();\n Mailbox.$log.debug(JSON.stringify(data, undefined, 2));\n return data;\n }, function(data) {\n Mailbox.$log.error(JSON.stringify(data, undefined, 2));\n // Restore previous version\n _this.$reset();\n });\n };\n\n /**\n * @function $newMailbox\n * @memberof Mailbox.prototype\n * @desc Create a new mailbox on the server and refresh the list of mailboxes.\n * @returns a promise of the HTTP operations\n */\n Mailbox.prototype.$newMailbox = function(path, name) {\n return this.$account.$newMailbox(path, name);\n };\n\n /**\n * @function $omit\n * @memberof Mailbox.prototype\n * @desc Return a sanitized object used to send to the server.\n * @return an object literal copy of the Mailbox instance\n */\n Mailbox.prototype.$omit = function() {\n var mailbox = {};\n angular.forEach(this, function(value, key) {\n if (key != 'constructor' &&\n key != 'children' &&\n key[0] != '$') {\n mailbox[key] = value;\n }\n });\n return mailbox;\n };\n\n /**\n * @function $unwrap\n * @memberof Mailbox.prototype\n * @desc Unwrap a promise and instanciate new Message objects using received data.\n * @param {promise} futureMailboxData - a promise of the Mailbox's metadata\n * @returns a promise of the HTTP operation\n */\n Mailbox.prototype.$unwrap = function(futureMailboxData) {\n var _this = this,\n deferred = Mailbox.$q.defer();\n\n this.$futureMailboxData = futureMailboxData;\n this.$futureMailboxData.then(function(data) {\n Mailbox.$timeout(function() {\n var uids, headers;\n\n _this.init(data);\n\n if (_this.uids) {\n Mailbox.$log.debug('unwrapping ' + data.uids.length + ' messages');\n \n // First entry of 'headers' are keys\n headers = _.invoke(_this.headers[0], 'toLowerCase');\n _this.headers.splice(0, 1);\n\n // First entry of 'uids' are keys when threaded view is enabled\n if (_this.threaded) {\n uids = _this.uids[0];\n _this.uids.splice(0, 1);\n }\n\n // Instanciate Message objects\n _.reduce(_this.uids, function(msgs, msg, i) {\n var data;\n if (_this.threaded)\n data = _.object(uids, msg);\n else\n data = {uid: msg.toString()};\n\n // Build map of UID <=> index\n _this.uidsMap[data.uid] = i;\n\n msgs.push(new Mailbox.$Message(_this.$account.id, _this, data));\n\n return msgs;\n }, _this.$messages);\n\n // Extend Message objects with received headers\n _.each(_this.headers, function(data) {\n var msg = _.object(headers, data),\n i = _this.uidsMap[msg.uid.toString()];\n _.extend(_this.$messages[i], msg);\n });\n }\n Mailbox.$log.debug('mailbox ' + _this.id + ' ready');\n _this.$isLoading = false;\n deferred.resolve(_this.$messages);\n });\n }, function(data) {\n angular.extend(_this, data);\n _this.isError = true;\n deferred.reject();\n });\n\n return deferred.promise;\n };\n\n /**\n * @function $unwrapHeaders\n * @memberof Mailbox.prototype\n * @desc Unwrap a promise and extend matching Message objects using received data.\n * @param {promise} futureHeadersData - a promise of some messages metadata\n */\n Mailbox.prototype.$unwrapHeaders = function(futureHeadersData) {\n var _this = this;\n\n futureHeadersData.then(function(data) {\n Mailbox.$timeout(function() {\n var headers, j;\n if (data.length > 0) {\n // First entry of 'headers' are keys\n headers = _.invoke(data[0], 'toLowerCase');\n data.splice(0, 1);\n _.each(data, function(messageHeaders) {\n messageHeaders = _.object(headers, messageHeaders);\n j = _this.uidsMap[messageHeaders.uid.toString()];\n if (angular.isDefined(j)) {\n _.extend(_this.$messages[j], messageHeaders);\n }\n });\n }\n });\n });\n };\n\n})();\n","/* -*- Mode: javascript; indent-tabs-mode: nil; c-basic-offset: 2 -*- */\n\n(function() {\n 'use strict';\n\n /**\n * @name Message\n * @constructor\n * @param {string} accountId - the account ID\n * @param {string} mailboxPath - an array of the mailbox path components\n * @param {object} futureAddressBookData - either an object literal or a promise\n */\n function Message(accountId, mailbox, futureMessageData) {\n this.accountId = accountId;\n this.$mailbox = mailbox;\n this.$hasUnsafeContent = false;\n this.$loadUnsafeContent = false;\n this.$showDetailedRecipients = false;\n this.editable = {to: [], cc: [], bcc: []};\n // Data is immediately available\n if (typeof futureMessageData.then !== 'function') {\n //console.debug(JSON.stringify(futureMessageData, undefined, 2));\n angular.extend(this, futureMessageData);\n this.id = this.$absolutePath();\n this.$formatFullAddresses();\n }\n else {\n // The promise will be unwrapped first\n this.$unwrap(futureMessageData);\n }\n this.selected = false;\n }\n\n /**\n * @memberof Message\n * @desc The factory we'll use to register with Angular\n * @returns the Message constructor\n */\n Message.$factory = ['$q', '$timeout', '$log', '$sce', 'sgSettings', 'Gravatar', 'Resource', 'Preferences', function($q, $timeout, $log, $sce, Settings, Gravatar, Resource, Preferences) {\n angular.extend(Message, {\n $q: $q,\n $timeout: $timeout,\n $log: $log,\n $sce: $sce,\n $gravatar: Gravatar,\n $$resource: new Resource(Settings.activeUser('folderURL') + 'Mail', Settings.activeUser())\n });\n // Initialize tags form user's defaults\n Preferences.ready().then(function() {\n if (Preferences.defaults.SOGoMailLabelsColors) {\n Message.$tags = Preferences.defaults.SOGoMailLabelsColors;\n }\n });\n\n return Message; // return constructor\n }];\n\n /**\n * @module SOGo.MailerUI\n * @desc Factory registration of Message in Angular module.\n */\n try {\n angular.module('SOGo.MailerUI');\n }\n catch(e) {\n angular.module('SOGo.MailerUI', ['SOGo.Common']);\n }\n angular.module('SOGo.MailerUI')\n .factory('Message', Message.$factory);\n\n /**\n * @function filterTags\n * @memberof Message.prototype\n * @desc Search for tags (ie., mail labels) matching some criterias\n * @param {string} search - the search string to match\n * @returns a collection of strings\n */\n Message.filterTags = function(query) {\n var re = new RegExp(query, 'i');\n return _.filter(_.keys(Message.$tags), function(tag) {\n var value = Message.$tags[tag];\n return value[0].search(re) != -1;\n });\n };\n\n /**\n * @function $absolutePath\n * @memberof Message.prototype\n * @desc Build the path of the message\n * @returns a string representing the path relative to the mail module\n */\n Message.prototype.$absolutePath = function(options) {\n var path;\n\n path = _.map(this.$mailbox.path.split('/'), function(component) {\n return 'folder' + component.asCSSIdentifier();\n });\n path.splice(0, 0, this.accountId); // insert account ID\n if (options && options.asDraft && this.draftId) {\n path.push(this.draftId); // add draft ID\n }\n else {\n path.push(this.uid); // add message UID\n }\n\n return path.join('/');\n };\n\n /**\n * @function $setUID\n * @memberof Message.prototype\n * @desc Change the UID of the message. This happens when saving a draft.\n * @param {number} uid - the new message UID\n */\n Message.prototype.$setUID = function(uid) {\n var oldUID = this.uid || -1;\n\n if (oldUID != uid) {\n this.uid = uid;\n this.id = this.$absolutePath();\n if (oldUID > -1 && this.$mailbox.uidsMap[oldUID]) {\n this.$mailbox.uidsMap[uid] = this.$mailbox.uidsMap[oldUID];\n this.$mailbox.uidsMap[oldUID] = null;\n }\n }\n };\n\n /**\n * @function $formatFullAddresses\n * @memberof Message.prototype\n * @desc Format all sender and recipients addresses with a complete description (name ).\n * This function also generates a gravatar for each email address, and a short name\n */\n Message.prototype.$formatFullAddresses = function() {\n var _this = this;\n var identities = _.pluck(_this.$mailbox.$account.identities, 'email');\n\n // Build long representation of email addresses\n _.each(['from', 'to', 'cc', 'bcc', 'reply-to'], function(type) {\n _.each(_this[type], function(data, i) {\n if (data.name && data.name != data.email) {\n data.full = data.name + ' <' + data.email + '>';\n\n // If we have \"Alice Foo\" as name, we grab \"Alice\"\n if (data.name.split(' ').length)\n data.shortname = data.name.split(' ')[0].replace('\\'','');\n }\n else {\n data.full = '<' + data.email + '>';\n data.shortname = data.email.split('@')[0];\n }\n\n // Generate the gravatar\n data.image = Message.$gravatar(data.email, 32);\n\n // If the current user is the recepient, overwrite\n // the short name with 'me'\n if (_.indexOf(identities, data.email) >= 0)\n data.shortname = 'me';\n });\n });\n };\n\n /**\n * @function $shortRecipients\n * @memberof Message.prototype\n * @desc Format all recipients into a very compact string\n * @returns a compacted string of all recipients\n */\n Message.prototype.$shortRecipients = function() {\n var _this = this;\n var result = [];\n\n // Build long representation of email addresses\n _.each(['to', 'cc', 'bcc'], function(type) {\n _.each(_this[type], function(data, i) {\n result.push(data.shortname);\n });\n });\n\n return result.join(', ');\n };\n\n /**\n * @function $shortAddress\n * @memberof Message.prototype\n * @desc Format the first address of a specific type with a short description.\n * @returns a string of the name or the email of the envelope address type\n */\n Message.prototype.$shortAddress = function(type) {\n var address = '';\n if (this[type] && this[type].length > 0) {\n address = this[type][0].name || this[type][0].email || '';\n }\n\n return address;\n };\n\n /**\n * @function loadUnsafeContent\n * @memberof Message.prototype\n * @desc Mark the message to load unsafe resources when calling $content().\n */\n Message.prototype.loadUnsafeContent = function() {\n this.$loadUnsafeContent = true;\n };\n\n /**\n * @function showDetailedRecipients\n * @memberof Message.prototype\n * @desc Mark the message to show all to/cc recipients.\n */\n Message.prototype.showDetailedRecipients = function() {\n this.$showDetailedRecipients = true;\n };\n\n /**\n * @function $content\n * @memberof Message.prototype\n * @desc Get the message body as accepted by SCE (Angular Strict Contextual Escaping).\n * @returns the HTML representation of the body\n */\n Message.prototype.$content = function() {\n var _this = this,\n parts = [],\n _visit = function(part) {\n part.msgclass = 'msg-attachment-other';\n if (part.type == 'UIxMailPartAlternativeViewer') {\n _visit(_.find(part.content, function(alternatePart) {\n return part.preferredPart == alternatePart.contentType;\n }));\n }\n // Can be used for UIxMailPartMixedViewer and UIxMailPartMessageViewer\n else if (angular.isArray(part.content)) {\n _.each(part.content, function(mixedPart) {\n _visit(mixedPart);\n });\n }\n else {\n if (angular.isUndefined(part.safeContent)) {\n // Keep a copy of the original content\n part.safeContent = part.content;\n _this.$hasUnsafeContent = (part.safeContent.indexOf(' unsafe-') > -1);\n }\n if (part.type == 'UIxMailPartHTMLViewer') {\n part.html = true;\n if (_this.$loadUnsafeContent) {\n if (angular.isUndefined(part.unsafeContent)) {\n part.unsafeContent = document.createElement('div');\n part.unsafeContent.innerHTML = part.safeContent;\n angular.forEach(['src', 'data', 'classid', 'background', 'style'], function(suffix) {\n var elements = part.unsafeContent.querySelectorAll('[unsafe-' + suffix + ']'),\n element,\n value,\n i;\n for (i = 0; i < elements.length; i++) {\n element = angular.element(elements[i]);\n value = element.attr('unsafe-' + suffix);\n element.attr(suffix, value);\n element.removeAttr('unsafe-' + suffix);\n }\n });\n }\n part.content = Message.$sce.trustAs('html', part.unsafeContent.innerHTML);\n }\n else {\n part.content = Message.$sce.trustAs('html', part.safeContent);\n }\n parts.push(part);\n }\n else if (part.type == 'UIxMailPartICalViewer' ||\n part.type == 'UIxMailPartImageViewer' ||\n part.type == 'UIxMailPartLinkViewer') {\n\n // UIxMailPartICalViewer injects 'participants'\n if (part.participants) {\n _.each(part.participants, function(participant) {\n participant.image = Message.$gravatar(participant.email, 32);\n });\n }\n\n if (part.type == 'UIxMailPartImageViewer')\n part.msgclass = 'msg-attachment-image';\n\n // Trusted content that can be compiled (Angularly-speaking)\n part.compile = true;\n parts.push(part);\n }\n else {\n part.html = true;\n part.content = Message.$sce.trustAs('html', part.safeContent);\n parts.push(part);\n }\n }\n };\n _visit(this.parts);\n\n return parts;\n };\n\n /**\n * @function $editableContent\n * @memberof Message.prototype\n * @desc First, fetch the draft ID that corresponds to the temporary draft object on the SOGo server.\n * Secondly, fetch the editable message body along with other metadata such as the recipients.\n * @returns the HTML representation of the body\n */\n Message.prototype.$editableContent = function() {\n var _this = this;\n\n return Message.$$resource.fetch(this.id, 'edit').then(function(data) {\n angular.extend(_this, data);\n return Message.$$resource.fetch(_this.$absolutePath({asDraft: true}), 'edit').then(function(data) {\n Message.$log.debug('editable = ' + JSON.stringify(data, undefined, 2));\n angular.extend(_this.editable, data);\n return data.text;\n });\n });\n };\n\n /**\n * @function addTag\n * @memberof Message.prototype\n * @desc Add a mail tag on the current message.\n * @param {string} tag - the tag name\n * @returns a promise of the HTTP operation\n */\n Message.prototype.addTag = function(tag) {\n return this.$addOrRemoveTag('add', tag);\n };\n\n /**\n * @function removeTag\n * @memberof Message.prototype\n * @desc Remove a mail tag from the current message.\n * @param {string} tag - the tag name\n * @returns a promise of the HTTP operation\n */\n Message.prototype.removeTag = function(tag) {\n return this.$addOrRemoveTag('remove', tag);\n };\n\n /**\n * @function $addOrRemoveTag\n * @memberof Message.prototype\n * @desc Add or remove a mail tag on the current message.\n * @param {string} operation - the operation name to perform\n * @param {string} tag - the tag name\n * @returns a promise of the HTTP operation\n */\n Message.prototype.$addOrRemoveTag = function(operation, tag) {\n var data = {\n operation: operation,\n msgUIDs: [this.uid],\n flags: tag\n };\n\n if (tag)\n return Message.$$resource.post(this.$mailbox.$id(), 'addOrRemoveLabel', data);\n };\n\n /**\n * @function $imipAction\n * @memberof Message.prototype\n * @desc Perform IMIP actions on the current message.\n * @param {string} path - the path of the IMIP calendar part \n * @param {string} action - the the IMIP action to perform\n * @param {object} data - the delegation info \n */\n Message.prototype.$imipAction = function(path, action, data) {\n var _this = this;\n Message.$$resource.post([this.id, path].join('/'), action, data).then(function(data) {\n Message.$timeout(function() {\n _this.$reload();\n }, function() {\n // TODO: show toast\n });\n });\n };\n\n /**\n * @function $sendMDN\n * @memberof Message.prototype\n * @desc Send MDN response for current email message\n */\n Message.prototype.$sendMDN = function() {\n this.shouldAskReceipt = 0;\n return Message.$$resource.post(this.id, 'sendMDN');\n };\n\n /**\n * @function $deleteAttachment\n * @memberof Message.prototype\n * @desc Delete an attachment from a message being composed\n * @param {string} filename - the filename of the attachment to delete\n */\n Message.prototype.$deleteAttachment = function(filename) {\n var action = 'deleteAttachment?filename=' + filename;\n var _this = this;\n Message.$$resource.post(this.$absolutePath({asDraft: true}), action).then(function(data) {\n Message.$timeout(function() {\n _this.editable.attachmentAttrs = _.filter(_this.editable.attachmentAttrs, function(attachment) {\n return attachment.filename != filename;\n });\n }, function() {\n // TODO: show toast\n });\n });\n };\n\n /**\n * @function $markAsFlaggedOrUnflagged\n * @memberof Message.prototype\n * @desc Add or remove a the \\\\Flagged flag on the current message.\n * @returns a promise of the HTTP operation\n */\n Message.prototype.toggleFlag = function() {\n var _this = this,\n action = 'markMessageFlagged';\n\n if (this.isflagged)\n action = 'markMessageUnflagged';\n\n return Message.$$resource.post(this.id, action).then(function(data) {\n Message.$timeout(function() {\n _this.isflagged = !_this.isflagged;\n });\n });\n };\n\n /**\n * @function $reload\n * @memberof Message.prototype\n * @desc Fetch the viewable message body along with other metadata such as the list of attachments.\n * @returns a promise of the HTTP operation\n */\n Message.prototype.$reload = function() {\n var futureMessageData;\n\n futureMessageData = Message.$$resource.fetch(this.id, 'view');\n\n return this.$unwrap(futureMessageData);\n };\n\n /**\n * @function $reply\n * @memberof Message.prototype\n * @desc Prepare a new Message object as a reply to the sender.\n * @returns a promise of the HTTP operations\n */\n Message.prototype.$reply = function() {\n return this.$newDraft('reply');\n };\n\n /**\n * @function $replyAll\n * @memberof Message.prototype\n * @desc Prepare a new Message object as a reply to the sender and all recipients.\n * @returns a promise of the HTTP operations\n */\n Message.prototype.$replyAll = function() {\n return this.$newDraft('replyall');\n };\n\n /**\n * @function $forward\n * @memberof Message.prototype\n * @desc Prepare a new Message object as a forward.\n * @returns a promise of the HTTP operations\n */\n Message.prototype.$forward = function() {\n return this.$newDraft('forward');\n };\n\n /**\n * @function $newDraft\n * @memberof Message.prototype\n * @desc Prepare a new Message object as a reply or a forward of the current message and associated\n * to the draft mailbox.\n * @see {@link Account.$newMessage}\n * @see {@link Message.$editableContent}\n * @see {@link Message.$reply}\n * @see {@link Message.$replyAll}\n * @see {@link Message.$forwad}\n * @param {string} action - the HTTP action to perform on the message\n * @returns a promise of the HTTP operations\n */\n Message.prototype.$newDraft = function(action) {\n var _this = this;\n\n // Query server for draft folder and draft UID\n return Message.$$resource.fetch(this.id, action).then(function(data) {\n var mailbox, message;\n Message.$log.debug('New ' + action + ': ' + JSON.stringify(data, undefined, 2));\n mailbox = _this.$mailbox.$account.$getMailboxByPath(data.mailboxPath);\n message = new Message(data.accountId, mailbox, data);\n // Fetch draft initial data\n return Message.$$resource.fetch(message.$absolutePath({asDraft: true}), 'edit').then(function(data) {\n Message.$log.debug('New ' + action + ': ' + JSON.stringify(data, undefined, 2));\n angular.extend(message.editable, data);\n return message;\n });\n });\n };\n\n /**\n * @function $save\n * @memberof Message.prototype\n * @desc Save the message to the server.\n * @returns a promise of the HTTP operation\n */\n Message.prototype.$save = function() {\n var _this = this,\n data = this.editable;\n\n Message.$log.debug('save = ' + JSON.stringify(data, undefined, 2));\n\n return Message.$$resource.save(this.$absolutePath({asDraft: true}), data).then(function(response) {\n Message.$log.debug('save = ' + JSON.stringify(response, undefined, 2));\n _this.$setUID(response.uid);\n _this.$reload(); // fetch a new viewable version of the message\n });\n };\n\n /**\n * @function $send\n * @memberof Message.prototype\n * @desc Send the message.\n * @returns a promise of the HTTP operation\n */\n Message.prototype.$send = function() {\n var data = angular.copy(this.editable),\n deferred = Message.$q.defer();\n\n Message.$log.debug('send = ' + JSON.stringify(data, undefined, 2));\n\n Message.$$resource.post(this.$absolutePath({asDraft: true}), 'send', data).then(function(data) {\n if (data.status == 'success') {\n deferred.resolve(data);\n }\n else {\n deferred.reject(data);\n }\n });\n\n return deferred.promise;\n };\n\n /**\n * @function $unwrap\n * @memberof Message.prototype\n * @desc Unwrap a promise. \n * @param {promise} futureMessageData - a promise of some of the Message's data\n */\n Message.prototype.$unwrap = function(futureMessageData) {\n var _this = this,\n deferred = Message.$q.defer();\n\n // Expose the promise\n this.$futureMessageData = futureMessageData;\n\n // Resolve the promise\n this.$futureMessageData.then(function(data) {\n // Calling $timeout will force Angular to refresh the view\n Message.$timeout(function() {\n angular.extend(_this, data);\n _this.id = _this.$absolutePath();\n _this.$formatFullAddresses();\n _this.$loadUnsafeContent = false;\n deferred.resolve(_this);\n });\n if (!_this.isread) {\n Message.$$resource.fetch(_this.id, 'markMessageRead').then(function() {\n Message.$timeout(function() {\n _this.isread = true;\n _this.$mailbox.unseenCount--;\n });\n });\n }\n }, function(data) {\n angular.extend(_this, data);\n _this.isError = true;\n Message.$log.error(_this.error);\n deferred.reject();\n });\n\n return deferred.promise;\n };\n\n /**\n * @function $omit\n * @memberof Message.prototype\n * @desc Return a sanitized object used to send to the server.\n * @return an object literal copy of the Message instance\n */\n Message.prototype.$omit = function() {\n var message = {};\n angular.forEach(this, function(value, key) {\n if (key != 'constructor' && key[0] != '$') {\n message[key] = value;\n }\n });\n\n // Format addresses as arrays\n _.each(['from', 'to', 'cc', 'bcc', 'reply-to'], function(type) {\n if (message[type])\n message[type] = _.invoke(message[type].split(','), 'trim');\n });\n\n //Message.$log.debug(JSON.stringify(message, undefined, 2));\n return message;\n };\n\n})();\n"]} \ No newline at end of file diff --git a/UI/WebServerResources/js/Preferences.js b/UI/WebServerResources/js/Preferences.js index 0e4fe48c6..4232c9efc 100644 --- a/UI/WebServerResources/js/Preferences.js +++ b/UI/WebServerResources/js/Preferences.js @@ -1,2 +1,2 @@ -!function(){"use strict";function configure($stateProvider,$urlRouterProvider){$stateProvider.state("preferences",{"abstract":!0,views:{preferences:{templateUrl:"preferences.html",controller:"PreferencesController",controllerAs:"app"}},resolve:{statePreferences:statePreferences}}).state("preferences.general",{url:"/general",views:{module:{templateUrl:"generalPreferences.html"}}}).state("preferences.calendars",{url:"/calendars",views:{module:{templateUrl:"calendarsPreferences.html"}}}).state("preferences.addressbooks",{url:"/addressbooks",views:{module:{templateUrl:"addressbooksPreferences.html"}}}).state("preferences.mailer",{url:"/mailer",views:{module:{templateUrl:"mailerPreferences.html"}}}),$urlRouterProvider.otherwise("/general")}function statePreferences(Preferences){return Preferences}function runBlock($rootScope){$rootScope.$on("$routeChangeError",function(event,current,previous,rejection){console.error(event,current,previous,rejection)})}angular.module("SOGo.PreferencesUI",["ngSanitize","ui.router","ck","SOGo.Common","SOGo.MailerUI","SOGo.ContactsUI","SOGo.Authentication"]).config(configure).run(runBlock),configure.$inject=["$stateProvider","$urlRouterProvider"],statePreferences.$inject=["Preferences"],runBlock.$inject=["$rootScope"]}(),function(){"use strict";function AccountDialogController($mdDialog,defaults,account,accountId,mailCustomFromEnabled){function customFromIsReadonly(){return accountId>0?!1:!mailCustomFromEnabled}function cancel(){$mdDialog.cancel()}function save(){$mdDialog.hide()}var vm=this;vm.defaults=defaults,vm.account=account,vm.accountId=accountId,vm.customFromIsReadonly=customFromIsReadonly,vm.cancel=cancel,vm.save=save}AccountDialogController.$inject=["$mdDialog","defaults","account","accountId","mailCustomFromEnabled"],angular.module("SOGo.PreferencesUI").controller("AccountDialogController",AccountDialogController)}(),function(){"use strict";function FiltersDialogController($scope,$mdDialog,filter,mailboxes,labels){$scope.filter=filter,$scope.mailboxes=mailboxes,$scope.labels=labels,$scope.fieldLabels={subject:l("Subject"),from:l("From"),to:l("To"),cc:l("Cc"),to_or_cc:l("To or Cc"),size:l("Size (Kb)"),header:l("Header"),body:l("Body")},$scope.methodLabels={addflag:l("Flag the message with:"),discard:l("Discard the message"),fileinto:l("File the message in:"),keep:l("Keep the message"),redirect:l("Forward the message to:"),reject:l("Send a reject message:"),vacation:l("Send a vacation message"),stop:l("Stop processing filter rules")},$scope.numberOperatorLabels={under:l("is under"),over:l("is over")},$scope.textOperatorLabels={is:l("is"),is_not:l("is not"),contains:l("contains"),contains_not:l("does not contain"),matches:l("matches"),matches_not:l("does not match"),regex:l("matches regex"),regex_not:l("does not match regex")},$scope.flagLabels={seen:l("Seen"),deleted:l("Deleted"),answered:l("Answered"),flagged:l("Flagged"),junk:l("Junk"),not_junk:l("Not Junk")},$scope.cancel=function(){$mdDialog.cancel()},$scope.save=function(){$mdDialog.hide()},$scope.addMailFilterRule=function(event){$scope.filter.rules||($scope.filter.rules=[]),$scope.filter.rules.push({})},$scope.removeMailFilterRule=function(index){$scope.filter.rules.splice(index,1)},$scope.addMailFilterAction=function(event){$scope.filter.actions||($scope.filter.actions=[]),$scope.filter.actions.push({})},$scope.removeMailFilterAction=function(index){$scope.filter.actions.splice(index,1)}}FiltersDialogController.$inject=["$scope","$mdDialog","filter","mailboxes","labels"],angular.module("SOGo.PreferencesUI").controller("FiltersDialogController",FiltersDialogController)}(),function(){"use strict";function PreferencesController($state,$mdDialog,User,Mailbox,statePreferences,Authentication){function go(module){$state.go("preferences."+module)}function addCalendarCategory(){vm.preferences.defaults.SOGoCalendarCategoriesColors["New category"]="#aaa",vm.preferences.defaults.SOGoCalendarCategories.push("New category")}function removeCalendarCategory(index){var key=vm.preferences.defaults.SOGoCalendarCategories[index];vm.preferences.defaults.SOGoCalendarCategories.splice(index,1),delete vm.preferences.defaults.SOGoCalendarCategoriesColors[key]}function addContactCategory(){vm.preferences.defaults.SOGoContactsCategories.push("")}function removeContactCategory(index){vm.preferences.defaults.SOGoContactsCategories.splice(index,1)}function addMailAccount(ev){var account;vm.preferences.defaults.AuxiliaryMailAccounts.push({}),account=_.last(vm.preferences.defaults.AuxiliaryMailAccounts),account.name=l("New account"),account.identities=[{fullName:"",email:""}],account.receipts={receiptAction:"ignore",receiptNonRecipientAction:"ignore",receiptOutsideDomainAction:"ignore",receiptAnyAction:"ignore"},$mdDialog.show({controller:"AccountDialogController",controllerAs:"$AccountDialogController",templateUrl:"editAccount?account=new",targetEvent:ev,locals:{defaults:vm.preferences.defaults,account:account,accountId:vm.preferences.defaults.AuxiliaryMailAccounts.length-1,mailCustomFromEnabled:window.mailCustomFromEnabled}})}function editMailAccount(event,index){var account=vm.preferences.defaults.AuxiliaryMailAccounts[index];$mdDialog.show({controller:"AccountDialogController",controllerAs:"$AccountDialogController",templateUrl:"editAccount?account="+index,targetEvent:event,locals:{defaults:vm.preferences.defaults,account:account,accountId:index,mailCustomFromEnabled:window.mailCustomFromEnabled}}).then(function(){vm.preferences.defaults.AuxiliaryMailAccounts[index]=account})}function removeMailAccount(index){vm.preferences.defaults.AuxiliaryMailAccounts.splice(index,1)}function addMailLabel(){vm.preferences.defaults.SOGoMailLabelsColors.new_label=["New label","#aaa"]}function removeMailLabel(key){delete vm.preferences.defaults.SOGoMailLabelsColors[key]}function addMailFilter(ev){vm.preferences.defaults.SOGoSieveFilters||(vm.preferences.defaults.SOGoSieveFilters=[]),vm.preferences.defaults.SOGoSieveFilters.push({});var filter=_.last(vm.preferences.defaults.SOGoSieveFilters);$mdDialog.show({controller:"FiltersDialogController",templateUrl:"editFilter?filter=new",targetEvent:ev,locals:{filter:filter,mailboxes:vm.mailboxes,labels:vm.preferences.defaults.SOGoMailLabelsColors}})}function editMailFilter(index){var filter=angular.copy(vm.preferences.defaults.SOGoSieveFilters[index]);$mdDialog.show({controller:"FiltersDialogController",templateUrl:"editFilter?filter="+index,targetEvent:null,locals:{filter:filter,mailboxes:vm.mailboxes,labels:vm.preferences.defaults.SOGoMailLabelsColors}}).then(function(){vm.preferences.defaults.SOGoSieveFilters[index]=filter})}function removeMailFilter(index){vm.preferences.defaults.SOGoSieveFilters.splice(index,1)}function save(){vm.preferences.$save()}function canChangePassword(){return vm.passwords.newPassword&&vm.passwords.newPassword.length>0&&vm.passwords.newPasswordConfirmation&&vm.passwords.newPasswordConfirmation.length&&vm.passwords.newPassword==vm.passwords.newPasswordConfirmation?!0:!1}function changePassword(){Authentication.changePassword(vm.passwords.newPassword).then(function(){var alert=$mdDialog.alert({title:l("Password"),content:l("The password was changed successfully."),ok:"OK"});$mdDialog.show(alert)["finally"](function(){alert=void 0})},function(msg){var alert=$mdDialog.alert({title:l("Password"),content:msg,ok:"OK"});$mdDialog.show(alert)["finally"](function(){alert=void 0})})}function timeZonesListFilter(filter){return _.filter(vm.timeZonesList,function(value){return value.toUpperCase().indexOf(filter.toUpperCase())>=0})}var vm=this;vm.preferences=statePreferences,vm.passwords={newPassword:null,newPasswordConfirmation:null},vm.go=go,vm.addCalendarCategory=addCalendarCategory,vm.removeCalendarCategory=removeCalendarCategory,vm.addContactCategory=addContactCategory,vm.removeContactCategory=removeContactCategory,vm.addMailAccount=addMailAccount,vm.editMailAccount=editMailAccount,vm.removeMailAccount=removeMailAccount,vm.addMailLabel=addMailLabel,vm.removeMailLabel=removeMailLabel,vm.addMailFilter=addMailFilter,vm.editMailFilter=editMailFilter,vm.removeMailFilter=removeMailFilter,vm.userFilter=User.$filter,vm.save=save,vm.canChangePassword=canChangePassword,vm.changePassword=changePassword,vm.timeZonesList=window.timeZonesList,vm.timeZonesListFilter=timeZonesListFilter,vm.timeZonesSearchText="",vm.mailboxes=Mailbox.$find({id:0})}PreferencesController.$inject=["$state","$mdDialog","User","Mailbox","statePreferences","Authentication"],angular.module("SOGo.PreferencesUI").controller("PreferencesController",PreferencesController)}(); +!function(){"use strict";function configure($stateProvider,$urlRouterProvider){$stateProvider.state("preferences",{"abstract":!0,views:{preferences:{templateUrl:"preferences.html",controller:"PreferencesController",controllerAs:"app"}},resolve:{statePreferences:statePreferences}}).state("preferences.general",{url:"/general",views:{module:{templateUrl:"generalPreferences.html"}}}).state("preferences.calendars",{url:"/calendars",views:{module:{templateUrl:"calendarsPreferences.html"}}}).state("preferences.addressbooks",{url:"/addressbooks",views:{module:{templateUrl:"addressbooksPreferences.html"}}}).state("preferences.mailer",{url:"/mailer",views:{module:{templateUrl:"mailerPreferences.html"}}}),$urlRouterProvider.otherwise("/general")}function statePreferences(Preferences){return Preferences}function runBlock($rootScope){$rootScope.$on("$routeChangeError",function(event,current,previous,rejection){console.error(event,current,previous,rejection)})}angular.module("SOGo.PreferencesUI",["ngSanitize","ui.router","ck","SOGo.Common","SOGo.MailerUI","SOGo.ContactsUI","SOGo.Authentication"]).config(configure).run(runBlock),configure.$inject=["$stateProvider","$urlRouterProvider"],statePreferences.$inject=["Preferences"],runBlock.$inject=["$rootScope"]}(),function(){"use strict";function AccountDialogController($mdDialog,defaults,account,accountId,mailCustomFromEnabled){function customFromIsReadonly(){return accountId>0?!1:!mailCustomFromEnabled}function cancel(){$mdDialog.cancel()}function save(){$mdDialog.hide()}var vm=this;vm.defaults=defaults,vm.account=account,vm.accountId=accountId,vm.customFromIsReadonly=customFromIsReadonly,vm.cancel=cancel,vm.save=save}AccountDialogController.$inject=["$mdDialog","defaults","account","accountId","mailCustomFromEnabled"],angular.module("SOGo.PreferencesUI").controller("AccountDialogController",AccountDialogController)}(),function(){"use strict";function FiltersDialogController($scope,$mdDialog,filter,mailboxes,labels,sieveCapabilities){$scope.filter=filter,$scope.mailboxes=mailboxes,$scope.labels=labels,$scope.fieldLabels={subject:l("Subject"),from:l("From"),to:l("To"),cc:l("Cc"),to_or_cc:l("To or Cc"),size:l("Size (Kb)"),header:l("Header")},sieveCapabilities.indexOf("body")>-1&&($scope.fieldLabels.body=l("Body")),$scope.methodLabels={discard:l("Discard the message"),keep:l("Keep the message"),redirect:l("Forward the message to:"),vacation:l("Send a vacation message"),stop:l("Stop processing filter rules")},sieveCapabilities.indexOf("reject")>-1&&($scope.methodLabels.reject=l("Send a reject message:")),sieveCapabilities.indexOf("fileinto")>-1&&($scope.methodLabels.fileinto=l("File the message in:")),(sieveCapabilities.indexOf("imapflags")>-1||sieveCapabilities.indexOf("imap4flags")>-1)&&($scope.methodLabels.addflag=l("Flag the message with:")),$scope.numberOperatorLabels={under:l("is under"),over:l("is over")},$scope.textOperatorLabels={is:l("is"),is_not:l("is not"),contains:l("contains"),contains_not:l("does not contain"),matches:l("matches"),matches_not:l("does not match")},sieveCapabilities.indexOf("regex")>-1&&($scope.textOperatorLabels.regex=l("matches regex"),$scope.textOperatorLabels.regex_not=l("does not match regex")),$scope.flagLabels={seen:l("Seen"),deleted:l("Deleted"),answered:l("Answered"),flagged:l("Flagged"),junk:l("Junk"),not_junk:l("Not Junk")},$scope.cancel=function(){$mdDialog.cancel()},$scope.save=function(){$mdDialog.hide()},$scope.addMailFilterRule=function(event){$scope.filter.rules||($scope.filter.rules=[]),$scope.filter.rules.push({})},$scope.removeMailFilterRule=function(index){$scope.filter.rules.splice(index,1)},$scope.addMailFilterAction=function(event){$scope.filter.actions||($scope.filter.actions=[]),$scope.filter.actions.push({})},$scope.removeMailFilterAction=function(index){$scope.filter.actions.splice(index,1)}}FiltersDialogController.$inject=["$scope","$mdDialog","filter","mailboxes","labels","sieveCapabilities"],angular.module("SOGo.PreferencesUI").controller("FiltersDialogController",FiltersDialogController)}(),function(){"use strict";function PreferencesController($state,$mdDialog,$mdToast,Dialog,User,Mailbox,statePreferences,Authentication){function go(module){$state.go("preferences."+module)}function addCalendarCategory(){vm.preferences.defaults.SOGoCalendarCategoriesColors["New category"]="#aaa",vm.preferences.defaults.SOGoCalendarCategories.push("New category")}function removeCalendarCategory(index){var key=vm.preferences.defaults.SOGoCalendarCategories[index];vm.preferences.defaults.SOGoCalendarCategories.splice(index,1),delete vm.preferences.defaults.SOGoCalendarCategoriesColors[key]}function addContactCategory(){vm.preferences.defaults.SOGoContactsCategories.push("")}function removeContactCategory(index){vm.preferences.defaults.SOGoContactsCategories.splice(index,1)}function addMailAccount(ev){var account;vm.preferences.defaults.AuxiliaryMailAccounts.push({}),account=_.last(vm.preferences.defaults.AuxiliaryMailAccounts),account.name=l("New account"),account.identities=[{fullName:"",email:""}],account.receipts={receiptAction:"ignore",receiptNonRecipientAction:"ignore",receiptOutsideDomainAction:"ignore",receiptAnyAction:"ignore"},$mdDialog.show({controller:"AccountDialogController",controllerAs:"$AccountDialogController",templateUrl:"editAccount?account=new",targetEvent:ev,locals:{defaults:vm.preferences.defaults,account:account,accountId:vm.preferences.defaults.AuxiliaryMailAccounts.length-1,mailCustomFromEnabled:window.mailCustomFromEnabled}})}function editMailAccount(event,index){var account=vm.preferences.defaults.AuxiliaryMailAccounts[index];$mdDialog.show({controller:"AccountDialogController",controllerAs:"$AccountDialogController",templateUrl:"editAccount?account="+index,targetEvent:event,locals:{defaults:vm.preferences.defaults,account:account,accountId:index,mailCustomFromEnabled:window.mailCustomFromEnabled}}).then(function(){vm.preferences.defaults.AuxiliaryMailAccounts[index]=account})}function removeMailAccount(index){vm.preferences.defaults.AuxiliaryMailAccounts.splice(index,1)}function addMailLabel(){vm.preferences.defaults.SOGoMailLabelsColors.new_label=["New label","#aaa"]}function removeMailLabel(key){delete vm.preferences.defaults.SOGoMailLabelsColors[key]}function addMailFilter(ev){vm.preferences.defaults.SOGoSieveFilters||(vm.preferences.defaults.SOGoSieveFilters=[]),vm.preferences.defaults.SOGoSieveFilters.push({});var filter=_.last(vm.preferences.defaults.SOGoSieveFilters);$mdDialog.show({controller:"FiltersDialogController",templateUrl:"editFilter?filter=new",targetEvent:ev,locals:{filter:filter,mailboxes:vm.mailboxes,labels:vm.preferences.defaults.SOGoMailLabelsColors,sieveCapabilities:window.sieveCapabilities}})}function editMailFilter(index){var filter=angular.copy(vm.preferences.defaults.SOGoSieveFilters[index]);$mdDialog.show({controller:"FiltersDialogController",templateUrl:"editFilter?filter="+index,targetEvent:null,locals:{filter:filter,mailboxes:vm.mailboxes,labels:vm.preferences.defaults.SOGoMailLabelsColors,sieveCapabilities:window.sieveCapabilities}}).then(function(){vm.preferences.defaults.SOGoSieveFilters[index]=filter})}function removeMailFilter(index){vm.preferences.defaults.SOGoSieveFilters.splice(index,1)}function addDefaultEmailAddresses(){var v=[];angular.isDefined(vm.preferences.defaults.Vacation.autoReplyEmailAddresses)&&(v=vm.preferences.defaults.Vacation.autoReplyEmailAddresses.split(",")),vm.preferences.defaults.Vacation.autoReplyEmailAddresses=_.union(window.defaultEmailAddresses.split(","),v).join(",")}function save(){var sendForm=!0;if(window.forwardConstraints>0&&angular.isDefined(vm.preferences.defaults.Forward)&&vm.preferences.defaults.Forward.enabled&&angular.isDefined(vm.preferences.defaults.Forward.forwardAddress)){var addresses=vm.preferences.defaults.Forward.forwardAddress.split(","),defaultAddresses=window.defaultEmailAddresses.split(/, */),domains=[];_.forEach(defaultAddresses,function(adr){var domain=adr.split("@")[1];domain&&domains.push(domain.toLowerCase())});for(var i=0;i=0&&2==window.forwardConstraints&&(Dialog.alert(l("Error"),l("You are not allowed to forward your messages to an internal email address.")),sendForm=!1)}}sendForm&&vm.preferences.$save().then(function(data){$mdToast.show($mdToast.simple().content(l("Preferences saved")).position("top right").hideDelay(3e3))})}function canChangePassword(){return vm.passwords.newPassword&&vm.passwords.newPassword.length>0&&vm.passwords.newPasswordConfirmation&&vm.passwords.newPasswordConfirmation.length&&vm.passwords.newPassword==vm.passwords.newPasswordConfirmation?!0:!1}function changePassword(){Authentication.changePassword(vm.passwords.newPassword).then(function(){var alert=$mdDialog.alert({title:l("Password"),content:l("The password was changed successfully."),ok:"OK"});$mdDialog.show(alert)["finally"](function(){alert=void 0})},function(msg){var alert=$mdDialog.alert({title:l("Password"),content:msg,ok:"OK"});$mdDialog.show(alert)["finally"](function(){alert=void 0})})}function timeZonesListFilter(filter){return _.filter(vm.timeZonesList,function(value){return value.toUpperCase().indexOf(filter.toUpperCase())>=0})}var vm=this;vm.preferences=statePreferences,vm.passwords={newPassword:null,newPasswordConfirmation:null},vm.go=go,vm.addCalendarCategory=addCalendarCategory,vm.removeCalendarCategory=removeCalendarCategory,vm.addContactCategory=addContactCategory,vm.removeContactCategory=removeContactCategory,vm.addMailAccount=addMailAccount,vm.editMailAccount=editMailAccount,vm.removeMailAccount=removeMailAccount,vm.addMailLabel=addMailLabel,vm.removeMailLabel=removeMailLabel,vm.addMailFilter=addMailFilter,vm.editMailFilter=editMailFilter,vm.removeMailFilter=removeMailFilter,vm.addDefaultEmailAddresses=addDefaultEmailAddresses,vm.userFilter=User.$filter,vm.save=save,vm.canChangePassword=canChangePassword,vm.changePassword=changePassword,vm.timeZonesList=window.timeZonesList,vm.timeZonesListFilter=timeZonesListFilter,vm.timeZonesSearchText="",vm.mailboxes=Mailbox.$find({id:0})}PreferencesController.$inject=["$state","$mdDialog","$mdToast","Dialog","User","Mailbox","statePreferences","Authentication"],angular.module("SOGo.PreferencesUI").controller("PreferencesController",PreferencesController)}(); //# sourceMappingURL=Preferences.js.map \ No newline at end of file diff --git a/UI/WebServerResources/js/Preferences.js.map b/UI/WebServerResources/js/Preferences.js.map index 61ae36100..526a62604 100644 --- a/UI/WebServerResources/js/Preferences.js.map +++ b/UI/WebServerResources/js/Preferences.js.map @@ -1 +1 @@ -{"version":3,"file":"Preferences.js","sources":["Preferences/Preferences.app.js","Preferences/AccountDialogController.js","Preferences/FiltersDialogController.js","Preferences/PreferencesController.js"],"names":["configure","$stateProvider","$urlRouterProvider","state","abstract","views","preferences","templateUrl","controller","controllerAs","resolve","statePreferences","url","module","otherwise","Preferences","runBlock","$rootScope","$on","event","current","previous","rejection","console","error","angular","config","run","$inject","AccountDialogController","$mdDialog","defaults","account","accountId","mailCustomFromEnabled","customFromIsReadonly","cancel","save","hide","vm","this","FiltersDialogController","$scope","filter","mailboxes","labels","fieldLabels","subject","l","from","to","cc","to_or_cc","size","header","body","methodLabels","addflag","discard","fileinto","keep","redirect","reject","vacation","stop","numberOperatorLabels","under","over","textOperatorLabels","is","is_not","contains","contains_not","matches","matches_not","regex","regex_not","flagLabels","seen","deleted","answered","flagged","junk","not_junk","addMailFilterRule","rules","push","removeMailFilterRule","index","splice","addMailFilterAction","actions","removeMailFilterAction","PreferencesController","$state","User","Mailbox","Authentication","go","addCalendarCategory","SOGoCalendarCategoriesColors","SOGoCalendarCategories","removeCalendarCategory","key","addContactCategory","SOGoContactsCategories","removeContactCategory","addMailAccount","ev","AuxiliaryMailAccounts","_","last","name","identities","fullName","email","receipts","receiptAction","receiptNonRecipientAction","receiptOutsideDomainAction","receiptAnyAction","show","targetEvent","locals","length","window","editMailAccount","then","removeMailAccount","addMailLabel","SOGoMailLabelsColors","new_label","removeMailLabel","addMailFilter","SOGoSieveFilters","editMailFilter","copy","removeMailFilter","$save","canChangePassword","passwords","newPassword","newPasswordConfirmation","changePassword","alert","title","content","ok","undefined","msg","timeZonesListFilter","timeZonesList","value","toUpperCase","indexOf","userFilter","$filter","timeZonesSearchText","$find","id"],"mappings":"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","sourcesContent":["/* -*- Mode: javascript; indent-tabs-mode: nil; c-basic-offset: 2 -*- */\n/* JavaScript for SOGoPreferences */\n\n(function() {\n 'use strict';\n\n angular.module('SOGo.PreferencesUI', ['ngSanitize', 'ui.router', 'ck', 'SOGo.Common', 'SOGo.MailerUI', 'SOGo.ContactsUI', 'SOGo.Authentication'])\n .config(configure)\n .run(runBlock);\n\n /**\n * @ngInject\n */\n configure.$inject = ['$stateProvider', '$urlRouterProvider'];\n function configure($stateProvider, $urlRouterProvider) {\n $stateProvider\n .state('preferences', {\n abstract: true,\n views: {\n preferences: {\n templateUrl: 'preferences.html',\n controller: 'PreferencesController',\n controllerAs: 'app'\n }\n },\n resolve: {\n statePreferences: statePreferences\n }\n })\n .state('preferences.general', {\n url: '/general',\n views: {\n module: {\n templateUrl: 'generalPreferences.html'\n }\n }\n })\n .state('preferences.calendars', {\n url: '/calendars',\n views: {\n module: {\n templateUrl: 'calendarsPreferences.html'\n }\n }\n })\n .state('preferences.addressbooks', {\n url: '/addressbooks',\n views: {\n module: {\n templateUrl: 'addressbooksPreferences.html'\n }\n }\n })\n .state('preferences.mailer', {\n url: '/mailer',\n views: {\n module: {\n templateUrl: 'mailerPreferences.html'\n }\n }\n });\n\n // if none of the above states are matched, use this as the fallback\n $urlRouterProvider.otherwise('/general');\n }\n\n /**\n * @ngInject\n */\n statePreferences.$inject = ['Preferences'];\n function statePreferences(Preferences) {\n return Preferences;\n }\n\n /**\n * @ngInject\n */\n runBlock.$inject = ['$rootScope'];\n function runBlock($rootScope) {\n $rootScope.$on('$routeChangeError', function(event, current, previous, rejection) {\n console.error(event, current, previous, rejection);\n });\n }\n\n})();\n","/* -*- Mode: javascript; indent-tabs-mode: nil; c-basic-offset: 2 -*- */\n/* JavaScript for SOGoPreferences */\n\n(function() {\n 'use strict';\n\n /**\n * @ngInject\n */\n AccountDialogController.$inject = ['$mdDialog', 'defaults', 'account', 'accountId', 'mailCustomFromEnabled'];\n function AccountDialogController($mdDialog, defaults, account, accountId, mailCustomFromEnabled) {\n var vm = this;\n\n vm.defaults = defaults;\n vm.account = account;\n vm.accountId = accountId;\n vm.customFromIsReadonly = customFromIsReadonly;\n vm.cancel = cancel;\n vm.save = save;\n\n function customFromIsReadonly() {\n if (accountId > 0)\n return false;\n\n return !mailCustomFromEnabled;\n }\n\n function cancel() {\n $mdDialog.cancel();\n }\n\n function save() {\n $mdDialog.hide();\n }\n }\n\n angular\n .module('SOGo.PreferencesUI')\n .controller('AccountDialogController', AccountDialogController);\n\n})();\n","/* -*- Mode: javascript; indent-tabs-mode: nil; c-basic-offset: 2 -*- */\n/* JavaScript for SOGoPreferences */\n\n(function() {\n 'use strict';\n\n /**\n * @ngInject\n */\n FiltersDialogController.$inject = ['$scope', '$mdDialog', 'filter', 'mailboxes', 'labels'];\n function FiltersDialogController($scope, $mdDialog, filter, mailboxes, labels) {\n $scope.filter = filter;\n $scope.mailboxes = mailboxes;\n $scope.labels = labels;\n\n $scope.fieldLabels = {\n \"subject\": l(\"Subject\"),\n \"from\": l(\"From\"),\n \"to\": l(\"To\"),\n \"cc\": l(\"Cc\"),\n \"to_or_cc\": l(\"To or Cc\"),\n \"size\": l(\"Size (Kb)\"),\n \"header\": l(\"Header\"),\n \"body\": l(\"Body\")\n };\n\n $scope.methodLabels = {\n \"addflag\": l(\"Flag the message with:\"), \n \"discard\": l(\"Discard the message\"),\n \"fileinto\": l(\"File the message in:\"),\n \"keep\": l(\"Keep the message\"),\n \"redirect\": l(\"Forward the message to:\"),\n \"reject\": l(\"Send a reject message:\"),\n \"vacation\": l(\"Send a vacation message\"),\n \"stop\": l(\"Stop processing filter rules\")\n };\n\n $scope.numberOperatorLabels = {\n \"under\": l(\"is under\"),\n \"over\": l(\"is over\")\n };\n\n $scope.textOperatorLabels = {\n \"is\": l(\"is\"),\n \"is_not\": l(\"is not\"),\n \"contains\": l(\"contains\"),\n \"contains_not\": l(\"does not contain\"),\n \"matches\": l(\"matches\"),\n \"matches_not\": l(\"does not match\"),\n \"regex\": l(\"matches regex\"),\n \"regex_not\": l(\"does not match regex\")\n };\n\n $scope.flagLabels = {\n \"seen\": l(\"Seen\"),\n \"deleted\": l(\"Deleted\"),\n \"answered\": l(\"Answered\"),\n \"flagged\": l(\"Flagged\"),\n \"junk\": l(\"Junk\"),\n \"not_junk\": l(\"Not Junk\")\n };\n \n $scope.cancel = function() {\n $mdDialog.cancel();\n };\n \n $scope.save = function() {\n $mdDialog.hide();\n };\n \n $scope.addMailFilterRule = function(event) {\n if (!$scope.filter.rules)\n $scope.filter.rules = [];\n\n $scope.filter.rules.push({});\n };\n \n $scope.removeMailFilterRule = function(index) {\n $scope.filter.rules.splice(index, 1);\n };\n \n $scope.addMailFilterAction = function(event) {\n if (!$scope.filter.actions)\n $scope.filter.actions = [];\n\n $scope.filter.actions.push({});\n };\n \n $scope.removeMailFilterAction = function(index) {\n $scope.filter.actions.splice(index, 1);\n };\n }\n\n angular\n .module('SOGo.PreferencesUI')\n .controller('FiltersDialogController', FiltersDialogController);\n\n})();\n","/* -*- Mode: javascript; indent-tabs-mode: nil; c-basic-offset: 2 -*- */\n/* JavaScript for SOGoPreferences */\n\n(function() {\n 'use strict';\n \n /**\n * @ngInject\n */\n PreferencesController.$inject = ['$state', '$mdDialog', 'User', 'Mailbox', 'statePreferences', 'Authentication'];\n function PreferencesController($state, $mdDialog, User, Mailbox, statePreferences, Authentication) {\n var vm = this;\n\n vm.preferences = statePreferences;\n vm.passwords = { newPassword: null, newPasswordConfirmation: null };\n\n vm.go = go;\n vm.addCalendarCategory = addCalendarCategory;\n vm.removeCalendarCategory = removeCalendarCategory;\n vm.addContactCategory = addContactCategory;\n vm.removeContactCategory = removeContactCategory;\n vm.addMailAccount = addMailAccount;\n vm.editMailAccount = editMailAccount;\n vm.removeMailAccount = removeMailAccount;\n vm.addMailLabel = addMailLabel;\n vm.removeMailLabel = removeMailLabel;\n vm.addMailFilter = addMailFilter;\n vm.editMailFilter = editMailFilter;\n vm.removeMailFilter = removeMailFilter;\n vm.userFilter = User.$filter;\n vm.save = save;\n vm.canChangePassword = canChangePassword;\n vm.changePassword = changePassword;\n vm.timeZonesList = window.timeZonesList;\n vm.timeZonesListFilter = timeZonesListFilter;\n vm.timeZonesSearchText = '';\n vm.mailboxes = Mailbox.$find({ id: 0 });\n\n function go(module) {\n $state.go('preferences.' + module);\n }\n\n function addCalendarCategory() {\n vm.preferences.defaults.SOGoCalendarCategoriesColors[\"New category\"] = \"#aaa\";\n vm.preferences.defaults.SOGoCalendarCategories.push(\"New category\");\n }\n\n function removeCalendarCategory(index) {\n var key = vm.preferences.defaults.SOGoCalendarCategories[index];\n vm.preferences.defaults.SOGoCalendarCategories.splice(index, 1);\n delete vm.preferences.defaults.SOGoCalendarCategoriesColors[key];\n }\n\n function addContactCategory() {\n vm.preferences.defaults.SOGoContactsCategories.push(\"\");\n }\n\n function removeContactCategory(index) {\n vm.preferences.defaults.SOGoContactsCategories.splice(index, 1);\n }\n\n function addMailAccount(ev) {\n var account;\n\n vm.preferences.defaults.AuxiliaryMailAccounts.push({});\n\n account = _.last(vm.preferences.defaults.AuxiliaryMailAccounts);\n account.name = l(\"New account\");\n account.identities = [\n {\n fullName: \"\",\n email: \"\"\n }\n ];\n account.receipts = {\n receiptAction: \"ignore\",\n receiptNonRecipientAction: \"ignore\",\n receiptOutsideDomainAction: \"ignore\",\n receiptAnyAction: \"ignore\"\n };\n\n $mdDialog.show({\n controller: 'AccountDialogController',\n controllerAs: '$AccountDialogController',\n templateUrl: 'editAccount?account=new',\n targetEvent: ev,\n locals: {\n defaults: vm.preferences.defaults,\n account: account,\n accountId: (vm.preferences.defaults.AuxiliaryMailAccounts.length-1),\n mailCustomFromEnabled: window.mailCustomFromEnabled\n }\n });\n }\n\n function editMailAccount(event, index) {\n var account = vm.preferences.defaults.AuxiliaryMailAccounts[index];\n $mdDialog.show({\n controller: 'AccountDialogController',\n controllerAs: '$AccountDialogController',\n templateUrl: 'editAccount?account=' + index,\n targetEvent: event,\n locals: {\n defaults: vm.preferences.defaults,\n account: account,\n accountId: index,\n mailCustomFromEnabled: window.mailCustomFromEnabled\n }\n }).then(function() {\n vm.preferences.defaults.AuxiliaryMailAccounts[index] = account;\n });\n }\n\n function removeMailAccount(index) {\n vm.preferences.defaults.AuxiliaryMailAccounts.splice(index, 1);\n }\n \n function addMailLabel() {\n vm.preferences.defaults.SOGoMailLabelsColors.new_label = [\"New label\", \"#aaa\"];\n }\n\n function removeMailLabel(key) {\n delete vm.preferences.defaults.SOGoMailLabelsColors[key];\n }\n\n function addMailFilter(ev) {\n if (!vm.preferences.defaults.SOGoSieveFilters)\n vm.preferences.defaults.SOGoSieveFilters = [];\n\n vm.preferences.defaults.SOGoSieveFilters.push({});\n var filter = _.last(vm.preferences.defaults.SOGoSieveFilters);\n $mdDialog.show({\n controller: 'FiltersDialogController',\n templateUrl: 'editFilter?filter=new',\n targetEvent: ev,\n locals: {\n filter: filter,\n mailboxes: vm.mailboxes,\n labels: vm.preferences.defaults.SOGoMailLabelsColors\n }\n });\n }\n \n function editMailFilter(index) {\n var filter = angular.copy(vm.preferences.defaults.SOGoSieveFilters[index]);\n \n $mdDialog.show({\n controller: 'FiltersDialogController',\n templateUrl: 'editFilter?filter=' + index,\n targetEvent: null,\n locals: {\n filter: filter,\n mailboxes: vm.mailboxes,\n labels: vm.preferences.defaults.SOGoMailLabelsColors\n }\n }).then(function() {\n vm.preferences.defaults.SOGoSieveFilters[index] = filter;\n });\n }\n\n function removeMailFilter(index) {\n vm.preferences.defaults.SOGoSieveFilters.splice(index, 1);\n }\n \n function save() {\n vm.preferences.$save();\n }\n\n function canChangePassword() {\n if (vm.passwords.newPassword && vm.passwords.newPassword.length > 0 &&\n vm.passwords.newPasswordConfirmation && vm.passwords.newPasswordConfirmation.length &&\n vm.passwords.newPassword == vm.passwords.newPasswordConfirmation)\n return true;\n\n return false;\n }\n \n function changePassword() {\n Authentication.changePassword(vm.passwords.newPassword).then(function() {\n var alert = $mdDialog.alert({\n title: l('Password'),\n content: l('The password was changed successfully.'),\n ok: 'OK'\n });\n $mdDialog.show( alert )\n .finally(function() {\n alert = undefined;\n });\n }, function(msg) {\n var alert = $mdDialog.alert({\n title: l('Password'),\n content: msg,\n ok: 'OK'\n });\n $mdDialog.show( alert )\n .finally(function() {\n alert = undefined;\n });\n });\n }\n\n function timeZonesListFilter(filter) {\n return _.filter(vm.timeZonesList, function(value) {\n return value.toUpperCase().indexOf(filter.toUpperCase()) >= 0;\n });\n }\n }\n\n angular\n .module('SOGo.PreferencesUI')\n .controller('PreferencesController', PreferencesController);\n\n})();\n"]} \ No newline at end of file +{"version":3,"file":"Preferences.js","sources":["Preferences/Preferences.app.js","Preferences/AccountDialogController.js","Preferences/FiltersDialogController.js","Preferences/PreferencesController.js"],"names":["configure","$stateProvider","$urlRouterProvider","state","abstract","views","preferences","templateUrl","controller","controllerAs","resolve","statePreferences","url","module","otherwise","Preferences","runBlock","$rootScope","$on","event","current","previous","rejection","console","error","angular","config","run","$inject","AccountDialogController","$mdDialog","defaults","account","accountId","mailCustomFromEnabled","customFromIsReadonly","cancel","save","hide","vm","this","FiltersDialogController","$scope","filter","mailboxes","labels","sieveCapabilities","fieldLabels","subject","l","from","to","cc","to_or_cc","size","header","indexOf","body","methodLabels","discard","keep","redirect","vacation","stop","reject","fileinto","addflag","numberOperatorLabels","under","over","textOperatorLabels","is","is_not","contains","contains_not","matches","matches_not","regex","regex_not","flagLabels","seen","deleted","answered","flagged","junk","not_junk","addMailFilterRule","rules","push","removeMailFilterRule","index","splice","addMailFilterAction","actions","removeMailFilterAction","PreferencesController","$state","$mdToast","Dialog","User","Mailbox","Authentication","go","addCalendarCategory","SOGoCalendarCategoriesColors","SOGoCalendarCategories","removeCalendarCategory","key","addContactCategory","SOGoContactsCategories","removeContactCategory","addMailAccount","ev","AuxiliaryMailAccounts","_","last","name","identities","fullName","email","receipts","receiptAction","receiptNonRecipientAction","receiptOutsideDomainAction","receiptAnyAction","show","targetEvent","locals","length","window","editMailAccount","then","removeMailAccount","addMailLabel","SOGoMailLabelsColors","new_label","removeMailLabel","addMailFilter","SOGoSieveFilters","editMailFilter","copy","removeMailFilter","addDefaultEmailAddresses","v","isDefined","Vacation","autoReplyEmailAddresses","split","union","defaultEmailAddresses","join","sendForm","forwardConstraints","Forward","enabled","forwardAddress","addresses","defaultAddresses","domains","forEach","adr","domain","toLowerCase","i","alert","$save","data","simple","content","position","hideDelay","canChangePassword","passwords","newPassword","newPasswordConfirmation","changePassword","title","ok","undefined","msg","timeZonesListFilter","timeZonesList","value","toUpperCase","userFilter","$filter","timeZonesSearchText","$find","id"],"mappings":"CAGA,WACE,YAUA,SAASA,WAAUC,eAAgBC,oBACjCD,eACGE,MAAM,eACLC,YAAU,EACVC,OACEC,aACEC,YAAa,mBACbC,WAAY,wBACZC,aAAc,QAGlBC,SACEC,iBAAkBA,oBAGrBR,MAAM,uBACLS,IAAK,WACLP,OACEQ,QACEN,YAAa,8BAIlBJ,MAAM,yBACLS,IAAK,aACLP,OACEQ,QACEN,YAAa,gCAIlBJ,MAAM,4BACLS,IAAK,gBACLP,OACEQ,QACEN,YAAa,mCAIlBJ,MAAM,sBACLS,IAAK,UACLP,OACEQ,QACEN,YAAa,6BAMrBL,mBAAmBY,UAAU,YAO/B,QAASH,kBAAiBI,aACxB,MAAOA,aAOT,QAASC,UAASC,YAChBA,WAAWC,IAAI,oBAAqB,SAASC,MAAOC,QAASC,SAAUC,WACrEC,QAAQC,MAAML,MAAOC,QAASC,SAAUC,aA1E5CG,QAAQZ,OAAO,sBAAuB,aAAc,YAAa,KAAM,cAAe,gBAAiB,kBAAmB,wBACvHa,OAAO1B,WACP2B,IAAIX,UAKPhB,UAAU4B,SAAW,iBAAkB,sBAwDvCjB,iBAAiBiB,SAAW,eAQ5BZ,SAASY,SAAW,iBC1EtB,WACE,YAMA,SAASC,yBAAwBC,UAAWC,SAAUC,QAASC,UAAWC,uBAUxE,QAASC,wBACP,MAAIF,WAAY,GACP,GAEDC,sBAGV,QAASE,UACPN,UAAUM,SAGZ,QAASC,QACPP,UAAUQ,OArBZ,GAAIC,IAAKC,IAETD,IAAGR,SAAWA,SACdQ,GAAGP,QAAUA,QACbO,GAAGN,UAAYA,UACfM,GAAGJ,qBAAuBA,qBAC1BI,GAAGH,OAASA,OACZG,GAAGF,KAAOA,KATZR,wBAAwBD,SAAW,YAAa,WAAY,UAAW,YAAa,yBA2BpFH,QACGZ,OAAO,sBACPL,WAAW,0BAA2BqB,4BCnC3C,WACE,YAMA,SAASY,yBAAwBC,OAAQZ,UAAWa,OAAQC,UAAWC,OAAQC,mBAC7EJ,OAAOC,OAASA,OAChBD,OAAOE,UAAYA,UACnBF,OAAOG,OAASA,OAEhBH,OAAOK,aACLC,QAAWC,EAAE,WACbC,KAAQD,EAAE,QACVE,GAAMF,EAAE,MACRG,GAAMH,EAAE,MACRI,SAAYJ,EAAE,YACdK,KAAQL,EAAE,aACVM,OAAUN,EAAE,WAGVH,kBAAkBU,QAAQ,QAAU,KACtCd,OAAOK,YAAYU,KAAOR,EAAE,SAE9BP,OAAOgB,cACLC,QAAWV,EAAE,uBACbW,KAAQX,EAAE,oBACVY,SAAYZ,EAAE,2BACda,SAAYb,EAAE,2BACdc,KAAQd,EAAE,iCAGRH,kBAAkBU,QAAQ,UAAY,KACxCd,OAAOgB,aAAaM,OAASf,EAAE,2BAE7BH,kBAAkBU,QAAQ,YAAc,KAC1Cd,OAAOgB,aAAaO,SAAWhB,EAAE,0BAE/BH,kBAAkBU,QAAQ,aAAe,IAAMV,kBAAkBU,QAAQ,cAAgB,MAC3Fd,OAAOgB,aAAaQ,QAAUjB,EAAE,2BAElCP,OAAOyB,sBACLC,MAASnB,EAAE,YACXoB,KAAQpB,EAAE,YAGZP,OAAO4B,oBACLC,GAAMtB,EAAE,MACRuB,OAAUvB,EAAE,UACZwB,SAAYxB,EAAE,YACdyB,aAAgBzB,EAAE,oBAClB0B,QAAW1B,EAAE,WACb2B,YAAe3B,EAAE,mBAGfH,kBAAkBU,QAAQ,SAAW,KACvCd,OAAO4B,mBAAmBO,MAAQ5B,EAAE,iBACpCP,OAAO4B,mBAAmBQ,UAAY7B,EAAE,yBAG1CP,OAAOqC,YACLC,KAAQ/B,EAAE,QACVgC,QAAWhC,EAAE,WACbiC,SAAYjC,EAAE,YACdkC,QAAWlC,EAAE,WACbmC,KAAQnC,EAAE,QACVoC,SAAYpC,EAAE,aAGhBP,OAAON,OAAS,WACdN,UAAUM,UAGZM,OAAOL,KAAO,WACZP,UAAUQ,QAGZI,OAAO4C,kBAAoB,SAASnE,OAC7BuB,OAAOC,OAAO4C,QACjB7C,OAAOC,OAAO4C,UAEhB7C,OAAOC,OAAO4C,MAAMC,UAGtB9C,OAAO+C,qBAAuB,SAASC,OACrChD,OAAOC,OAAO4C,MAAMI,OAAOD,MAAO,IAGpChD,OAAOkD,oBAAsB,SAASzE,OAC/BuB,OAAOC,OAAOkD,UACjBnD,OAAOC,OAAOkD,YAEhBnD,OAAOC,OAAOkD,QAAQL,UAGxB9C,OAAOoD,uBAAyB,SAASJ,OACvChD,OAAOC,OAAOkD,QAAQF,OAAOD,MAAO,IA3FxCjD,wBAAwBb,SAAW,SAAU,YAAa,SAAU,YAAa,SAAU,qBA+F3FH,QACGZ,OAAO,sBACPL,WAAW,0BAA2BiC,4BCvG3C,WACE,YAMA,SAASsD,uBAAsBC,OAAQlE,UAAWmE,SAAUC,OAAQC,KAAMC,QAASzF,iBAAkB0F,gBA6BnG,QAASC,IAAGzF,QACVmF,OAAOM,GAAG,eAAiBzF,QAG7B,QAAS0F,uBACPhE,GAAGjC,YAAYyB,SAASyE,6BAA6B,gBAAkB,OACvEjE,GAAGjC,YAAYyB,SAAS0E,uBAAuBjB,KAAK,gBAGtD,QAASkB,wBAAuBhB,OAC9B,GAAIiB,KAAMpE,GAAGjC,YAAYyB,SAAS0E,uBAAuBf,MACzDnD,IAAGjC,YAAYyB,SAAS0E,uBAAuBd,OAAOD,MAAO,SACtDnD,IAAGjC,YAAYyB,SAASyE,6BAA6BG,KAG9D,QAASC,sBACPrE,GAAGjC,YAAYyB,SAAS8E,uBAAuBrB,KAAK,IAGtD,QAASsB,uBAAsBpB,OAC7BnD,GAAGjC,YAAYyB,SAAS8E,uBAAuBlB,OAAOD,MAAO,GAG/D,QAASqB,gBAAeC,IACtB,GAAIhF,QAEJO,IAAGjC,YAAYyB,SAASkF,sBAAsBzB,SAE9CxD,QAAUkF,EAAEC,KAAK5E,GAAGjC,YAAYyB,SAASkF,uBACzCjF,QAAQoF,KAAOnE,EAAE,eACjBjB,QAAQqF,aAEJC,SAAU,GACVC,MAAO,KAGXvF,QAAQwF,UACNC,cAAe,SACfC,0BAA2B,SAC3BC,2BAA4B,SAC5BC,iBAAkB,UAGpB9F,UAAU+F,MACRrH,WAAY,0BACZC,aAAc,2BACdF,YAAa,0BACbuH,YAAad,GACbe,QACEhG,SAAUQ,GAAGjC,YAAYyB,SACzBC,QAASA,QACTC,UAAYM,GAAGjC,YAAYyB,SAASkF,sBAAsBe,OAAO,EACjE9F,sBAAuB+F,OAAO/F,yBAKpC,QAASgG,iBAAgB/G,MAAOuE,OAC9B,GAAI1D,SAAUO,GAAGjC,YAAYyB,SAASkF,sBAAsBvB,MAC5D5D,WAAU+F,MACRrH,WAAY,0BACZC,aAAc,2BACdF,YAAa,uBAAyBmF,MACtCoC,YAAa3G,MACb4G,QACEhG,SAAUQ,GAAGjC,YAAYyB,SACzBC,QAASA,QACTC,UAAWyD,MACXxD,sBAAuB+F,OAAO/F,yBAE/BiG,KAAK,WACN5F,GAAGjC,YAAYyB,SAASkF,sBAAsBvB,OAAS1D,UAI3D,QAASoG,mBAAkB1C,OACzBnD,GAAGjC,YAAYyB,SAASkF,sBAAsBtB,OAAOD,MAAO,GAG9D,QAAS2C,gBACP9F,GAAGjC,YAAYyB,SAASuG,qBAAqBC,WAAc,YAAa,QAG1E,QAASC,iBAAgB7B,WAChBpE,IAAGjC,YAAYyB,SAASuG,qBAAqB3B,KAGtD,QAAS8B,eAAczB,IAChBzE,GAAGjC,YAAYyB,SAAS2G,mBAC3BnG,GAAGjC,YAAYyB,SAAS2G,qBAE1BnG,GAAGjC,YAAYyB,SAAS2G,iBAAiBlD,QACzC,IAAI7C,QAASuE,EAAEC,KAAK5E,GAAGjC,YAAYyB,SAAS2G,iBAC5C5G,WAAU+F,MACRrH,WAAY,0BACZD,YAAa,wBACbuH,YAAad,GACbe,QACEpF,OAAQA,OACRC,UAAWL,GAAGK,UACdC,OAAQN,GAAGjC,YAAYyB,SAASuG,qBAChCxF,kBAAmBmF,OAAOnF,qBAKhC,QAAS6F,gBAAejD,OACtB,GAAI/C,QAASlB,QAAQmH,KAAKrG,GAAGjC,YAAYyB,SAAS2G,iBAAiBhD,OAEnE5D,WAAU+F,MACRrH,WAAY,0BACZD,YAAa,qBAAuBmF,MACpCoC,YAAa,KACbC,QACEpF,OAAQA,OACRC,UAAWL,GAAGK,UACdC,OAAQN,GAAGjC,YAAYyB,SAASuG,qBAChCxF,kBAAmBmF,OAAOnF,qBAE3BqF,KAAK,WACN5F,GAAGjC,YAAYyB,SAAS2G,iBAAiBhD,OAAS/C,SAItD,QAASkG,kBAAiBnD,OACxBnD,GAAGjC,YAAYyB,SAAS2G,iBAAiB/C,OAAOD,MAAO,GAGzD,QAASoD,4BACP,GAAIC,KAEAtH,SAAQuH,UAAUzG,GAAGjC,YAAYyB,SAASkH,SAASC,2BACrDH,EAAIxG,GAAGjC,YAAYyB,SAASkH,SAASC,wBAAwBC,MAAM,MAGrE5G,GAAGjC,YAAYyB,SAASkH,SAASC,wBAA2BhC,EAAEkC,MAAMnB,OAAOoB,sBAAsBF,MAAM,KAAMJ,GAAIO,KAAK,KAGxH,QAASjH,QACP,GAAIkH,WAAW,CAGf,IAAItB,OAAOuB,mBAAqB,GAC5B/H,QAAQuH,UAAUzG,GAAGjC,YAAYyB,SAAS0H,UAC1ClH,GAAGjC,YAAYyB,SAAS0H,QAAQC,SAChCjI,QAAQuH,UAAUzG,GAAGjC,YAAYyB,SAAS0H,QAAQE,gBAAiB,CAErE,GAAIC,WAAYrH,GAAGjC,YAAYyB,SAAS0H,QAAQE,eAAeR,MAAM,KAGjEU,iBAAmB5B,OAAOoB,sBAAsBF,MAAM,OACtDW,UAEJ5C,GAAE6C,QAAQF,iBAAkB,SAASG,KACnC,GAAIC,QAASD,IAAIb,MAAM,KAAK,EACxBc,SACFH,QAAQtE,KAAKyE,OAAOC,gBAKxB,KAAK,GAAIC,GAAI,EAAGA,EAAIP,UAAU5B,QAAUuB,SAAUY,IAAK,CACrD,GAAIF,QAASL,UAAUO,GAAGhB,MAAM,KAAK,GAAGe,aACpCJ,SAAQtG,QAAQyG,QAAU,GAAkC,GAA7BhC,OAAOuB,oBACxCtD,OAAOkE,MAAMnH,EAAE,SAAUA,EAAE,+EAC3BsG,UAAW,GAEJO,QAAQtG,QAAQyG,SAAW,GAAkC,GAA7BhC,OAAOuB,qBAC9CtD,OAAOkE,MAAMnH,EAAE,SAAUA,EAAE,+EAC3BsG,UAAW,IAKbA,UACFhH,GAAGjC,YAAY+J,QAAQlC,KAAK,SAASmC,MAC/BrE,SAAS4B,KACP5B,SAASsE,SACNC,QAAQvH,EAAE,sBACVwH,SAAS,aACTC,UAAU,QAKzB,QAASC,qBACP,MAAIpI,IAAGqI,UAAUC,aAAetI,GAAGqI,UAAUC,YAAY7C,OAAS,GAC9DzF,GAAGqI,UAAUE,yBAA2BvI,GAAGqI,UAAUE,wBAAwB9C,QAC7EzF,GAAGqI,UAAUC,aAAetI,GAAGqI,UAAUE,yBACpC,GAEF,EAGT,QAASC,kBACP1E,eAAe0E,eAAexI,GAAGqI,UAAUC,aAAa1C,KAAK,WAC3D,GAAIiC,OAAQtI,UAAUsI,OACpBY,MAAO/H,EAAE,YACTuH,QAASvH,EAAE,0CACXgI,GAAI,MAENnJ,WAAU+F,KAAMuC,OAAhBtI,WACW,WACPsI,MAAQc,UAEX,SAASC,KACV,GAAIf,OAAQtI,UAAUsI,OACpBY,MAAO/H,EAAE,YACTuH,QAASW,IACTF,GAAI,MAENnJ,WAAU+F,KAAMuC,OAAhBtI,WACW,WACPsI,MAAQc,WAKhB,QAASE,qBAAoBzI,QAC3B,MAAOuE,GAAEvE,OAAOJ,GAAG8I,cAAe,SAASC,OACzC,MAAOA,OAAMC,cAAc/H,QAAQb,OAAO4I,gBAAkB,IAxPhE,GAAIhJ,IAAKC,IAETD,IAAGjC,YAAcK,iBACjB4B,GAAGqI,WAAcC,YAAa,KAAMC,wBAAyB,MAE7DvI,GAAG+D,GAAKA,GACR/D,GAAGgE,oBAAsBA,oBACzBhE,GAAGmE,uBAAyBA,uBAC5BnE,GAAGqE,mBAAqBA,mBACxBrE,GAAGuE,sBAAwBA,sBAC3BvE,GAAGwE,eAAiBA,eACpBxE,GAAG2F,gBAAkBA,gBACrB3F,GAAG6F,kBAAoBA,kBACvB7F,GAAG8F,aAAeA,aAClB9F,GAAGiG,gBAAkBA,gBACrBjG,GAAGkG,cAAgBA,cACnBlG,GAAGoG,eAAiBA,eACpBpG,GAAGsG,iBAAmBA,iBACtBtG,GAAGuG,yBAA2BA,yBAC9BvG,GAAGiJ,WAAarF,KAAKsF,QACrBlJ,GAAGF,KAAOA,KACVE,GAAGoI,kBAAoBA,kBACvBpI,GAAGwI,eAAiBA,eACpBxI,GAAG8I,cAAgBpD,OAAOoD,cAC1B9I,GAAG6I,oBAAsBA,oBACzB7I,GAAGmJ,oBAAsB,GACzBnJ,GAAGK,UAAYwD,QAAQuF,OAAQC,GAAI,IA5BrC7F,sBAAsBnE,SAAW,SAAU,YAAa,WAAY,SAAU,OAAQ,UAAW,mBAAoB,kBA+PrHH,QACGZ,OAAO,sBACPL,WAAW,wBAAyBuF","sourcesContent":["/* -*- Mode: javascript; indent-tabs-mode: nil; c-basic-offset: 2 -*- */\n/* JavaScript for SOGoPreferences */\n\n(function() {\n 'use strict';\n\n angular.module('SOGo.PreferencesUI', ['ngSanitize', 'ui.router', 'ck', 'SOGo.Common', 'SOGo.MailerUI', 'SOGo.ContactsUI', 'SOGo.Authentication'])\n .config(configure)\n .run(runBlock);\n\n /**\n * @ngInject\n */\n configure.$inject = ['$stateProvider', '$urlRouterProvider'];\n function configure($stateProvider, $urlRouterProvider) {\n $stateProvider\n .state('preferences', {\n abstract: true,\n views: {\n preferences: {\n templateUrl: 'preferences.html',\n controller: 'PreferencesController',\n controllerAs: 'app'\n }\n },\n resolve: {\n statePreferences: statePreferences\n }\n })\n .state('preferences.general', {\n url: '/general',\n views: {\n module: {\n templateUrl: 'generalPreferences.html'\n }\n }\n })\n .state('preferences.calendars', {\n url: '/calendars',\n views: {\n module: {\n templateUrl: 'calendarsPreferences.html'\n }\n }\n })\n .state('preferences.addressbooks', {\n url: '/addressbooks',\n views: {\n module: {\n templateUrl: 'addressbooksPreferences.html'\n }\n }\n })\n .state('preferences.mailer', {\n url: '/mailer',\n views: {\n module: {\n templateUrl: 'mailerPreferences.html'\n }\n }\n });\n\n // if none of the above states are matched, use this as the fallback\n $urlRouterProvider.otherwise('/general');\n }\n\n /**\n * @ngInject\n */\n statePreferences.$inject = ['Preferences'];\n function statePreferences(Preferences) {\n return Preferences;\n }\n\n /**\n * @ngInject\n */\n runBlock.$inject = ['$rootScope'];\n function runBlock($rootScope) {\n $rootScope.$on('$routeChangeError', function(event, current, previous, rejection) {\n console.error(event, current, previous, rejection);\n });\n }\n\n})();\n","/* -*- Mode: javascript; indent-tabs-mode: nil; c-basic-offset: 2 -*- */\n/* JavaScript for SOGoPreferences */\n\n(function() {\n 'use strict';\n\n /**\n * @ngInject\n */\n AccountDialogController.$inject = ['$mdDialog', 'defaults', 'account', 'accountId', 'mailCustomFromEnabled'];\n function AccountDialogController($mdDialog, defaults, account, accountId, mailCustomFromEnabled) {\n var vm = this;\n\n vm.defaults = defaults;\n vm.account = account;\n vm.accountId = accountId;\n vm.customFromIsReadonly = customFromIsReadonly;\n vm.cancel = cancel;\n vm.save = save;\n\n function customFromIsReadonly() {\n if (accountId > 0)\n return false;\n\n return !mailCustomFromEnabled;\n }\n\n function cancel() {\n $mdDialog.cancel();\n }\n\n function save() {\n $mdDialog.hide();\n }\n }\n\n angular\n .module('SOGo.PreferencesUI')\n .controller('AccountDialogController', AccountDialogController);\n\n})();\n","/* -*- Mode: javascript; indent-tabs-mode: nil; c-basic-offset: 2 -*- */\n/* JavaScript for SOGoPreferences */\n\n(function() {\n 'use strict';\n\n /**\n * @ngInject\n */\n FiltersDialogController.$inject = ['$scope', '$mdDialog', 'filter', 'mailboxes', 'labels', 'sieveCapabilities'];\n function FiltersDialogController($scope, $mdDialog, filter, mailboxes, labels, sieveCapabilities) {\n $scope.filter = filter;\n $scope.mailboxes = mailboxes;\n $scope.labels = labels;\n\n $scope.fieldLabels = {\n \"subject\": l(\"Subject\"),\n \"from\": l(\"From\"),\n \"to\": l(\"To\"),\n \"cc\": l(\"Cc\"),\n \"to_or_cc\": l(\"To or Cc\"),\n \"size\": l(\"Size (Kb)\"),\n \"header\": l(\"Header\")\n };\n\n if (sieveCapabilities.indexOf(\"body\") > -1)\n $scope.fieldLabels.body = l(\"Body\");\n\n $scope.methodLabels = {\n \"discard\": l(\"Discard the message\"),\n \"keep\": l(\"Keep the message\"),\n \"redirect\": l(\"Forward the message to:\"),\n \"vacation\": l(\"Send a vacation message\"),\n \"stop\": l(\"Stop processing filter rules\")\n };\n\n if (sieveCapabilities.indexOf(\"reject\") > -1)\n $scope.methodLabels.reject = l(\"Send a reject message:\");\n\n if (sieveCapabilities.indexOf(\"fileinto\") > -1)\n $scope.methodLabels.fileinto = l(\"File the message in:\");\n\n if (sieveCapabilities.indexOf(\"imapflags\") > -1 || sieveCapabilities.indexOf(\"imap4flags\") > -1)\n $scope.methodLabels.addflag = l(\"Flag the message with:\");\n\n $scope.numberOperatorLabels = {\n \"under\": l(\"is under\"),\n \"over\": l(\"is over\")\n };\n\n $scope.textOperatorLabels = {\n \"is\": l(\"is\"),\n \"is_not\": l(\"is not\"),\n \"contains\": l(\"contains\"),\n \"contains_not\": l(\"does not contain\"),\n \"matches\": l(\"matches\"),\n \"matches_not\": l(\"does not match\")\n };\n\n if (sieveCapabilities.indexOf(\"regex\") > -1) {\n $scope.textOperatorLabels.regex = l(\"matches regex\");\n $scope.textOperatorLabels.regex_not = l(\"does not match regex\");\n }\n\n $scope.flagLabels = {\n \"seen\": l(\"Seen\"),\n \"deleted\": l(\"Deleted\"),\n \"answered\": l(\"Answered\"),\n \"flagged\": l(\"Flagged\"),\n \"junk\": l(\"Junk\"),\n \"not_junk\": l(\"Not Junk\")\n };\n \n $scope.cancel = function() {\n $mdDialog.cancel();\n };\n \n $scope.save = function() {\n $mdDialog.hide();\n };\n \n $scope.addMailFilterRule = function(event) {\n if (!$scope.filter.rules)\n $scope.filter.rules = [];\n\n $scope.filter.rules.push({});\n };\n \n $scope.removeMailFilterRule = function(index) {\n $scope.filter.rules.splice(index, 1);\n };\n \n $scope.addMailFilterAction = function(event) {\n if (!$scope.filter.actions)\n $scope.filter.actions = [];\n\n $scope.filter.actions.push({});\n };\n \n $scope.removeMailFilterAction = function(index) {\n $scope.filter.actions.splice(index, 1);\n };\n }\n\n angular\n .module('SOGo.PreferencesUI')\n .controller('FiltersDialogController', FiltersDialogController);\n\n})();\n","/* -*- Mode: javascript; indent-tabs-mode: nil; c-basic-offset: 2 -*- */\n/* JavaScript for SOGoPreferences */\n\n(function() {\n 'use strict';\n \n /**\n * @ngInject\n */\n PreferencesController.$inject = ['$state', '$mdDialog', '$mdToast', 'Dialog', 'User', 'Mailbox', 'statePreferences', 'Authentication'];\n function PreferencesController($state, $mdDialog, $mdToast, Dialog, User, Mailbox, statePreferences, Authentication) {\n var vm = this;\n\n vm.preferences = statePreferences;\n vm.passwords = { newPassword: null, newPasswordConfirmation: null };\n\n vm.go = go;\n vm.addCalendarCategory = addCalendarCategory;\n vm.removeCalendarCategory = removeCalendarCategory;\n vm.addContactCategory = addContactCategory;\n vm.removeContactCategory = removeContactCategory;\n vm.addMailAccount = addMailAccount;\n vm.editMailAccount = editMailAccount;\n vm.removeMailAccount = removeMailAccount;\n vm.addMailLabel = addMailLabel;\n vm.removeMailLabel = removeMailLabel;\n vm.addMailFilter = addMailFilter;\n vm.editMailFilter = editMailFilter;\n vm.removeMailFilter = removeMailFilter;\n vm.addDefaultEmailAddresses = addDefaultEmailAddresses;\n vm.userFilter = User.$filter;\n vm.save = save;\n vm.canChangePassword = canChangePassword;\n vm.changePassword = changePassword;\n vm.timeZonesList = window.timeZonesList;\n vm.timeZonesListFilter = timeZonesListFilter;\n vm.timeZonesSearchText = '';\n vm.mailboxes = Mailbox.$find({ id: 0 });\n\n function go(module) {\n $state.go('preferences.' + module);\n }\n\n function addCalendarCategory() {\n vm.preferences.defaults.SOGoCalendarCategoriesColors[\"New category\"] = \"#aaa\";\n vm.preferences.defaults.SOGoCalendarCategories.push(\"New category\");\n }\n\n function removeCalendarCategory(index) {\n var key = vm.preferences.defaults.SOGoCalendarCategories[index];\n vm.preferences.defaults.SOGoCalendarCategories.splice(index, 1);\n delete vm.preferences.defaults.SOGoCalendarCategoriesColors[key];\n }\n\n function addContactCategory() {\n vm.preferences.defaults.SOGoContactsCategories.push(\"\");\n }\n\n function removeContactCategory(index) {\n vm.preferences.defaults.SOGoContactsCategories.splice(index, 1);\n }\n\n function addMailAccount(ev) {\n var account;\n\n vm.preferences.defaults.AuxiliaryMailAccounts.push({});\n\n account = _.last(vm.preferences.defaults.AuxiliaryMailAccounts);\n account.name = l(\"New account\");\n account.identities = [\n {\n fullName: \"\",\n email: \"\"\n }\n ];\n account.receipts = {\n receiptAction: \"ignore\",\n receiptNonRecipientAction: \"ignore\",\n receiptOutsideDomainAction: \"ignore\",\n receiptAnyAction: \"ignore\"\n };\n\n $mdDialog.show({\n controller: 'AccountDialogController',\n controllerAs: '$AccountDialogController',\n templateUrl: 'editAccount?account=new',\n targetEvent: ev,\n locals: {\n defaults: vm.preferences.defaults,\n account: account,\n accountId: (vm.preferences.defaults.AuxiliaryMailAccounts.length-1),\n mailCustomFromEnabled: window.mailCustomFromEnabled\n }\n });\n }\n\n function editMailAccount(event, index) {\n var account = vm.preferences.defaults.AuxiliaryMailAccounts[index];\n $mdDialog.show({\n controller: 'AccountDialogController',\n controllerAs: '$AccountDialogController',\n templateUrl: 'editAccount?account=' + index,\n targetEvent: event,\n locals: {\n defaults: vm.preferences.defaults,\n account: account,\n accountId: index,\n mailCustomFromEnabled: window.mailCustomFromEnabled\n }\n }).then(function() {\n vm.preferences.defaults.AuxiliaryMailAccounts[index] = account;\n });\n }\n\n function removeMailAccount(index) {\n vm.preferences.defaults.AuxiliaryMailAccounts.splice(index, 1);\n }\n \n function addMailLabel() {\n vm.preferences.defaults.SOGoMailLabelsColors.new_label = [\"New label\", \"#aaa\"];\n }\n\n function removeMailLabel(key) {\n delete vm.preferences.defaults.SOGoMailLabelsColors[key];\n }\n\n function addMailFilter(ev) {\n if (!vm.preferences.defaults.SOGoSieveFilters)\n vm.preferences.defaults.SOGoSieveFilters = [];\n\n vm.preferences.defaults.SOGoSieveFilters.push({});\n var filter = _.last(vm.preferences.defaults.SOGoSieveFilters);\n $mdDialog.show({\n controller: 'FiltersDialogController',\n templateUrl: 'editFilter?filter=new',\n targetEvent: ev,\n locals: {\n filter: filter,\n mailboxes: vm.mailboxes,\n labels: vm.preferences.defaults.SOGoMailLabelsColors,\n sieveCapabilities: window.sieveCapabilities\n }\n });\n }\n \n function editMailFilter(index) {\n var filter = angular.copy(vm.preferences.defaults.SOGoSieveFilters[index]);\n \n $mdDialog.show({\n controller: 'FiltersDialogController',\n templateUrl: 'editFilter?filter=' + index,\n targetEvent: null,\n locals: {\n filter: filter,\n mailboxes: vm.mailboxes,\n labels: vm.preferences.defaults.SOGoMailLabelsColors,\n sieveCapabilities: window.sieveCapabilities\n }\n }).then(function() {\n vm.preferences.defaults.SOGoSieveFilters[index] = filter;\n });\n }\n\n function removeMailFilter(index) {\n vm.preferences.defaults.SOGoSieveFilters.splice(index, 1);\n }\n\n function addDefaultEmailAddresses() {\n var v = [];\n\n if (angular.isDefined(vm.preferences.defaults.Vacation.autoReplyEmailAddresses)) {\n v = vm.preferences.defaults.Vacation.autoReplyEmailAddresses.split(',');\n }\n\n vm.preferences.defaults.Vacation.autoReplyEmailAddresses = (_.union(window.defaultEmailAddresses.split(','), v)).join(',');\n }\n \n function save() {\n var sendForm = true;\n\n // We do some sanity checks\n if (window.forwardConstraints > 0 &&\n angular.isDefined(vm.preferences.defaults.Forward) &&\n vm.preferences.defaults.Forward.enabled &&\n angular.isDefined(vm.preferences.defaults.Forward.forwardAddress)) {\n\n var addresses = vm.preferences.defaults.Forward.forwardAddress.split(\",\");\n\n // We first extract the list of 'known domains' to SOGo\n var defaultAddresses = window.defaultEmailAddresses.split(/, */);\n var domains = [];\n\n _.forEach(defaultAddresses, function(adr) {\n var domain = adr.split(\"@\")[1];\n if (domain) {\n domains.push(domain.toLowerCase());\n }\n });\n\n // We check if we're allowed or not to forward based on the domain defaults\n for (var i = 0; i < addresses.length && sendForm; i++) {\n var domain = addresses[i].split(\"@\")[1].toLowerCase();\n if (domains.indexOf(domain) < 0 && window.forwardConstraints == 1) {\n Dialog.alert(l('Error'), l(\"You are not allowed to forward your messages to an external email address.\"));\n sendForm = false;\n }\n else if (domains.indexOf(domain) >= 0 && window.forwardConstraints == 2) {\n Dialog.alert(l('Error'), l(\"You are not allowed to forward your messages to an internal email address.\"));\n sendForm = false;\n }\n }\n }\n\n if (sendForm)\n vm.preferences.$save().then(function(data) {\n $mdToast.show(\n $mdToast.simple()\n .content(l('Preferences saved'))\n .position('top right')\n .hideDelay(3000)\n );\n });\n }\n\n function canChangePassword() {\n if (vm.passwords.newPassword && vm.passwords.newPassword.length > 0 &&\n vm.passwords.newPasswordConfirmation && vm.passwords.newPasswordConfirmation.length &&\n vm.passwords.newPassword == vm.passwords.newPasswordConfirmation)\n return true;\n\n return false;\n }\n \n function changePassword() {\n Authentication.changePassword(vm.passwords.newPassword).then(function() {\n var alert = $mdDialog.alert({\n title: l('Password'),\n content: l('The password was changed successfully.'),\n ok: 'OK'\n });\n $mdDialog.show( alert )\n .finally(function() {\n alert = undefined;\n });\n }, function(msg) {\n var alert = $mdDialog.alert({\n title: l('Password'),\n content: msg,\n ok: 'OK'\n });\n $mdDialog.show( alert )\n .finally(function() {\n alert = undefined;\n });\n });\n }\n\n function timeZonesListFilter(filter) {\n return _.filter(vm.timeZonesList, function(value) {\n return value.toUpperCase().indexOf(filter.toUpperCase()) >= 0;\n });\n }\n }\n\n angular\n .module('SOGo.PreferencesUI')\n .controller('PreferencesController', PreferencesController);\n\n})();\n"]} \ No newline at end of file diff --git a/UI/WebServerResources/js/Scheduler.js b/UI/WebServerResources/js/Scheduler.js index 5b9d8aa04..02b8dacb3 100644 --- a/UI/WebServerResources/js/Scheduler.js +++ b/UI/WebServerResources/js/Scheduler.js @@ -1,2 +1,2 @@ -!function(){"use strict";function configure($stateProvider,$urlRouterProvider){$stateProvider.state("calendars",{url:"/calendar",views:{calendars:{templateUrl:"UIxCalMainFrame",controller:"CalendarsController",controllerAs:"calendars"}},resolve:{stateCalendars:stateCalendars}}).state("calendars.view",{url:"/{view:(?:day|week|month)}/:day",sticky:!0,deepStateRedirect:!0,views:{calendarView:{templateUrl:function($stateParams){return $stateParams.view+"view?day="+$stateParams.day},controller:"CalendarController",controllerAs:"calendar"}},resolve:{stateEventsBlocks:stateEventsBlocks}}),$urlRouterProvider.when("/calendar/day",function(){var now=new Date;return"/calendar/day/"+now.getDayString()}),$urlRouterProvider.when("/calendar/week",function(){var now=new Date;return"/calendar/week/"+now.getDayString()}),$urlRouterProvider.when("/calendar/month",function(){var now=new Date;return"/calendar/month/"+now.getDayString()}),$urlRouterProvider.otherwise("/calendar")}function stateCalendars(Calendar){return Calendar.$calendars||Calendar.$findAll(window.calendarsData)}function stateEventsBlocks($stateParams,Component){return Component.$eventsBlocksForView($stateParams.view,$stateParams.day.asDate())}function runBlock($rootScope,$location,Preferences){$rootScope.$on("$routeChangeError",function(event,current,previous,rejection){console.error(event,current,previous,rejection)}),0===$location.url().length&&Preferences.ready().then(function(){var view=/(.+)view/.exec(Preferences.settings.Calendar.View);view&&$location.replace().url("/calendar/"+view[1])})}angular.module("SOGo.SchedulerUI",["ngSanitize","ui.router","SOGo.Common","SOGo.PreferencesUI","SOGo.ContactsUI","SOGo.MailerUI"]).config(configure).run(runBlock),configure.$inject=["$stateProvider","$urlRouterProvider"],stateCalendars.$inject=["Calendar"],stateEventsBlocks.$inject=["$stateParams","Component"],runBlock.$inject=["$rootScope","$location","Preferences"]}(),function(){"use strict";function CalendarController($scope,$state,$stateParams,$timeout,$interval,$log,focus,Calendar,Component,stateEventsBlocks){function changeView($event){var date=angular.element($event.currentTarget).attr("date");$state.go("calendars.view",{view:$stateParams.view,day:date})}var vm=this;vm.blocks=stateEventsBlocks,vm.changeView=changeView,$scope.$on("calendars:list",function(){Component.$eventsBlocksForView($stateParams.view,$stateParams.day.asDate()).then(function(data){vm.blocks=data})})}CalendarController.$inject=["$scope","$state","$stateParams","$timeout","$interval","$log","sgFocus","Calendar","Component","stateEventsBlocks"],angular.module("SOGo.SchedulerUI").controller("CalendarController",CalendarController)}(),function(){"use strict";function CalendarListController($scope,$timeout,$state,$mdDialog,encodeUriFilter,Dialog,Preferences,Calendar,Component){function selectComponentType(type,options){(options&&options.reload||vm.componentType!=type)&&(angular.isUndefined(Component["$"+type])&&Component.$filter(type),vm.unselectComponents(),vm.componentType=type,Component.saveSelectedList(type))}function unselectComponents(){_.each(Component["$"+vm.componentType],function(component){component.selected=!1})}function selectAll(){_.each(Component["$"+vm.componentType],function(component){component.selected=!0})}function confirmDeleteSelectedComponents(){Dialog.confirm(l("Warning"),l("Are you sure you want to delete the selected components?")).then(function(){var components=_.filter(Component["$"+vm.componentType],function(component){return component.selected});Calendar.$deleteComponents(components)},function(data,status){})}function openEvent($event,event){openComponent($event,event,"appointment")}function openTask($event,task){openComponent($event,task,"task")}function openComponent($event,component,type){var templateUrl="UIx"+type.capitalize()+"ViewTemplate";$mdDialog.show({parent:angular.element(document.body),targetEvent:$event,clickOutsideToClose:!0,escapeToClose:!0,templateUrl:templateUrl,controller:"ComponentController",controllerAs:"editor",locals:{stateComponent:component}})}function newComponent($event){var component,type="appointment";"tasks"==vm.componentType&&(type="task"),component=new Component({pid:"personal",type:type});var templateUrl="UIx"+type.capitalize()+"EditorTemplate";$mdDialog.show({parent:angular.element(document.body),targetEvent:$event,clickOutsideToClose:!0,escapeToClose:!0,templateUrl:templateUrl,controller:"ComponentEditorController",controllerAs:"editor",locals:{stateComponent:component}})}function filter(filterpopup){Component.$filter(vm.componentType,{filterpopup:filterpopup})}function filteredBy(filterpopup){return Component["$query"+vm.componentType.capitalize()].filterpopup==filterpopup}function sort(field){Component.$filter(vm.componentType,{sort:field})}function sortedBy(field){return Component["$query"+vm.componentType.capitalize()].sort==field}function cancelSearch(){vm.mode.search=!1,Component.$filter(vm.componentType,{value:""})}var vm=this;vm.component=Component,vm.componentType="events",vm.selectedList=0,vm.selectComponentType=selectComponentType,vm.unselectComponents=unselectComponents,vm.selectAll=selectAll,vm.confirmDeleteSelectedComponents=confirmDeleteSelectedComponents,vm.openEvent=openEvent,vm.openTask=openTask,vm.newComponent=newComponent,vm.filter=filter,vm.filteredBy=filteredBy,vm.sort=sort,vm.sortedBy=sortedBy,vm.cancelSearch=cancelSearch,vm.mode={search:!1},Preferences.ready().then(function(){var type="events";"tasksListView"==Preferences.settings.Calendar.SelectedList&&(vm.selectedList=1,type="tasks"),selectComponentType(type,{reload:!0})}),$scope.$on("calendars:list",function(){Component.$filter(vm.componentType,{reload:!0})})}CalendarListController.$inject=["$scope","$timeout","$state","$mdDialog","encodeUriFilter","Dialog","Preferences","Calendar","Component"],angular.module("SOGo.SchedulerUI").controller("CalendarListController",CalendarListController)}(),function(){"use strict";function CalendarsController($scope,$rootScope,$stateParams,$state,$timeout,$q,$mdDialog,$log,focus,encodeUriFilter,Dialog,Settings,Calendar,User,stateCalendars){function newCalendar(ev){Dialog.prompt(l("New calendar"),l("Name of the Calendar")).then(function(name){var calendar=new Calendar({name:name,isEditable:!0,isRemote:!1,owner:UserLogin});Calendar.$add(calendar)})}function addWebCalendar(){Dialog.prompt(l("Subscribe to a web calendar..."),l("URL of the Calendar"),{inputType:"url"}).then(function(url){Calendar.$addWebCalendar(url)})}function confirmDelete(folder){folder.isSubscription?folder.$delete().then(function(){$scope.$broadcast("calendars:list")},function(data,status){Dialog.alert(l('An error occured while deleting the calendar "%{0}".',folder.name),l(data.error))}):Dialog.confirm(l("Warning"),l("Are you sure you want to delete the calendar %{0}?",folder.name)).then(function(){folder.$delete().then(function(){$scope.$broadcast("calendars:list")},function(data,status){Dialog.alert(l('An error occured while deleting the calendar "%{0}".',folder.name),l(data.error))})})}function showLinks(calendar){function LinksDialogController($mdDialog,calendar){function close(){$mdDialog.hide()}var vm=this;vm.calendar=calendar,vm.close=close}$mdDialog.show({parent:angular.element(document.body),clickOutsideToClose:!0,escapeToClose:!0,templateUrl:calendar.id+"/links",controller:LinksDialogController,controllerAs:"links",locals:{calendar:calendar}}),LinksDialogController.$inject=["$mdDialog","calendar"]}function showProperties(calendar){function PropertiesDialogController($mdDialog,calendar){function saveProperties(){vm.calendar.$save(),calendar.init(vm.calendar.$omit()),$mdDialog.hide()}function close(){$mdDialog.hide()}var vm=this;vm.calendar=new Calendar(calendar.$omit()),vm.saveProperties=saveProperties,vm.close=close}$mdDialog.show({templateUrl:calendar.id+"/properties",controller:PropertiesDialogController,controllerAs:"properties",clickOutsideToClose:!0,escapeToClose:!0,locals:{calendar:calendar}}),PropertiesDialogController.$inject=["$mdDialog","calendar"]}function share(calendar){calendar.$acl.$users().then(function(){$mdDialog.show({templateUrl:calendar.id+"/UIxAclEditor",controller:"AclController",controllerAs:"acl",clickOutsideToClose:!0,escapeToClose:!0,locals:{usersWithACL:calendar.$acl.users,User:User,folder:calendar}})})}function subscribeToFolder(calendarData){$log.debug("subscribeToFolder "+calendarData.owner+calendarData.name),Calendar.$subscribe(calendarData.owner,calendarData.name)["catch"](function(data){Dialog.alert(l("Warning"),l("An error occured please try again."))})}var vm=this;vm.activeUser=Settings.activeUser,vm.service=Calendar,vm.newCalendar=newCalendar,vm.addWebCalendar=addWebCalendar,vm.confirmDelete=confirmDelete,vm.share=share,vm.showLinks=showLinks,vm.showProperties=showProperties,vm.subscribeToFolder=subscribeToFolder,$scope.$watch(function(){return _.union(_.map(Calendar.$calendars,function(o){return _.pick(o,["id","active","color"])}),_.map(Calendar.$subscriptions,function(o){return _.pick(o,["id","active","color"])}),_.map(Calendar.$webcalendars,function(o){return _.pick(o,["id","active","color"])}))},function(newList,oldList){var ids=_.pluck(_.filter(newList,function(o,i){return!_.isEqual(o,oldList[i])}),"id");ids.length>0&&($log.debug(ids.join(", ")+" changed"),_.each(ids,function(id){var calendar=Calendar.$get(id);calendar.$setActivation().then(function(){$scope.$broadcast("calendars:list")})}))},!0)}CalendarsController.$inject=["$scope","$rootScope","$stateParams","$state","$timeout","$q","$mdDialog","$log","sgFocus","encodeUriFilter","Dialog","sgSettings","Calendar","User","stateCalendars"],angular.module("SOGo.SchedulerUI").controller("CalendarsController",CalendarsController)}(),function(){"use strict";function ComponentController($rootScope,$mdDialog,Calendar,AddressBook,Alarm,stateComponent){function close(){$mdDialog.hide()}function cardFilter($query){return AddressBook.$filterAll($query),AddressBook.$cards}function edit(){var type="vevent"==vm.component.component?"Appointment":"Task";$mdDialog.hide().then(function(){var templateUrl="UIx"+type+"EditorTemplate";$mdDialog.show({parent:angular.element(document.body),clickOutsideToClose:!0,escapeToClose:!0,templateUrl:templateUrl,controller:"ComponentEditorController",controllerAs:"editor",locals:{stateComponent:vm.component}})})}function editAllOccurrences(){component=Calendar.$get(vm.component.pid).$getComponent(vm.component.id),component.$futureComponentData.then(function(){vm.component=component,edit()})}function reply(component){var c=component||vm.component;c.$reply().then(function(){$rootScope.$broadcast("calendars:list"),$mdDialog.hide(),Alarm.getAlarms()})}function replyAllOccurrences(){component=Calendar.$get(vm.component.pid).$getComponent(vm.component.id),component.$futureComponentData.then(function(){component.reply=vm.component.reply,component.delegatedTo=vm.component.delegatedTo,component.$hasAlarm=vm.component.$hasAlarm,component.alarm=vm.component.alarm,reply(component)})}var component,vm=this;vm.component=stateComponent,vm.close=close,vm.cardFilter=cardFilter,vm.edit=edit,vm.editAllOccurrences=editAllOccurrences,vm.reply=reply,vm.replyAllOccurrences=replyAllOccurrences,angular.isUndefined(vm.component.$futureComponentData)&&(component=Calendar.$get(vm.component.c_folder).$getComponent(vm.component.c_name,vm.component.c_recurrence_id),component.$futureComponentData.then(function(){vm.component=component,vm.organizer=[vm.component.organizer]}))}function ComponentEditorController($rootScope,$scope,$log,$timeout,$mdDialog,User,Calendar,Component,AddressBook,Card,Alarm,stateComponent){function addAttachUrl(){var i=vm.component.addAttachUrl("");focus("attachUrl_"+i)}function toggleRecurrenceEditor(){vm.showRecurrenceEditor=!vm.showRecurrenceEditor,vm.component.$hasCustomRepeat=vm.showRecurrenceEditor}function toggleAttendeesEditor(){vm.showAttendeesEditor=!vm.showAttendeesEditor}function cardFilter($query){return AddressBook.$filterAll($query),AddressBook.$cards}function addAttendee(card){angular.isString(card)?card.isValidEmail()&&(vm.component.addAttendee(new Card({emails:[{value:card}]})),vm.searchText=""):vm.component.addAttendee(card)}function save(form){form.$valid&&vm.component.$save().then(function(data){$rootScope.$broadcast("calendars:list"),$mdDialog.hide(),Alarm.getAlarms()},function(data,status){$log.debug("failed")})}function cancel(){vm.component.$reset(),vm.component.isNew&&(vm.component=null),$mdDialog.hide()}function getDays(){var days=[];return vm.component.start&&vm.component.end&&(days=vm.component.start.daysUpTo(vm.component.end)),_.map(days,function(date){return{stringWithSeparator:date.stringWithSeparator(),getDayString:date.getDayString()}})}function getHours(){for(var hours=[],i=0;23>=i;i++)hours.push(i.toString());return hours}var vm=this;vm.calendars=Calendar.$calendars,vm.component=stateComponent,vm.categories={},vm.showRecurrenceEditor=vm.component.$hasCustomRepeat,vm.toggleRecurrenceEditor=toggleRecurrenceEditor,vm.showAttendeesEditor=angular.isDefined(vm.component.attendees),vm.toggleAttendeesEditor=toggleAttendeesEditor,vm.cardFilter=cardFilter,vm.addAttendee=addAttendee,vm.addAttachUrl=addAttachUrl,vm.cancel=cancel,vm.save=save,vm.attendeesEditor={startDate:vm.component.startDate,endDate:vm.component.endDate,days:getDays(),hours:getHours()},$scope.$watch("editor.component.startDate",function(newStartDate,oldStartDate){newStartDate&&$timeout(function(){vm.component.start=new Date(newStartDate.substring(0,10)+" "+newStartDate.substring(11,16)),vm.component.freebusy=vm.component.updateFreeBusyCoverage(),vm.attendeesEditor.days=getDays()})}),$scope.$watch("editor.component.endDate",function(newEndDate,oldEndDate){newEndDate&&$timeout(function(){vm.component.end=new Date(newEndDate.substring(0,10)+" "+newEndDate.substring(11,16)),vm.component.freebusy=vm.component.updateFreeBusyCoverage(),vm.attendeesEditor.days=getDays()})})}ComponentController.$inject=["$rootScope","$mdDialog","Calendar","AddressBook","Alarm","stateComponent"],ComponentEditorController.$inject=["$rootScope","$scope","$log","$timeout","$mdDialog","User","Calendar","Component","AddressBook","Card","Alarm","stateComponent"],angular.module("SOGo.SchedulerUI").controller("ComponentController",ComponentController).controller("ComponentEditorController",ComponentEditorController)}(),function(){"use strict";function sgCalendarDayBlock(){function link(scope,iElement,attrs){var pc=100/scope.block.siblings,left=scope.block.position*pc,right=100-(scope.block.position+1)*pc;100>pc&&(left>0&&(left-=5),right>0&&(right-=5)),iElement.css("left",left+"%"),iElement.css("right",right+"%"),iElement.addClass("starts"+scope.block.start),iElement.addClass("lasts"+scope.block.length),iElement.addClass("bg-folder"+scope.block.component.c_folder)}return{restrict:"E",scope:{block:"=sgBlock",clickBlock:"&sgClick"},replace:!0,template:['
','
','
',"
",'
{{ block.component.c_title }}',' ',' ',' ',' ',"
","
",'
','
',"
"].join(""),link:link}}angular.module("SOGo.SchedulerUI").directive("sgCalendarDayBlock",sgCalendarDayBlock)}(),function(){"use strict";function sgCalendarDayTable(){return{restrict:"E",scope:{blocks:"=sgBlocks",day:"@sgDay",clickBlock:"&sgClick"},template:[''].join("")}}angular.module("SOGo.SchedulerUI").directive("sgCalendarDayTable",sgCalendarDayTable)}(),function(){"use strict";function sgCalendarMonthDay(){return{restrict:"E",scope:{blocks:"=sgBlocks",day:"@sgDay",clickBlock:"&sgClick"},template:["'].join("")}}angular.module("SOGo.SchedulerUI").directive("sgCalendarMonthDay",sgCalendarMonthDay)}(),function(){"use strict";function sgCalendarMonthEvent(){function link(scope,iElement,attrs){iElement.addClass("bg-folder"+scope.block.component.c_folder)}return{restrict:"E",scope:{block:"=sgBlock",clickBlock:"&sgClick"},replace:!0,template:['
',' {{ block.starthour }} - '," {{ block.component.c_title }}",' ',' ',' ',' '," ",'
','
',"
"].join(""),link:link}}angular.module("SOGo.SchedulerUI").directive("sgCalendarMonthEvent",sgCalendarMonthEvent)}(); +!function(){"use strict";function configure($stateProvider,$urlRouterProvider){$stateProvider.state("calendars",{url:"/calendar",views:{calendars:{templateUrl:"UIxCalMainFrame",controller:"CalendarsController",controllerAs:"calendars"}},resolve:{stateCalendars:stateCalendars}}).state("calendars.view",{url:"/{view:(?:day|week|month)}/:day",sticky:!0,deepStateRedirect:!0,views:{calendarView:{templateUrl:function($stateParams){return $stateParams.view+"view?day="+$stateParams.day},controller:"CalendarController",controllerAs:"calendar"}},resolve:{stateEventsBlocks:stateEventsBlocks}}),$urlRouterProvider.when("/calendar/day",function(){var now=new Date;return"/calendar/day/"+now.getDayString()}),$urlRouterProvider.when("/calendar/week",function(){var now=new Date;return"/calendar/week/"+now.getDayString()}),$urlRouterProvider.when("/calendar/month",function(){var now=new Date;return"/calendar/month/"+now.getDayString()}),$urlRouterProvider.otherwise("/calendar")}function stateCalendars(Calendar){return Calendar.$calendars||Calendar.$findAll(window.calendarsData)}function stateEventsBlocks($stateParams,Component){return Component.$eventsBlocksForView($stateParams.view,$stateParams.day.asDate())}function runBlock($rootScope,$location,Preferences){$rootScope.$on("$routeChangeError",function(event,current,previous,rejection){console.error(event,current,previous,rejection)}),0===$location.url().length&&Preferences.ready().then(function(){var view=/(.+)view/.exec(Preferences.settings.Calendar.View);view&&$location.replace().url("/calendar/"+view[1])})}angular.module("SOGo.SchedulerUI",["ngSanitize","ui.router","SOGo.Common","SOGo.PreferencesUI","SOGo.ContactsUI","SOGo.MailerUI"]).config(configure).run(runBlock),configure.$inject=["$stateProvider","$urlRouterProvider"],stateCalendars.$inject=["Calendar"],stateEventsBlocks.$inject=["$stateParams","Component"],runBlock.$inject=["$rootScope","$location","Preferences"]}(),function(){"use strict";function CalendarController($scope,$state,$stateParams,$timeout,$interval,$log,focus,Calendar,Component,stateEventsBlocks){function changeView($event){var date=angular.element($event.currentTarget).attr("date");$state.go("calendars.view",{view:$stateParams.view,day:date})}var vm=this;vm.blocks=stateEventsBlocks,vm.changeView=changeView,$scope.$on("calendars:list",function(){Component.$eventsBlocksForView($stateParams.view,$stateParams.day.asDate()).then(function(data){vm.blocks=data})})}CalendarController.$inject=["$scope","$state","$stateParams","$timeout","$interval","$log","sgFocus","Calendar","Component","stateEventsBlocks"],angular.module("SOGo.SchedulerUI").controller("CalendarController",CalendarController)}(),function(){"use strict";function CalendarListController($scope,$timeout,$state,$mdDialog,encodeUriFilter,Dialog,Preferences,Calendar,Component){function selectComponentType(type,options){(options&&options.reload||vm.componentType!=type)&&(angular.isUndefined(Component["$"+type])&&Component.$filter(type),vm.unselectComponents(),vm.componentType=type,Component.saveSelectedList(type))}function unselectComponents(){_.each(Component["$"+vm.componentType],function(component){component.selected=!1})}function selectAll(){_.each(Component["$"+vm.componentType],function(component){component.selected=!0})}function confirmDeleteSelectedComponents(){Dialog.confirm(l("Warning"),l("Are you sure you want to delete the selected components?")).then(function(){var components=_.filter(Component["$"+vm.componentType],function(component){return component.selected});Calendar.$deleteComponents(components)},function(data,status){})}function openEvent($event,event){event.viewable&&openComponent($event,event,"appointment")}function openTask($event,task){task.viewable&&openComponent($event,task,"task")}function openComponent($event,component,type){var templateUrl="UIx"+type.capitalize()+"ViewTemplate";$mdDialog.show({parent:angular.element(document.body),targetEvent:$event,clickOutsideToClose:!0,escapeToClose:!0,templateUrl:templateUrl,controller:"ComponentController",controllerAs:"editor",locals:{stateComponent:component}})}function newComponent($event){var component,type="appointment";"tasks"==vm.componentType&&(type="task"),component=new Component({pid:"personal",type:type});var templateUrl="UIx"+type.capitalize()+"EditorTemplate";$mdDialog.show({parent:angular.element(document.body),targetEvent:$event,clickOutsideToClose:!0,escapeToClose:!0,templateUrl:templateUrl,controller:"ComponentEditorController",controllerAs:"editor",locals:{stateComponent:component}})}function filter(filterpopup){Component.$filter(vm.componentType,{filterpopup:filterpopup})}function filteredBy(filterpopup){return Component["$query"+vm.componentType.capitalize()].filterpopup==filterpopup}function sort(field){Component.$filter(vm.componentType,{sort:field})}function sortedBy(field){return Component["$query"+vm.componentType.capitalize()].sort==field}function cancelSearch(){vm.mode.search=!1,Component.$filter(vm.componentType,{value:""})}var vm=this;vm.component=Component,vm.componentType="events",vm.selectedList=0,vm.selectComponentType=selectComponentType,vm.unselectComponents=unselectComponents,vm.selectAll=selectAll,vm.confirmDeleteSelectedComponents=confirmDeleteSelectedComponents,vm.openEvent=openEvent,vm.openTask=openTask,vm.newComponent=newComponent,vm.filter=filter,vm.filteredBy=filteredBy,vm.sort=sort,vm.sortedBy=sortedBy,vm.cancelSearch=cancelSearch,vm.mode={search:!1},Preferences.ready().then(function(){var type="events";"tasksListView"==Preferences.settings.Calendar.SelectedList&&(vm.selectedList=1,type="tasks"),selectComponentType(type,{reload:!0})}),$scope.$on("calendars:list",function(){Component.$filter(vm.componentType,{reload:!0})})}CalendarListController.$inject=["$scope","$timeout","$state","$mdDialog","encodeUriFilter","Dialog","Preferences","Calendar","Component"],angular.module("SOGo.SchedulerUI").controller("CalendarListController",CalendarListController)}(),function(){"use strict";function CalendarsController($scope,$rootScope,$stateParams,$state,$timeout,$q,$mdDialog,$log,focus,encodeUriFilter,Dialog,Settings,Calendar,User,stateCalendars){function newCalendar(ev){Dialog.prompt(l("New calendar"),l("Name of the Calendar")).then(function(name){var calendar=new Calendar({name:name,isEditable:!0,isRemote:!1,owner:UserLogin});Calendar.$add(calendar)})}function addWebCalendar(){Dialog.prompt(l("Subscribe to a web calendar..."),l("URL of the Calendar"),{inputType:"url"}).then(function(url){Calendar.$addWebCalendar(url)})}function confirmDelete(folder){folder.isSubscription?folder.$delete().then(function(){$scope.$broadcast("calendars:list")},function(data,status){Dialog.alert(l('An error occured while deleting the calendar "%{0}".',folder.name),l(data.error))}):Dialog.confirm(l("Warning"),l("Are you sure you want to delete the calendar %{0}?",folder.name)).then(function(){folder.$delete().then(function(){$scope.$broadcast("calendars:list")},function(data,status){Dialog.alert(l('An error occured while deleting the calendar "%{0}".',folder.name),l(data.error))})})}function showLinks(calendar){function LinksDialogController($mdDialog,calendar){function close(){$mdDialog.hide()}var vm=this;vm.calendar=calendar,vm.close=close}$mdDialog.show({parent:angular.element(document.body),clickOutsideToClose:!0,escapeToClose:!0,templateUrl:calendar.id+"/links",controller:LinksDialogController,controllerAs:"links",locals:{calendar:calendar}}),LinksDialogController.$inject=["$mdDialog","calendar"]}function showProperties(calendar){function PropertiesDialogController($mdDialog,calendar){function saveProperties(){vm.calendar.$save(),calendar.init(vm.calendar.$omit()),$mdDialog.hide()}function close(){$mdDialog.hide()}var vm=this;vm.calendar=new Calendar(calendar.$omit()),vm.saveProperties=saveProperties,vm.close=close}$mdDialog.show({templateUrl:calendar.id+"/properties",controller:PropertiesDialogController,controllerAs:"properties",clickOutsideToClose:!0,escapeToClose:!0,locals:{calendar:calendar}}),PropertiesDialogController.$inject=["$mdDialog","calendar"]}function share(calendar){calendar.$acl.$users().then(function(){$mdDialog.show({templateUrl:calendar.id+"/UIxAclEditor",controller:"AclController",controllerAs:"acl",clickOutsideToClose:!0,escapeToClose:!0,locals:{usersWithACL:calendar.$acl.users,User:User,folder:calendar}})})}function subscribeToFolder(calendarData){$log.debug("subscribeToFolder "+calendarData.owner+calendarData.name),Calendar.$subscribe(calendarData.owner,calendarData.name)["catch"](function(data){Dialog.alert(l("Warning"),l("An error occured please try again."))})}var vm=this;vm.activeUser=Settings.activeUser,vm.service=Calendar,vm.newCalendar=newCalendar,vm.addWebCalendar=addWebCalendar,vm.confirmDelete=confirmDelete,vm.share=share,vm.showLinks=showLinks,vm.showProperties=showProperties,vm.subscribeToFolder=subscribeToFolder,$scope.$watch(function(){return _.union(_.map(Calendar.$calendars,function(o){return _.pick(o,["id","active","color"])}),_.map(Calendar.$subscriptions,function(o){return _.pick(o,["id","active","color"])}),_.map(Calendar.$webcalendars,function(o){return _.pick(o,["id","active","color"])}))},function(newList,oldList){var ids=_.pluck(_.filter(newList,function(o,i){return!_.isEqual(o,oldList[i])}),"id");ids.length>0&&($log.debug(ids.join(", ")+" changed"),_.each(ids,function(id){var calendar=Calendar.$get(id);calendar.$setActivation().then(function(){$scope.$broadcast("calendars:list")})}))},!0)}CalendarsController.$inject=["$scope","$rootScope","$stateParams","$state","$timeout","$q","$mdDialog","$log","sgFocus","encodeUriFilter","Dialog","sgSettings","Calendar","User","stateCalendars"],angular.module("SOGo.SchedulerUI").controller("CalendarsController",CalendarsController)}(),function(){"use strict";function ComponentController($rootScope,$mdDialog,Calendar,AddressBook,Alarm,stateComponent){function close(){$mdDialog.hide()}function cardFilter($query){return AddressBook.$filterAll($query),AddressBook.$cards}function edit(){var type="vevent"==vm.component.component?"Appointment":"Task";$mdDialog.hide().then(function(){var templateUrl="UIx"+type+"EditorTemplate";$mdDialog.show({parent:angular.element(document.body),clickOutsideToClose:!0,escapeToClose:!0,templateUrl:templateUrl,controller:"ComponentEditorController",controllerAs:"editor",locals:{stateComponent:vm.component}})})}function editAllOccurrences(){component=Calendar.$get(vm.component.pid).$getComponent(vm.component.id),component.$futureComponentData.then(function(){vm.component=component,edit()})}function reply(component){var c=component||vm.component;c.$reply().then(function(){$rootScope.$broadcast("calendars:list"),$mdDialog.hide(),Alarm.getAlarms()})}function replyAllOccurrences(){component=Calendar.$get(vm.component.pid).$getComponent(vm.component.id),component.$futureComponentData.then(function(){component.reply=vm.component.reply,component.delegatedTo=vm.component.delegatedTo,component.$hasAlarm=vm.component.$hasAlarm,component.alarm=vm.component.alarm,reply(component)})}var component,vm=this;vm.component=stateComponent,vm.close=close,vm.cardFilter=cardFilter,vm.edit=edit,vm.editAllOccurrences=editAllOccurrences,vm.reply=reply,vm.replyAllOccurrences=replyAllOccurrences,angular.isUndefined(vm.component.$futureComponentData)&&(component=Calendar.$get(vm.component.c_folder).$getComponent(vm.component.c_name,vm.component.c_recurrence_id),component.$futureComponentData.then(function(){vm.component=component,vm.organizer=[vm.component.organizer]}))}function ComponentEditorController($rootScope,$scope,$log,$timeout,$mdDialog,User,Calendar,Component,AddressBook,Card,Alarm,stateComponent){function addAttachUrl(){var i=vm.component.addAttachUrl("");focus("attachUrl_"+i)}function toggleRecurrenceEditor(){vm.showRecurrenceEditor=!vm.showRecurrenceEditor,vm.component.$hasCustomRepeat=vm.showRecurrenceEditor}function toggleAttendeesEditor(){vm.showAttendeesEditor=!vm.showAttendeesEditor}function cardFilter($query){return AddressBook.$filterAll($query),AddressBook.$cards}function addAttendee(card){angular.isString(card)?card.isValidEmail()&&(vm.component.addAttendee(new Card({emails:[{value:card}]})),vm.searchText=""):vm.component.addAttendee(card)}function save(form){form.$valid&&vm.component.$save().then(function(data){$rootScope.$broadcast("calendars:list"),$mdDialog.hide(),Alarm.getAlarms()},function(data,status){$log.debug("failed")})}function cancel(){vm.component.$reset(),vm.component.isNew&&(vm.component=null),$mdDialog.hide()}function getDays(){var days=[];return vm.component.start&&vm.component.end&&(days=vm.component.start.daysUpTo(vm.component.end)),_.map(days,function(date){return{stringWithSeparator:date.stringWithSeparator(),getDayString:date.getDayString()}})}function getHours(){for(var hours=[],i=0;23>=i;i++)hours.push(i.toString());return hours}var vm=this;vm.calendars=Calendar.$calendars,vm.component=stateComponent,vm.categories={},vm.showRecurrenceEditor=vm.component.$hasCustomRepeat,vm.toggleRecurrenceEditor=toggleRecurrenceEditor,vm.showAttendeesEditor=angular.isDefined(vm.component.attendees),vm.toggleAttendeesEditor=toggleAttendeesEditor,vm.cardFilter=cardFilter,vm.addAttendee=addAttendee,vm.addAttachUrl=addAttachUrl,vm.cancel=cancel,vm.save=save,vm.attendeesEditor={startDate:vm.component.startDate,endDate:vm.component.endDate,days:getDays(),hours:getHours()},$scope.$watch("editor.component.startDate",function(newStartDate,oldStartDate){newStartDate&&$timeout(function(){vm.component.start=new Date(newStartDate.substring(0,10)+" "+newStartDate.substring(11,16)),vm.component.freebusy=vm.component.updateFreeBusyCoverage(),vm.attendeesEditor.days=getDays()})}),$scope.$watch("editor.component.endDate",function(newEndDate,oldEndDate){newEndDate&&$timeout(function(){vm.component.end=new Date(newEndDate.substring(0,10)+" "+newEndDate.substring(11,16)),vm.component.freebusy=vm.component.updateFreeBusyCoverage(),vm.attendeesEditor.days=getDays()})})}ComponentController.$inject=["$rootScope","$mdDialog","Calendar","AddressBook","Alarm","stateComponent"],ComponentEditorController.$inject=["$rootScope","$scope","$log","$timeout","$mdDialog","User","Calendar","Component","AddressBook","Card","Alarm","stateComponent"],angular.module("SOGo.SchedulerUI").controller("ComponentController",ComponentController).controller("ComponentEditorController",ComponentEditorController)}(),function(){"use strict";function sgCalendarDayBlock(){function link(scope,iElement,attrs){var pc=100/scope.block.siblings,left=scope.block.position*pc,right=100-(scope.block.position+1)*pc;100>pc&&(left>0&&(left-=5),right>0&&(right-=5)),iElement.css("left",left+"%"),iElement.css("right",right+"%"),iElement.addClass("starts"+scope.block.start),iElement.addClass("lasts"+scope.block.length),iElement.addClass("bg-folder"+scope.block.component.c_folder)}return{restrict:"E",scope:{block:"=sgBlock",clickBlock:"&sgClick"},replace:!0,template:['
','
','
',"
",'
{{ block.component.c_title }}',' ',' ',' ',' ',"
","
",'
','
',"
"].join(""),link:link}}angular.module("SOGo.SchedulerUI").directive("sgCalendarDayBlock",sgCalendarDayBlock)}(),function(){"use strict";function sgCalendarDayTable(){return{restrict:"E",scope:{blocks:"=sgBlocks",day:"@sgDay",clickBlock:"&sgClick"},template:[''].join("")}}angular.module("SOGo.SchedulerUI").directive("sgCalendarDayTable",sgCalendarDayTable)}(),function(){"use strict";function sgCalendarMonthDay(){return{restrict:"E",scope:{blocks:"=sgBlocks",day:"@sgDay",clickBlock:"&sgClick"},template:["'].join("")}}angular.module("SOGo.SchedulerUI").directive("sgCalendarMonthDay",sgCalendarMonthDay)}(),function(){"use strict";function sgCalendarMonthEvent(){function link(scope,iElement,attrs){iElement.addClass("bg-folder"+scope.block.component.c_folder)}return{restrict:"E",scope:{block:"=sgBlock",clickBlock:"&sgClick"},replace:!0,template:['
',' {{ block.starthour }} - '," {{ block.component.c_title }}",' ',' ',' ',' '," ",'
','
',"
"].join(""),link:link}}angular.module("SOGo.SchedulerUI").directive("sgCalendarMonthEvent",sgCalendarMonthEvent)}(); //# sourceMappingURL=Scheduler.js.map \ No newline at end of file diff --git a/UI/WebServerResources/js/Scheduler.js.map b/UI/WebServerResources/js/Scheduler.js.map index 5af28fccf..540be52e3 100644 --- a/UI/WebServerResources/js/Scheduler.js.map +++ b/UI/WebServerResources/js/Scheduler.js.map @@ -1 +1 @@ -{"version":3,"file":"Scheduler.js","sources":["Scheduler/Scheduler.app.js","Scheduler/CalendarController.js","Scheduler/CalendarListController.js","Scheduler/CalendarsController.js","Scheduler/ComponentController.js","Scheduler/sgCalendarDayBlock.directive.js","Scheduler/sgCalendarDayTable.directive.js","Scheduler/sgCalendarMonthDay.directive.js","Scheduler/sgCalendarMonthEvent.directive.js"],"names":["configure","$stateProvider","$urlRouterProvider","state","url","views","calendars","templateUrl","controller","controllerAs","resolve","stateCalendars","sticky","deepStateRedirect","calendarView","$stateParams","view","day","stateEventsBlocks","when","now","Date","getDayString","otherwise","Calendar","$calendars","$findAll","window","calendarsData","Component","$eventsBlocksForView","asDate","runBlock","$rootScope","$location","Preferences","$on","event","current","previous","rejection","console","error","length","ready","then","exec","settings","View","replace","angular","module","config","run","$inject","CalendarController","$scope","$state","$timeout","$interval","$log","focus","changeView","$event","date","element","currentTarget","attr","go","vm","this","blocks","data","CalendarListController","$mdDialog","encodeUriFilter","Dialog","selectComponentType","type","options","reload","componentType","isUndefined","$filter","unselectComponents","saveSelectedList","_","each","component","selected","selectAll","confirmDeleteSelectedComponents","confirm","l","components","filter","$deleteComponents","status","openEvent","openComponent","openTask","task","capitalize","show","parent","document","body","targetEvent","clickOutsideToClose","escapeToClose","locals","stateComponent","newComponent","pid","filterpopup","filteredBy","sort","field","sortedBy","cancelSearch","mode","search","value","selectedList","SelectedList","CalendarsController","$q","Settings","User","newCalendar","ev","prompt","name","calendar","isEditable","isRemote","owner","UserLogin","$add","addWebCalendar","inputType","$addWebCalendar","confirmDelete","folder","isSubscription","$delete","$broadcast","alert","showLinks","LinksDialogController","close","hide","id","showProperties","PropertiesDialogController","saveProperties","$save","init","$omit","share","$acl","$users","usersWithACL","users","subscribeToFolder","calendarData","debug","$subscribe","activeUser","service","$watch","union","map","o","pick","$subscriptions","$webcalendars","newList","oldList","ids","pluck","i","isEqual","join","$get","$setActivation","ComponentController","AddressBook","Alarm","cardFilter","$query","$filterAll","$cards","edit","editAllOccurrences","$getComponent","$futureComponentData","reply","c","$reply","getAlarms","replyAllOccurrences","delegatedTo","$hasAlarm","alarm","c_folder","c_name","c_recurrence_id","organizer","ComponentEditorController","Card","addAttachUrl","toggleRecurrenceEditor","showRecurrenceEditor","$hasCustomRepeat","toggleAttendeesEditor","showAttendeesEditor","addAttendee","card","isString","isValidEmail","emails","searchText","save","form","$valid","cancel","$reset","isNew","getDays","days","start","end","daysUpTo","stringWithSeparator","getHours","hours","push","toString","categories","isDefined","attendees","attendeesEditor","startDate","endDate","newStartDate","oldStartDate","substring","freebusy","updateFreeBusyCoverage","newEndDate","oldEndDate","sgCalendarDayBlock","link","scope","iElement","attrs","pc","block","siblings","left","position","right","css","addClass","restrict","clickBlock","template","directive","sgCalendarDayTable","sgCalendarMonthDay","sgCalendarMonthEvent"],"mappings":"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","sourcesContent":["/* -*- Mode: javascript; indent-tabs-mode: nil; c-basic-offset: 2 -*- */\n/* JavaScript for SOGo.SchedulerUI module */\n\n(function() {\n 'use strict';\n\n angular.module('SOGo.SchedulerUI', ['ngSanitize', 'ui.router', 'SOGo.Common', 'SOGo.PreferencesUI', 'SOGo.ContactsUI', 'SOGo.MailerUI'])\n .config(configure)\n .run(runBlock);\n\n /**\n * @ngInject\n */\n configure.$inject = ['$stateProvider', '$urlRouterProvider'];\n function configure($stateProvider, $urlRouterProvider) {\n $stateProvider\n .state('calendars', {\n url: '/calendar',\n views: {\n calendars: {\n templateUrl: 'UIxCalMainFrame', // UI/Templates/SchedulerUI/UIxCalMainFrame.wox\n controller: 'CalendarsController',\n controllerAs: 'calendars'\n }\n },\n resolve: {\n stateCalendars: stateCalendars\n }\n })\n .state('calendars.view', {\n url: '/{view:(?:day|week|month)}/:day',\n sticky: true,\n deepStateRedirect: true,\n views: {\n calendarView: {\n templateUrl: function($stateParams) {\n // UI/Templates/SchedulerUI/UIxCalDayView.wox or\n // UI/Templates/SchedulerUI/UIxCalWeekView.wox or\n // UI/Templates/SchedulerUI/UIxCalMonthView.wox\n return $stateParams.view + 'view?day=' + $stateParams.day;\n },\n controller: 'CalendarController',\n controllerAs: 'calendar'\n }\n },\n resolve: {\n stateEventsBlocks: stateEventsBlocks\n }\n });\n\n $urlRouterProvider.when('/calendar/day', function() {\n // If no date is specified, show today\n var now = new Date();\n return '/calendar/day/' + now.getDayString();\n });\n $urlRouterProvider.when('/calendar/week', function() {\n // If no date is specified, show today's week\n var now = new Date();\n return '/calendar/week/' + now.getDayString();\n });\n $urlRouterProvider.when('/calendar/month', function() {\n // If no date is specified, show today's month\n var now = new Date();\n return '/calendar/month/' + now.getDayString();\n });\n\n // If none of the above states are matched, use this as the fallback.\n // runBlock will also act as a fallback by looking at user's settings\n $urlRouterProvider.otherwise('/calendar');\n }\n\n /**\n * @ngInject\n */\n stateCalendars.$inject = ['Calendar'];\n function stateCalendars(Calendar) {\n return Calendar.$calendars || Calendar.$findAll(window.calendarsData);\n }\n\n /**\n * @ngInject\n */\n stateEventsBlocks.$inject = ['$stateParams', 'Component'];\n function stateEventsBlocks($stateParams, Component) {\n return Component.$eventsBlocksForView($stateParams.view, $stateParams.day.asDate());\n }\n\n /**\n * @ngInject\n */\n runBlock.$inject = ['$rootScope', '$location', 'Preferences'];\n function runBlock($rootScope, $location, Preferences) {\n $rootScope.$on('$routeChangeError', function(event, current, previous, rejection) {\n console.error(event, current, previous, rejection);\n });\n if ($location.url().length === 0) {\n // Restore user's last view\n Preferences.ready().then(function() {\n var view = /(.+)view/.exec(Preferences.settings.Calendar.View);\n if (view) {\n $location.replace().url('/calendar/' + view[1]);\n }\n });\n }\n }\n\n})();\n","/* -*- Mode: javascript; indent-tabs-mode: nil; c-basic-offset: 2 -*- */\n\n(function() {\n 'use strict';\n\n /**\n * @ngInject\n */\n CalendarController.$inject = ['$scope', '$state', '$stateParams', '$timeout', '$interval', '$log', 'sgFocus', 'Calendar', 'Component', 'stateEventsBlocks'];\n function CalendarController($scope, $state, $stateParams, $timeout, $interval, $log, focus, Calendar, Component, stateEventsBlocks) {\n var vm = this;\n\n vm.blocks = stateEventsBlocks;\n vm.changeView = changeView;\n\n // Refresh current view when the list of calendars is modified\n $scope.$on('calendars:list', function() {\n Component.$eventsBlocksForView($stateParams.view, $stateParams.day.asDate()).then(function(data) {\n vm.blocks = data;\n });\n });\n\n // Change calendar's view\n function changeView($event) {\n var date = angular.element($event.currentTarget).attr('date');\n $state.go('calendars.view', { view: $stateParams.view, day: date });\n }\n }\n \n angular\n .module('SOGo.SchedulerUI') \n .controller('CalendarController', CalendarController);\n})();\n","/* -*- Mode: javascript; indent-tabs-mode: nil; c-basic-offset: 2 -*- */\n\n(function() {\n 'use strict';\n\n /**\n * @ngInject\n */\n CalendarListController.$inject = ['$scope', '$timeout', '$state', '$mdDialog', 'encodeUriFilter', 'Dialog', 'Preferences', 'Calendar', 'Component'];\n function CalendarListController($scope, $timeout, $state, $mdDialog, encodeUriFilter, Dialog, Preferences, Calendar, Component) {\n var vm = this;\n\n vm.component = Component;\n vm.componentType = 'events';\n vm.selectedList = 0;\n vm.selectComponentType = selectComponentType;\n vm.unselectComponents = unselectComponents;\n vm.selectAll = selectAll;\n vm.confirmDeleteSelectedComponents = confirmDeleteSelectedComponents;\n vm.openEvent = openEvent;\n vm.openTask = openTask;\n vm.newComponent = newComponent;\n vm.filter = filter;\n vm.filteredBy = filteredBy;\n vm.sort = sort;\n vm.sortedBy = sortedBy;\n vm.cancelSearch = cancelSearch;\n vm.mode = { search: false };\n\n // Select list based on user's settings\n Preferences.ready().then(function() {\n var type = 'events';\n if (Preferences.settings.Calendar.SelectedList == 'tasksListView') {\n vm.selectedList = 1;\n type = 'tasks';\n }\n selectComponentType(type, { reload: true });\n });\n\n // Refresh current list when the list of calendars is modified\n $scope.$on('calendars:list', function() {\n Component.$filter(vm.componentType, { reload: true });\n });\n\n // Switch between components tabs\n function selectComponentType(type, options) {\n if (options && options.reload || vm.componentType != type) {\n // TODO: save user settings (Calendar.SelectedList)\n if (angular.isUndefined(Component['$' + type]))\n Component.$filter(type);\n vm.unselectComponents();\n vm.componentType = type;\n Component.saveSelectedList(type);\n }\n }\n\n function unselectComponents() {\n _.each(Component['$' + vm.componentType], function(component) { component.selected = false; });\n }\n\n function selectAll() {\n _.each(Component['$' + vm.componentType], function(component) {\n component.selected = true;\n });\n }\n\n function confirmDeleteSelectedComponents() {\n Dialog.confirm(l('Warning'),\n l('Are you sure you want to delete the selected components?'))\n .then(function() {\n // User confirmed the deletion\n var components = _.filter(Component['$' + vm.componentType], function(component) { return component.selected; });\n Calendar.$deleteComponents(components);\n }, function(data, status) {\n // Delete failed\n });\n }\n\n function openEvent($event, event) {\n openComponent($event, event, 'appointment');\n }\n\n function openTask($event, task) {\n openComponent($event, task, 'task');\n }\n\n function openComponent($event, component, type) {\n // UI/Templates/SchedulerUI/UIxAppointmentViewTemplate.wox or\n // UI/Templates/SchedulerUI/UIxTaskViewTemplate.wox\n var templateUrl = 'UIx' + type.capitalize() + 'ViewTemplate';\n $mdDialog.show({\n parent: angular.element(document.body),\n targetEvent: $event,\n clickOutsideToClose: true,\n escapeToClose: true,\n templateUrl: templateUrl,\n controller: 'ComponentController',\n controllerAs: 'editor',\n locals: {\n stateComponent: component\n }\n });\n }\n\n function newComponent($event) {\n var type = 'appointment', component;\n\n if (vm.componentType == 'tasks')\n type = 'task';\n component = new Component({ pid: 'personal', type: type });\n\n // UI/Templates/SchedulerUI/UIxAppointmentEditorTemplate.wox or\n // UI/Templates/SchedulerUI/UIxTaskEditorTemplate.wox\n var templateUrl = 'UIx' + type.capitalize() + 'EditorTemplate';\n $mdDialog.show({\n parent: angular.element(document.body),\n targetEvent: $event,\n clickOutsideToClose: true,\n escapeToClose: true,\n templateUrl: templateUrl,\n controller: 'ComponentEditorController',\n controllerAs: 'editor',\n locals: {\n stateComponent: component\n }\n });\n }\n\n function filter(filterpopup) {\n Component.$filter(vm.componentType, { filterpopup: filterpopup });\n }\n\n function filteredBy(filterpopup) {\n return Component['$query' + vm.componentType.capitalize()].filterpopup == filterpopup;\n }\n\n function sort(field) {\n Component.$filter(vm.componentType, { sort: field });\n }\n\n function sortedBy(field) {\n return Component['$query' + vm.componentType.capitalize()].sort == field;\n }\n\n function cancelSearch() {\n vm.mode.search = false;\n Component.$filter(vm.componentType, { value: '' });\n }\n }\n \n angular\n .module('SOGo.SchedulerUI')\n .controller('CalendarListController', CalendarListController);\n})();\n","/* -*- Mode: javascript; indent-tabs-mode: nil; c-basic-offset: 2 -*- */\n\n(function() {\n 'use strict';\n\n /**\n * @ngInject\n */\n CalendarsController.$inject = ['$scope', '$rootScope', '$stateParams', '$state', '$timeout', '$q', '$mdDialog', '$log', 'sgFocus', 'encodeUriFilter', 'Dialog', 'sgSettings', 'Calendar', 'User', 'stateCalendars'];\n function CalendarsController($scope, $rootScope, $stateParams, $state, $timeout, $q, $mdDialog, $log, focus, encodeUriFilter, Dialog, Settings, Calendar, User, stateCalendars) {\n var vm = this;\n\n vm.activeUser = Settings.activeUser;\n vm.service = Calendar;\n vm.newCalendar = newCalendar;\n vm.addWebCalendar = addWebCalendar;\n vm.confirmDelete = confirmDelete;\n vm.share = share;\n vm.showLinks = showLinks;\n vm.showProperties = showProperties;\n vm.subscribeToFolder = subscribeToFolder;\n\n // Dispatch the event named 'calendars:list' when a calendar is activated or deactivated or\n // when the color of a calendar is changed\n $scope.$watch(\n function() {\n return _.union(\n _.map(Calendar.$calendars, function(o) { return _.pick(o, ['id', 'active', 'color']); }),\n _.map(Calendar.$subscriptions, function(o) { return _.pick(o, ['id', 'active', 'color']); }),\n _.map(Calendar.$webcalendars, function(o) { return _.pick(o, ['id', 'active', 'color']); })\n );\n },\n function(newList, oldList) {\n // Identify which calendar has changed\n var ids = _.pluck(_.filter(newList, function(o, i) { return !_.isEqual(o, oldList[i]); }), 'id');\n if (ids.length > 0) {\n $log.debug(ids.join(', ') + ' changed');\n _.each(ids, function(id) {\n var calendar = Calendar.$get(id);\n calendar.$setActivation().then(function() {\n $scope.$broadcast('calendars:list');\n });\n });\n }\n },\n true // compare for object equality\n );\n\n function newCalendar(ev) {\n Dialog.prompt(l('New calendar'), l('Name of the Calendar'))\n .then(function(name) {\n var calendar = new Calendar(\n {\n name: name,\n isEditable: true,\n isRemote: false,\n owner: UserLogin\n }\n );\n Calendar.$add(calendar);\n });\n }\n\n function addWebCalendar() {\n Dialog.prompt(l('Subscribe to a web calendar...'), l('URL of the Calendar'), {inputType: 'url'})\n .then(function(url) {\n Calendar.$addWebCalendar(url);\n });\n }\n\n function confirmDelete(folder) {\n if (folder.isSubscription) {\n // Unsubscribe without confirmation\n folder.$delete()\n .then(function() {\n $scope.$broadcast('calendars:list');\n }, function(data, status) {\n Dialog.alert(l('An error occured while deleting the calendar \"%{0}\".', folder.name),\n l(data.error));\n });\n }\n else {\n Dialog.confirm(l('Warning'), l('Are you sure you want to delete the calendar %{0}?', folder.name))\n .then(function() {\n folder.$delete()\n .then(function() {\n $scope.$broadcast('calendars:list');\n }, function(data, status) {\n Dialog.alert(l('An error occured while deleting the calendar \"%{0}\".', folder.name),\n l(data.error));\n });\n });\n }\n }\n\n function showLinks(calendar) {\n $mdDialog.show({\n parent: angular.element(document.body),\n clickOutsideToClose: true,\n escapeToClose: true,\n templateUrl: calendar.id + '/links',\n controller: LinksDialogController,\n controllerAs: 'links',\n locals: {\n calendar: calendar\n }\n });\n \n /**\n * @ngInject\n */\n LinksDialogController.$inject = ['$mdDialog', 'calendar'];\n function LinksDialogController($mdDialog, calendar) {\n var vm = this;\n vm.calendar = calendar;\n vm.close = close;\n\n function close() {\n $mdDialog.hide();\n }\n }\n }\n\n function showProperties(calendar) {\n $mdDialog.show({\n templateUrl: calendar.id + '/properties',\n controller: PropertiesDialogController,\n controllerAs: 'properties',\n clickOutsideToClose: true,\n escapeToClose: true,\n locals: {\n calendar: calendar\n }\n });\n \n /**\n * @ngInject\n */\n PropertiesDialogController.$inject = ['$mdDialog', 'calendar'];\n function PropertiesDialogController($mdDialog, calendar) {\n var vm = this;\n\n vm.calendar = new Calendar(calendar.$omit());\n vm.saveProperties = saveProperties;\n vm.close = close;\n\n function saveProperties() {\n vm.calendar.$save();\n // Refresh list instance\n calendar.init(vm.calendar.$omit());\n $mdDialog.hide();\n }\n\n function close() {\n $mdDialog.hide();\n }\n }\n }\n\n function share(calendar) {\n calendar.$acl.$users().then(function() {\n $mdDialog.show({\n templateUrl: calendar.id + '/UIxAclEditor', // UI/Templates/UIxAclEditor.wox\n controller: 'AclController', // from the ng module SOGo.Common\n controllerAs: 'acl',\n clickOutsideToClose: true,\n escapeToClose: true,\n locals: {\n usersWithACL: calendar.$acl.users,\n User: User,\n folder: calendar\n }\n });\n });\n }\n\n // Callback of sgSubscribe directive\n function subscribeToFolder(calendarData) {\n $log.debug('subscribeToFolder ' + calendarData.owner + calendarData.name);\n Calendar.$subscribe(calendarData.owner, calendarData.name).catch(function(data) {\n Dialog.alert(l('Warning'), l('An error occured please try again.'));\n });\n }\n }\n\n angular\n .module('SOGo.SchedulerUI')\n .controller('CalendarsController', CalendarsController);\n})();\n","/* -*- Mode: javascript; indent-tabs-mode: nil; c-basic-offset: 2 -*- */\n\n(function() {\n 'use strict';\n\n /**\n * @ngInject\n */\n ComponentController.$inject = ['$rootScope', '$mdDialog', 'Calendar', 'AddressBook', 'Alarm', 'stateComponent'];\n function ComponentController($rootScope, $mdDialog, Calendar, AddressBook, Alarm, stateComponent) {\n var vm = this, component;\n\n vm.component = stateComponent;\n vm.close = close;\n vm.cardFilter = cardFilter;\n vm.edit = edit;\n vm.editAllOccurrences = editAllOccurrences;\n vm.reply = reply;\n vm.replyAllOccurrences = replyAllOccurrences;\n\n // Load all attributes of component\n if (angular.isUndefined(vm.component.$futureComponentData)) {\n component = Calendar.$get(vm.component.c_folder).$getComponent(vm.component.c_name, vm.component.c_recurrence_id);\n component.$futureComponentData.then(function() {\n vm.component = component;\n vm.organizer = [vm.component.organizer];\n });\n }\n\n function close() {\n $mdDialog.hide();\n }\n\n // Autocomplete cards for attendees\n function cardFilter($query) {\n AddressBook.$filterAll($query);\n return AddressBook.$cards;\n }\n\n function edit() {\n var type = (vm.component.component == 'vevent')? 'Appointment':'Task';\n $mdDialog.hide().then(function() {\n // UI/Templates/SchedulerUI/UIxAppointmentEditorTemplate.wox or\n // UI/Templates/SchedulerUI/UIxTaskEditorTemplate.wox\n var templateUrl = 'UIx' + type + 'EditorTemplate';\n $mdDialog.show({\n parent: angular.element(document.body),\n clickOutsideToClose: true,\n escapeToClose: true,\n templateUrl: templateUrl,\n controller: 'ComponentEditorController',\n controllerAs: 'editor',\n locals: {\n stateComponent: vm.component\n }\n });\n });\n }\n\n function editAllOccurrences() {\n component = Calendar.$get(vm.component.pid).$getComponent(vm.component.id);\n component.$futureComponentData.then(function() {\n vm.component = component;\n edit();\n });\n }\n\n function reply(component) {\n var c = component || vm.component;\n\n c.$reply().then(function() {\n $rootScope.$broadcast('calendars:list');\n $mdDialog.hide();\n Alarm.getAlarms();\n });\n }\n\n function replyAllOccurrences() {\n // Retrieve master event\n component = Calendar.$get(vm.component.pid).$getComponent(vm.component.id);\n component.$futureComponentData.then(function() {\n // Propagate the participant status and alarm to the master event\n component.reply = vm.component.reply;\n component.delegatedTo = vm.component.delegatedTo;\n component.$hasAlarm = vm.component.$hasAlarm;\n component.alarm = vm.component.alarm;\n // Send reply to the server\n reply(component);\n });\n }\n }\n\n /**\n * @ngInject\n */\n ComponentEditorController.$inject = ['$rootScope', '$scope', '$log', '$timeout', '$mdDialog', 'User', 'Calendar', 'Component', 'AddressBook', 'Card', 'Alarm', 'stateComponent'];\n function ComponentEditorController($rootScope, $scope, $log, $timeout, $mdDialog, User, Calendar, Component, AddressBook, Card, Alarm, stateComponent) {\n var vm = this, component;\n\n vm.calendars = Calendar.$calendars;\n vm.component = stateComponent;\n vm.categories = {};\n vm.showRecurrenceEditor = vm.component.$hasCustomRepeat;\n vm.toggleRecurrenceEditor = toggleRecurrenceEditor;\n vm.showAttendeesEditor = angular.isDefined(vm.component.attendees);\n vm.toggleAttendeesEditor = toggleAttendeesEditor;\n vm.cardFilter = cardFilter;\n vm.addAttendee = addAttendee;\n vm.addAttachUrl = addAttachUrl;\n vm.cancel = cancel;\n vm.save = save;\n vm.attendeesEditor = {\n startDate: vm.component.startDate,\n endDate: vm.component.endDate,\n days: getDays(),\n hours: getHours()\n };\n\n $scope.$watch('editor.component.startDate', function(newStartDate, oldStartDate) {\n if (newStartDate) {\n $timeout(function() {\n vm.component.start = new Date(newStartDate.substring(0,10) + ' ' + newStartDate.substring(11,16));\n vm.component.freebusy = vm.component.updateFreeBusyCoverage();\n vm.attendeesEditor.days = getDays();\n });\n }\n });\n\n $scope.$watch('editor.component.endDate', function(newEndDate, oldEndDate) {\n if (newEndDate) {\n $timeout(function() {\n vm.component.end = new Date(newEndDate.substring(0,10) + ' ' + newEndDate.substring(11,16));\n vm.component.freebusy = vm.component.updateFreeBusyCoverage();\n vm.attendeesEditor.days = getDays();\n });\n }\n });\n\n function addAttachUrl() {\n var i = vm.component.addAttachUrl('');\n focus('attachUrl_' + i);\n }\n\n function toggleRecurrenceEditor() {\n vm.showRecurrenceEditor = !vm.showRecurrenceEditor;\n vm.component.$hasCustomRepeat = vm.showRecurrenceEditor;\n }\n\n function toggleAttendeesEditor() {\n vm.showAttendeesEditor = !vm.showAttendeesEditor;\n }\n\n // Autocomplete cards for attendees\n function cardFilter($query) {\n AddressBook.$filterAll($query);\n return AddressBook.$cards;\n }\n\n function addAttendee(card) {\n if (angular.isString(card)) {\n // User pressed \"Enter\" in search field, adding a non-matching card\n if (card.isValidEmail()) {\n vm.component.addAttendee(new Card({ emails: [{ value: card }] }));\n vm.searchText = '';\n }\n }\n else {\n vm.component.addAttendee(card);\n }\n }\n\n function save(form) {\n if (form.$valid) {\n vm.component.$save()\n .then(function(data) {\n $rootScope.$broadcast('calendars:list');\n $mdDialog.hide();\n Alarm.getAlarms();\n }, function(data, status) {\n $log.debug('failed');\n });\n }\n }\n\n function cancel() {\n vm.component.$reset();\n if (vm.component.isNew) {\n // Cancelling the creation of a component\n vm.component = null;\n }\n $mdDialog.hide();\n }\n\n function getDays() {\n var days = [];\n\n if (vm.component.start && vm.component.end)\n days = vm.component.start.daysUpTo(vm.component.end);\n\n return _.map(days, function(date) {\n return { stringWithSeparator: date.stringWithSeparator(),\n getDayString: date.getDayString() };\n });\n }\n\n function getHours() {\n var hours = [];\n for (var i = 0; i <= 23; i++) {\n //hours.push(Component.timeFormat.formatTime(i, 0));\n hours.push(i.toString());\n }\n return hours;\n }\n }\n\n angular\n .module('SOGo.SchedulerUI')\n .controller('ComponentController', ComponentController)\n .controller('ComponentEditorController', ComponentEditorController);\n})();\n","/* -*- Mode: javascript; indent-tabs-mode: nil; c-basic-offset: 2 -*- */\n\n(function() {\n 'use strict';\n\n /*\n * sgCalendarDayBlock - An event block to be displayed in a week\n * @memberof SOGo.Common\n * @restrict element\n * @param {object} sgBlock - the event block definition\n * @param {function} sgClick - the function to call when clicking on a block.\n * Two variables are available: clickEvent (the event that triggered the mouse click),\n * and clickComponent (a Component object)\n *\n * @example:\n\n \n */\n function sgCalendarDayBlock() {\n return {\n restrict: 'E',\n scope: {\n block: '=sgBlock',\n clickBlock: '&sgClick'\n },\n replace: true,\n template: [\n '
',\n '
',\n '
',\n '
',\n '
{{ block.component.c_title }}',\n ' ',\n // Component has an alarm\n ' ',\n // Component is confidential\n ' ',\n // Component is private\n ' ',\n '
',\n '
',\n '
',\n '
',\n '
'\n ].join(''),\n link: link\n };\n\n function link(scope, iElement, attrs) {\n // Compute overlapping (5%)\n var pc = 100 / scope.block.siblings,\n left = scope.block.position * pc,\n right = 100 - (scope.block.position + 1) * pc;\n\n if (pc < 100) {\n if (left > 0)\n left -= 5;\n if (right > 0)\n right -= 5;\n }\n\n // Set position\n iElement.css('left', left + '%');\n iElement.css('right', right + '%');\n iElement.addClass('starts' + scope.block.start);\n iElement.addClass('lasts' + scope.block.length);\n iElement.addClass('bg-folder' + scope.block.component.c_folder);\n }\n }\n\n angular\n .module('SOGo.SchedulerUI')\n .directive('sgCalendarDayBlock', sgCalendarDayBlock);\n})();\n","/* -*- Mode: javascript; indent-tabs-mode: nil; c-basic-offset: 2 -*- */\n\n(function() {\n 'use strict';\n\n /*\n * sgCalendarDayTable - Build list of blocks for a specific day\n * @memberof SOGo.Common\n * @restrict element\n * @param {object} sgBlocks - the events blocks definitions for the current view\n * @param {string} sgDay - the day of the events to display\n * @param {function} sgClick - the function to call when clicking on a block.\n * Two variables are available: event (the event that triggered the mouse click),\n * and component (a Component object)\n *\n * @example:\n\n \n */\n function sgCalendarDayTable() {\n return {\n restrict: 'E',\n scope: {\n blocks: '=sgBlocks',\n day: '@sgDay',\n clickBlock: '&sgClick'\n },\n template: [\n ''\n ].join('')\n };\n }\n\n angular\n .module('SOGo.SchedulerUI')\n .directive('sgCalendarDayTable', sgCalendarDayTable);\n})();\n","/* -*- Mode: javascript; indent-tabs-mode: nil; c-basic-offset: 2 -*- */\n\n(function() {\n 'use strict';\n\n /*\n * sgCalendarMonthDay - Build list of blocks for a specific day in a month\n * @memberof SOGo.Common\n * @restrict element\n * @param {object} sgBlocks - the events blocks definitions for the current view\n * @param {string} sgDay - the day of the events to display\n * @ngInject\n * @example:\n\n \n */\n function sgCalendarMonthDay() {\n return {\n restrict: 'E',\n scope: {\n blocks: '=sgBlocks',\n day: '@sgDay',\n clickBlock: '&sgClick'\n },\n template: [\n ''\n ].join('')\n };\n }\n\n angular\n .module('SOGo.SchedulerUI')\n .directive('sgCalendarMonthDay', sgCalendarMonthDay);\n})();\n","/* -*- Mode: javascript; indent-tabs-mode: nil; c-basic-offset: 2 -*- */\n\n(function() {\n 'use strict';\n\n /*\n * sgCalendarMonthEvent - An event block to be displayed in a month\n * @memberof SOGo.Common\n * @restrict element\n * @param {object} sgBlock - the event block definition\n * @ngInject\n * @example:\n\n \n */\n function sgCalendarMonthEvent() {\n return {\n restrict: 'E',\n scope: {\n block: '=sgBlock',\n clickBlock: '&sgClick'\n },\n replace: true,\n template: [\n '
',\n ' {{ block.starthour }} - ',\n ' {{ block.component.c_title }}',\n ' ',\n ' ',\n ' ',\n ' ',\n ' ',\n '
',\n '
',\n '
'\n ].join(''),\n link: link\n };\n\n function link(scope, iElement, attrs) {\n iElement.addClass('bg-folder' + scope.block.component.c_folder);\n }\n }\n\n angular\n .module('SOGo.SchedulerUI')\n .directive('sgCalendarMonthEvent', sgCalendarMonthEvent);\n})();\n"]} \ No newline at end of file +{"version":3,"file":"Scheduler.js","sources":["Scheduler/Scheduler.app.js","Scheduler/CalendarController.js","Scheduler/CalendarListController.js","Scheduler/CalendarsController.js","Scheduler/ComponentController.js","Scheduler/sgCalendarDayBlock.directive.js","Scheduler/sgCalendarDayTable.directive.js","Scheduler/sgCalendarMonthDay.directive.js","Scheduler/sgCalendarMonthEvent.directive.js"],"names":["configure","$stateProvider","$urlRouterProvider","state","url","views","calendars","templateUrl","controller","controllerAs","resolve","stateCalendars","sticky","deepStateRedirect","calendarView","$stateParams","view","day","stateEventsBlocks","when","now","Date","getDayString","otherwise","Calendar","$calendars","$findAll","window","calendarsData","Component","$eventsBlocksForView","asDate","runBlock","$rootScope","$location","Preferences","$on","event","current","previous","rejection","console","error","length","ready","then","exec","settings","View","replace","angular","module","config","run","$inject","CalendarController","$scope","$state","$timeout","$interval","$log","focus","changeView","$event","date","element","currentTarget","attr","go","vm","this","blocks","data","CalendarListController","$mdDialog","encodeUriFilter","Dialog","selectComponentType","type","options","reload","componentType","isUndefined","$filter","unselectComponents","saveSelectedList","_","each","component","selected","selectAll","confirmDeleteSelectedComponents","confirm","l","components","filter","$deleteComponents","status","openEvent","viewable","openComponent","openTask","task","capitalize","show","parent","document","body","targetEvent","clickOutsideToClose","escapeToClose","locals","stateComponent","newComponent","pid","filterpopup","filteredBy","sort","field","sortedBy","cancelSearch","mode","search","value","selectedList","SelectedList","CalendarsController","$q","Settings","User","newCalendar","ev","prompt","name","calendar","isEditable","isRemote","owner","UserLogin","$add","addWebCalendar","inputType","$addWebCalendar","confirmDelete","folder","isSubscription","$delete","$broadcast","alert","showLinks","LinksDialogController","close","hide","id","showProperties","PropertiesDialogController","saveProperties","$save","init","$omit","share","$acl","$users","usersWithACL","users","subscribeToFolder","calendarData","debug","$subscribe","activeUser","service","$watch","union","map","o","pick","$subscriptions","$webcalendars","newList","oldList","ids","pluck","i","isEqual","join","$get","$setActivation","ComponentController","AddressBook","Alarm","cardFilter","$query","$filterAll","$cards","edit","editAllOccurrences","$getComponent","$futureComponentData","reply","c","$reply","getAlarms","replyAllOccurrences","delegatedTo","$hasAlarm","alarm","c_folder","c_name","c_recurrence_id","organizer","ComponentEditorController","Card","addAttachUrl","toggleRecurrenceEditor","showRecurrenceEditor","$hasCustomRepeat","toggleAttendeesEditor","showAttendeesEditor","addAttendee","card","isString","isValidEmail","emails","searchText","save","form","$valid","cancel","$reset","isNew","getDays","days","start","end","daysUpTo","stringWithSeparator","getHours","hours","push","toString","categories","isDefined","attendees","attendeesEditor","startDate","endDate","newStartDate","oldStartDate","substring","freebusy","updateFreeBusyCoverage","newEndDate","oldEndDate","sgCalendarDayBlock","link","scope","iElement","attrs","pc","block","siblings","left","position","right","css","addClass","restrict","clickBlock","template","directive","sgCalendarDayTable","sgCalendarMonthDay","sgCalendarMonthEvent"],"mappings":"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","sourcesContent":["/* -*- Mode: javascript; indent-tabs-mode: nil; c-basic-offset: 2 -*- */\n/* JavaScript for SOGo.SchedulerUI module */\n\n(function() {\n 'use strict';\n\n angular.module('SOGo.SchedulerUI', ['ngSanitize', 'ui.router', 'SOGo.Common', 'SOGo.PreferencesUI', 'SOGo.ContactsUI', 'SOGo.MailerUI'])\n .config(configure)\n .run(runBlock);\n\n /**\n * @ngInject\n */\n configure.$inject = ['$stateProvider', '$urlRouterProvider'];\n function configure($stateProvider, $urlRouterProvider) {\n $stateProvider\n .state('calendars', {\n url: '/calendar',\n views: {\n calendars: {\n templateUrl: 'UIxCalMainFrame', // UI/Templates/SchedulerUI/UIxCalMainFrame.wox\n controller: 'CalendarsController',\n controllerAs: 'calendars'\n }\n },\n resolve: {\n stateCalendars: stateCalendars\n }\n })\n .state('calendars.view', {\n url: '/{view:(?:day|week|month)}/:day',\n sticky: true,\n deepStateRedirect: true,\n views: {\n calendarView: {\n templateUrl: function($stateParams) {\n // UI/Templates/SchedulerUI/UIxCalDayView.wox or\n // UI/Templates/SchedulerUI/UIxCalWeekView.wox or\n // UI/Templates/SchedulerUI/UIxCalMonthView.wox\n return $stateParams.view + 'view?day=' + $stateParams.day;\n },\n controller: 'CalendarController',\n controllerAs: 'calendar'\n }\n },\n resolve: {\n stateEventsBlocks: stateEventsBlocks\n }\n });\n\n $urlRouterProvider.when('/calendar/day', function() {\n // If no date is specified, show today\n var now = new Date();\n return '/calendar/day/' + now.getDayString();\n });\n $urlRouterProvider.when('/calendar/week', function() {\n // If no date is specified, show today's week\n var now = new Date();\n return '/calendar/week/' + now.getDayString();\n });\n $urlRouterProvider.when('/calendar/month', function() {\n // If no date is specified, show today's month\n var now = new Date();\n return '/calendar/month/' + now.getDayString();\n });\n\n // If none of the above states are matched, use this as the fallback.\n // runBlock will also act as a fallback by looking at user's settings\n $urlRouterProvider.otherwise('/calendar');\n }\n\n /**\n * @ngInject\n */\n stateCalendars.$inject = ['Calendar'];\n function stateCalendars(Calendar) {\n return Calendar.$calendars || Calendar.$findAll(window.calendarsData);\n }\n\n /**\n * @ngInject\n */\n stateEventsBlocks.$inject = ['$stateParams', 'Component'];\n function stateEventsBlocks($stateParams, Component) {\n return Component.$eventsBlocksForView($stateParams.view, $stateParams.day.asDate());\n }\n\n /**\n * @ngInject\n */\n runBlock.$inject = ['$rootScope', '$location', 'Preferences'];\n function runBlock($rootScope, $location, Preferences) {\n $rootScope.$on('$routeChangeError', function(event, current, previous, rejection) {\n console.error(event, current, previous, rejection);\n });\n if ($location.url().length === 0) {\n // Restore user's last view\n Preferences.ready().then(function() {\n var view = /(.+)view/.exec(Preferences.settings.Calendar.View);\n if (view) {\n $location.replace().url('/calendar/' + view[1]);\n }\n });\n }\n }\n\n})();\n","/* -*- Mode: javascript; indent-tabs-mode: nil; c-basic-offset: 2 -*- */\n\n(function() {\n 'use strict';\n\n /**\n * @ngInject\n */\n CalendarController.$inject = ['$scope', '$state', '$stateParams', '$timeout', '$interval', '$log', 'sgFocus', 'Calendar', 'Component', 'stateEventsBlocks'];\n function CalendarController($scope, $state, $stateParams, $timeout, $interval, $log, focus, Calendar, Component, stateEventsBlocks) {\n var vm = this;\n\n vm.blocks = stateEventsBlocks;\n vm.changeView = changeView;\n\n // Refresh current view when the list of calendars is modified\n $scope.$on('calendars:list', function() {\n Component.$eventsBlocksForView($stateParams.view, $stateParams.day.asDate()).then(function(data) {\n vm.blocks = data;\n });\n });\n\n // Change calendar's view\n function changeView($event) {\n var date = angular.element($event.currentTarget).attr('date');\n $state.go('calendars.view', { view: $stateParams.view, day: date });\n }\n }\n \n angular\n .module('SOGo.SchedulerUI') \n .controller('CalendarController', CalendarController);\n})();\n","/* -*- Mode: javascript; indent-tabs-mode: nil; c-basic-offset: 2 -*- */\n\n(function() {\n 'use strict';\n\n /**\n * @ngInject\n */\n CalendarListController.$inject = ['$scope', '$timeout', '$state', '$mdDialog', 'encodeUriFilter', 'Dialog', 'Preferences', 'Calendar', 'Component'];\n function CalendarListController($scope, $timeout, $state, $mdDialog, encodeUriFilter, Dialog, Preferences, Calendar, Component) {\n var vm = this;\n\n vm.component = Component;\n vm.componentType = 'events';\n vm.selectedList = 0;\n vm.selectComponentType = selectComponentType;\n vm.unselectComponents = unselectComponents;\n vm.selectAll = selectAll;\n vm.confirmDeleteSelectedComponents = confirmDeleteSelectedComponents;\n vm.openEvent = openEvent;\n vm.openTask = openTask;\n vm.newComponent = newComponent;\n vm.filter = filter;\n vm.filteredBy = filteredBy;\n vm.sort = sort;\n vm.sortedBy = sortedBy;\n vm.cancelSearch = cancelSearch;\n vm.mode = { search: false };\n\n // Select list based on user's settings\n Preferences.ready().then(function() {\n var type = 'events';\n if (Preferences.settings.Calendar.SelectedList == 'tasksListView') {\n vm.selectedList = 1;\n type = 'tasks';\n }\n selectComponentType(type, { reload: true });\n });\n\n // Refresh current list when the list of calendars is modified\n $scope.$on('calendars:list', function() {\n Component.$filter(vm.componentType, { reload: true });\n });\n\n // Switch between components tabs\n function selectComponentType(type, options) {\n if (options && options.reload || vm.componentType != type) {\n // TODO: save user settings (Calendar.SelectedList)\n if (angular.isUndefined(Component['$' + type]))\n Component.$filter(type);\n vm.unselectComponents();\n vm.componentType = type;\n Component.saveSelectedList(type);\n }\n }\n\n function unselectComponents() {\n _.each(Component['$' + vm.componentType], function(component) { component.selected = false; });\n }\n\n function selectAll() {\n _.each(Component['$' + vm.componentType], function(component) {\n component.selected = true;\n });\n }\n\n function confirmDeleteSelectedComponents() {\n Dialog.confirm(l('Warning'),\n l('Are you sure you want to delete the selected components?'))\n .then(function() {\n // User confirmed the deletion\n var components = _.filter(Component['$' + vm.componentType], function(component) { return component.selected; });\n Calendar.$deleteComponents(components);\n }, function(data, status) {\n // Delete failed\n });\n }\n\n function openEvent($event, event) {\n if (event.viewable)\n openComponent($event, event, 'appointment');\n }\n\n function openTask($event, task) {\n if (task.viewable)\n openComponent($event, task, 'task');\n }\n\n function openComponent($event, component, type) {\n // UI/Templates/SchedulerUI/UIxAppointmentViewTemplate.wox or\n // UI/Templates/SchedulerUI/UIxTaskViewTemplate.wox\n var templateUrl = 'UIx' + type.capitalize() + 'ViewTemplate';\n $mdDialog.show({\n parent: angular.element(document.body),\n targetEvent: $event,\n clickOutsideToClose: true,\n escapeToClose: true,\n templateUrl: templateUrl,\n controller: 'ComponentController',\n controllerAs: 'editor',\n locals: {\n stateComponent: component\n }\n });\n }\n\n function newComponent($event) {\n var type = 'appointment', component;\n\n if (vm.componentType == 'tasks')\n type = 'task';\n component = new Component({ pid: 'personal', type: type });\n\n // UI/Templates/SchedulerUI/UIxAppointmentEditorTemplate.wox or\n // UI/Templates/SchedulerUI/UIxTaskEditorTemplate.wox\n var templateUrl = 'UIx' + type.capitalize() + 'EditorTemplate';\n $mdDialog.show({\n parent: angular.element(document.body),\n targetEvent: $event,\n clickOutsideToClose: true,\n escapeToClose: true,\n templateUrl: templateUrl,\n controller: 'ComponentEditorController',\n controllerAs: 'editor',\n locals: {\n stateComponent: component\n }\n });\n }\n\n function filter(filterpopup) {\n Component.$filter(vm.componentType, { filterpopup: filterpopup });\n }\n\n function filteredBy(filterpopup) {\n return Component['$query' + vm.componentType.capitalize()].filterpopup == filterpopup;\n }\n\n function sort(field) {\n Component.$filter(vm.componentType, { sort: field });\n }\n\n function sortedBy(field) {\n return Component['$query' + vm.componentType.capitalize()].sort == field;\n }\n\n function cancelSearch() {\n vm.mode.search = false;\n Component.$filter(vm.componentType, { value: '' });\n }\n }\n \n angular\n .module('SOGo.SchedulerUI')\n .controller('CalendarListController', CalendarListController);\n})();\n","/* -*- Mode: javascript; indent-tabs-mode: nil; c-basic-offset: 2 -*- */\n\n(function() {\n 'use strict';\n\n /**\n * @ngInject\n */\n CalendarsController.$inject = ['$scope', '$rootScope', '$stateParams', '$state', '$timeout', '$q', '$mdDialog', '$log', 'sgFocus', 'encodeUriFilter', 'Dialog', 'sgSettings', 'Calendar', 'User', 'stateCalendars'];\n function CalendarsController($scope, $rootScope, $stateParams, $state, $timeout, $q, $mdDialog, $log, focus, encodeUriFilter, Dialog, Settings, Calendar, User, stateCalendars) {\n var vm = this;\n\n vm.activeUser = Settings.activeUser;\n vm.service = Calendar;\n vm.newCalendar = newCalendar;\n vm.addWebCalendar = addWebCalendar;\n vm.confirmDelete = confirmDelete;\n vm.share = share;\n vm.showLinks = showLinks;\n vm.showProperties = showProperties;\n vm.subscribeToFolder = subscribeToFolder;\n\n // Dispatch the event named 'calendars:list' when a calendar is activated or deactivated or\n // when the color of a calendar is changed\n $scope.$watch(\n function() {\n return _.union(\n _.map(Calendar.$calendars, function(o) { return _.pick(o, ['id', 'active', 'color']); }),\n _.map(Calendar.$subscriptions, function(o) { return _.pick(o, ['id', 'active', 'color']); }),\n _.map(Calendar.$webcalendars, function(o) { return _.pick(o, ['id', 'active', 'color']); })\n );\n },\n function(newList, oldList) {\n // Identify which calendar has changed\n var ids = _.pluck(_.filter(newList, function(o, i) { return !_.isEqual(o, oldList[i]); }), 'id');\n if (ids.length > 0) {\n $log.debug(ids.join(', ') + ' changed');\n _.each(ids, function(id) {\n var calendar = Calendar.$get(id);\n calendar.$setActivation().then(function() {\n $scope.$broadcast('calendars:list');\n });\n });\n }\n },\n true // compare for object equality\n );\n\n function newCalendar(ev) {\n Dialog.prompt(l('New calendar'), l('Name of the Calendar'))\n .then(function(name) {\n var calendar = new Calendar(\n {\n name: name,\n isEditable: true,\n isRemote: false,\n owner: UserLogin\n }\n );\n Calendar.$add(calendar);\n });\n }\n\n function addWebCalendar() {\n Dialog.prompt(l('Subscribe to a web calendar...'), l('URL of the Calendar'), {inputType: 'url'})\n .then(function(url) {\n Calendar.$addWebCalendar(url);\n });\n }\n\n function confirmDelete(folder) {\n if (folder.isSubscription) {\n // Unsubscribe without confirmation\n folder.$delete()\n .then(function() {\n $scope.$broadcast('calendars:list');\n }, function(data, status) {\n Dialog.alert(l('An error occured while deleting the calendar \"%{0}\".', folder.name),\n l(data.error));\n });\n }\n else {\n Dialog.confirm(l('Warning'), l('Are you sure you want to delete the calendar %{0}?', folder.name))\n .then(function() {\n folder.$delete()\n .then(function() {\n $scope.$broadcast('calendars:list');\n }, function(data, status) {\n Dialog.alert(l('An error occured while deleting the calendar \"%{0}\".', folder.name),\n l(data.error));\n });\n });\n }\n }\n\n function showLinks(calendar) {\n $mdDialog.show({\n parent: angular.element(document.body),\n clickOutsideToClose: true,\n escapeToClose: true,\n templateUrl: calendar.id + '/links',\n controller: LinksDialogController,\n controllerAs: 'links',\n locals: {\n calendar: calendar\n }\n });\n \n /**\n * @ngInject\n */\n LinksDialogController.$inject = ['$mdDialog', 'calendar'];\n function LinksDialogController($mdDialog, calendar) {\n var vm = this;\n vm.calendar = calendar;\n vm.close = close;\n\n function close() {\n $mdDialog.hide();\n }\n }\n }\n\n function showProperties(calendar) {\n $mdDialog.show({\n templateUrl: calendar.id + '/properties',\n controller: PropertiesDialogController,\n controllerAs: 'properties',\n clickOutsideToClose: true,\n escapeToClose: true,\n locals: {\n calendar: calendar\n }\n });\n \n /**\n * @ngInject\n */\n PropertiesDialogController.$inject = ['$mdDialog', 'calendar'];\n function PropertiesDialogController($mdDialog, calendar) {\n var vm = this;\n\n vm.calendar = new Calendar(calendar.$omit());\n vm.saveProperties = saveProperties;\n vm.close = close;\n\n function saveProperties() {\n vm.calendar.$save();\n // Refresh list instance\n calendar.init(vm.calendar.$omit());\n $mdDialog.hide();\n }\n\n function close() {\n $mdDialog.hide();\n }\n }\n }\n\n function share(calendar) {\n calendar.$acl.$users().then(function() {\n $mdDialog.show({\n templateUrl: calendar.id + '/UIxAclEditor', // UI/Templates/UIxAclEditor.wox\n controller: 'AclController', // from the ng module SOGo.Common\n controllerAs: 'acl',\n clickOutsideToClose: true,\n escapeToClose: true,\n locals: {\n usersWithACL: calendar.$acl.users,\n User: User,\n folder: calendar\n }\n });\n });\n }\n\n // Callback of sgSubscribe directive\n function subscribeToFolder(calendarData) {\n $log.debug('subscribeToFolder ' + calendarData.owner + calendarData.name);\n Calendar.$subscribe(calendarData.owner, calendarData.name).catch(function(data) {\n Dialog.alert(l('Warning'), l('An error occured please try again.'));\n });\n }\n }\n\n angular\n .module('SOGo.SchedulerUI')\n .controller('CalendarsController', CalendarsController);\n})();\n","/* -*- Mode: javascript; indent-tabs-mode: nil; c-basic-offset: 2 -*- */\n\n(function() {\n 'use strict';\n\n /**\n * @ngInject\n */\n ComponentController.$inject = ['$rootScope', '$mdDialog', 'Calendar', 'AddressBook', 'Alarm', 'stateComponent'];\n function ComponentController($rootScope, $mdDialog, Calendar, AddressBook, Alarm, stateComponent) {\n var vm = this, component;\n\n vm.component = stateComponent;\n vm.close = close;\n vm.cardFilter = cardFilter;\n vm.edit = edit;\n vm.editAllOccurrences = editAllOccurrences;\n vm.reply = reply;\n vm.replyAllOccurrences = replyAllOccurrences;\n\n // Load all attributes of component\n if (angular.isUndefined(vm.component.$futureComponentData)) {\n component = Calendar.$get(vm.component.c_folder).$getComponent(vm.component.c_name, vm.component.c_recurrence_id);\n component.$futureComponentData.then(function() {\n vm.component = component;\n vm.organizer = [vm.component.organizer];\n });\n }\n\n function close() {\n $mdDialog.hide();\n }\n\n // Autocomplete cards for attendees\n function cardFilter($query) {\n AddressBook.$filterAll($query);\n return AddressBook.$cards;\n }\n\n function edit() {\n var type = (vm.component.component == 'vevent')? 'Appointment':'Task';\n $mdDialog.hide().then(function() {\n // UI/Templates/SchedulerUI/UIxAppointmentEditorTemplate.wox or\n // UI/Templates/SchedulerUI/UIxTaskEditorTemplate.wox\n var templateUrl = 'UIx' + type + 'EditorTemplate';\n $mdDialog.show({\n parent: angular.element(document.body),\n clickOutsideToClose: true,\n escapeToClose: true,\n templateUrl: templateUrl,\n controller: 'ComponentEditorController',\n controllerAs: 'editor',\n locals: {\n stateComponent: vm.component\n }\n });\n });\n }\n\n function editAllOccurrences() {\n component = Calendar.$get(vm.component.pid).$getComponent(vm.component.id);\n component.$futureComponentData.then(function() {\n vm.component = component;\n edit();\n });\n }\n\n function reply(component) {\n var c = component || vm.component;\n\n c.$reply().then(function() {\n $rootScope.$broadcast('calendars:list');\n $mdDialog.hide();\n Alarm.getAlarms();\n });\n }\n\n function replyAllOccurrences() {\n // Retrieve master event\n component = Calendar.$get(vm.component.pid).$getComponent(vm.component.id);\n component.$futureComponentData.then(function() {\n // Propagate the participant status and alarm to the master event\n component.reply = vm.component.reply;\n component.delegatedTo = vm.component.delegatedTo;\n component.$hasAlarm = vm.component.$hasAlarm;\n component.alarm = vm.component.alarm;\n // Send reply to the server\n reply(component);\n });\n }\n }\n\n /**\n * @ngInject\n */\n ComponentEditorController.$inject = ['$rootScope', '$scope', '$log', '$timeout', '$mdDialog', 'User', 'Calendar', 'Component', 'AddressBook', 'Card', 'Alarm', 'stateComponent'];\n function ComponentEditorController($rootScope, $scope, $log, $timeout, $mdDialog, User, Calendar, Component, AddressBook, Card, Alarm, stateComponent) {\n var vm = this, component;\n\n vm.calendars = Calendar.$calendars;\n vm.component = stateComponent;\n vm.categories = {};\n vm.showRecurrenceEditor = vm.component.$hasCustomRepeat;\n vm.toggleRecurrenceEditor = toggleRecurrenceEditor;\n vm.showAttendeesEditor = angular.isDefined(vm.component.attendees);\n vm.toggleAttendeesEditor = toggleAttendeesEditor;\n vm.cardFilter = cardFilter;\n vm.addAttendee = addAttendee;\n vm.addAttachUrl = addAttachUrl;\n vm.cancel = cancel;\n vm.save = save;\n vm.attendeesEditor = {\n startDate: vm.component.startDate,\n endDate: vm.component.endDate,\n days: getDays(),\n hours: getHours()\n };\n\n $scope.$watch('editor.component.startDate', function(newStartDate, oldStartDate) {\n if (newStartDate) {\n $timeout(function() {\n vm.component.start = new Date(newStartDate.substring(0,10) + ' ' + newStartDate.substring(11,16));\n vm.component.freebusy = vm.component.updateFreeBusyCoverage();\n vm.attendeesEditor.days = getDays();\n });\n }\n });\n\n $scope.$watch('editor.component.endDate', function(newEndDate, oldEndDate) {\n if (newEndDate) {\n $timeout(function() {\n vm.component.end = new Date(newEndDate.substring(0,10) + ' ' + newEndDate.substring(11,16));\n vm.component.freebusy = vm.component.updateFreeBusyCoverage();\n vm.attendeesEditor.days = getDays();\n });\n }\n });\n\n function addAttachUrl() {\n var i = vm.component.addAttachUrl('');\n focus('attachUrl_' + i);\n }\n\n function toggleRecurrenceEditor() {\n vm.showRecurrenceEditor = !vm.showRecurrenceEditor;\n vm.component.$hasCustomRepeat = vm.showRecurrenceEditor;\n }\n\n function toggleAttendeesEditor() {\n vm.showAttendeesEditor = !vm.showAttendeesEditor;\n }\n\n // Autocomplete cards for attendees\n function cardFilter($query) {\n AddressBook.$filterAll($query);\n return AddressBook.$cards;\n }\n\n function addAttendee(card) {\n if (angular.isString(card)) {\n // User pressed \"Enter\" in search field, adding a non-matching card\n if (card.isValidEmail()) {\n vm.component.addAttendee(new Card({ emails: [{ value: card }] }));\n vm.searchText = '';\n }\n }\n else {\n vm.component.addAttendee(card);\n }\n }\n\n function save(form) {\n if (form.$valid) {\n vm.component.$save()\n .then(function(data) {\n $rootScope.$broadcast('calendars:list');\n $mdDialog.hide();\n Alarm.getAlarms();\n }, function(data, status) {\n $log.debug('failed');\n });\n }\n }\n\n function cancel() {\n vm.component.$reset();\n if (vm.component.isNew) {\n // Cancelling the creation of a component\n vm.component = null;\n }\n $mdDialog.hide();\n }\n\n function getDays() {\n var days = [];\n\n if (vm.component.start && vm.component.end)\n days = vm.component.start.daysUpTo(vm.component.end);\n\n return _.map(days, function(date) {\n return { stringWithSeparator: date.stringWithSeparator(),\n getDayString: date.getDayString() };\n });\n }\n\n function getHours() {\n var hours = [];\n for (var i = 0; i <= 23; i++) {\n //hours.push(Component.timeFormat.formatTime(i, 0));\n hours.push(i.toString());\n }\n return hours;\n }\n }\n\n angular\n .module('SOGo.SchedulerUI')\n .controller('ComponentController', ComponentController)\n .controller('ComponentEditorController', ComponentEditorController);\n})();\n","/* -*- Mode: javascript; indent-tabs-mode: nil; c-basic-offset: 2 -*- */\n\n(function() {\n 'use strict';\n\n /*\n * sgCalendarDayBlock - An event block to be displayed in a week\n * @memberof SOGo.Common\n * @restrict element\n * @param {object} sgBlock - the event block definition\n * @param {function} sgClick - the function to call when clicking on a block.\n * Two variables are available: clickEvent (the event that triggered the mouse click),\n * and clickComponent (a Component object)\n *\n * @example:\n\n \n */\n function sgCalendarDayBlock() {\n return {\n restrict: 'E',\n scope: {\n block: '=sgBlock',\n clickBlock: '&sgClick'\n },\n replace: true,\n template: [\n '
',\n '
',\n '
',\n '
',\n '
{{ block.component.c_title }}',\n ' ',\n // Component has an alarm\n ' ',\n // Component is confidential\n ' ',\n // Component is private\n ' ',\n '
',\n '
',\n '
',\n '
',\n '
'\n ].join(''),\n link: link\n };\n\n function link(scope, iElement, attrs) {\n // Compute overlapping (5%)\n var pc = 100 / scope.block.siblings,\n left = scope.block.position * pc,\n right = 100 - (scope.block.position + 1) * pc;\n\n if (pc < 100) {\n if (left > 0)\n left -= 5;\n if (right > 0)\n right -= 5;\n }\n\n // Set position\n iElement.css('left', left + '%');\n iElement.css('right', right + '%');\n iElement.addClass('starts' + scope.block.start);\n iElement.addClass('lasts' + scope.block.length);\n iElement.addClass('bg-folder' + scope.block.component.c_folder);\n }\n }\n\n angular\n .module('SOGo.SchedulerUI')\n .directive('sgCalendarDayBlock', sgCalendarDayBlock);\n})();\n","/* -*- Mode: javascript; indent-tabs-mode: nil; c-basic-offset: 2 -*- */\n\n(function() {\n 'use strict';\n\n /*\n * sgCalendarDayTable - Build list of blocks for a specific day\n * @memberof SOGo.Common\n * @restrict element\n * @param {object} sgBlocks - the events blocks definitions for the current view\n * @param {string} sgDay - the day of the events to display\n * @param {function} sgClick - the function to call when clicking on a block.\n * Two variables are available: event (the event that triggered the mouse click),\n * and component (a Component object)\n *\n * @example:\n\n \n */\n function sgCalendarDayTable() {\n return {\n restrict: 'E',\n scope: {\n blocks: '=sgBlocks',\n day: '@sgDay',\n clickBlock: '&sgClick'\n },\n template: [\n ''\n ].join('')\n };\n }\n\n angular\n .module('SOGo.SchedulerUI')\n .directive('sgCalendarDayTable', sgCalendarDayTable);\n})();\n","/* -*- Mode: javascript; indent-tabs-mode: nil; c-basic-offset: 2 -*- */\n\n(function() {\n 'use strict';\n\n /*\n * sgCalendarMonthDay - Build list of blocks for a specific day in a month\n * @memberof SOGo.Common\n * @restrict element\n * @param {object} sgBlocks - the events blocks definitions for the current view\n * @param {string} sgDay - the day of the events to display\n * @ngInject\n * @example:\n\n \n */\n function sgCalendarMonthDay() {\n return {\n restrict: 'E',\n scope: {\n blocks: '=sgBlocks',\n day: '@sgDay',\n clickBlock: '&sgClick'\n },\n template: [\n ''\n ].join('')\n };\n }\n\n angular\n .module('SOGo.SchedulerUI')\n .directive('sgCalendarMonthDay', sgCalendarMonthDay);\n})();\n","/* -*- Mode: javascript; indent-tabs-mode: nil; c-basic-offset: 2 -*- */\n\n(function() {\n 'use strict';\n\n /*\n * sgCalendarMonthEvent - An event block to be displayed in a month\n * @memberof SOGo.Common\n * @restrict element\n * @param {object} sgBlock - the event block definition\n * @ngInject\n * @example:\n\n \n */\n function sgCalendarMonthEvent() {\n return {\n restrict: 'E',\n scope: {\n block: '=sgBlock',\n clickBlock: '&sgClick'\n },\n replace: true,\n template: [\n '
',\n ' {{ block.starthour }} - ',\n ' {{ block.component.c_title }}',\n ' ',\n ' ',\n ' ',\n ' ',\n ' ',\n '
',\n '
',\n '
'\n ].join(''),\n link: link\n };\n\n function link(scope, iElement, attrs) {\n iElement.addClass('bg-folder' + scope.block.component.c_folder);\n }\n }\n\n angular\n .module('SOGo.SchedulerUI')\n .directive('sgCalendarMonthEvent', sgCalendarMonthEvent);\n})();\n"]} \ No newline at end of file diff --git a/UI/WebServerResources/js/Scheduler.services.js b/UI/WebServerResources/js/Scheduler.services.js index f0c8ac161..d514697de 100644 --- a/UI/WebServerResources/js/Scheduler.services.js +++ b/UI/WebServerResources/js/Scheduler.services.js @@ -1,2 +1,2 @@ -!function(){"use strict";function Calendar(futureCalendarData){if(this.init(futureCalendarData),this.name&&!this.id){var newCalendarData=Calendar.$$resource.create("createFolder",this.name);angular.extend(this,newCalendarData)}this.id&&(this.$acl=new Calendar.$$Acl("Calendar/"+this.id))}Calendar.$factory=["$q","$timeout","$log","sgSettings","Resource","Component","Acl",function($q,$timeout,$log,Settings,Resource,Component,Acl){return angular.extend(Calendar,{$q:$q,$timeout:$timeout,$log:$log,$$resource:new Resource(Settings.activeUser("folderURL")+"Calendar",Settings.activeUser()),$Component:Component,$$Acl:Acl,activeUser:Settings.activeUser()}),Calendar}];try{angular.module("SOGo.SchedulerUI")}catch(e){angular.module("SOGo.SchedulerUI",["SOGo.Common"])}angular.module("SOGo.SchedulerUI").factory("Calendar",Calendar.$factory),Calendar.$add=function(calendar){var list,sibling,i;list=calendar.isWebCalendar?this.$webcalendars:calendar.isSubscription?this.$subscriptions:this.$calendars,sibling=_.find(list,function(o){return"personal"!=o.id&&1===o.name.localeCompare(calendar.name)}),i=sibling?_.indexOf(_.pluck(list,"id"),sibling.id):1,list.splice(i,0,calendar)},Calendar.$findAll=function(data){var _this=this;return data&&(this.$calendars=[],this.$subscriptions=[],this.$webcalendars=[],angular.forEach(data,function(o,i){var calendar=new Calendar(o);calendar.isWebCalendar?_this.$webcalendars.push(calendar):calendar.isSubscription?_this.$subscriptions.push(calendar):_this.$calendars.push(calendar)})),this.$calendars},Calendar.$get=function(id){var calendar;return calendar=_.find(Calendar.$calendars,function(o){return o.id==id}),calendar||(calendar=_.find(Calendar.$subscriptions,function(o){return o.id==id})),calendar||(calendar=_.find(Calendar.$webcalendars,function(o){return o.id==id})),calendar},Calendar.$subscribe=function(uid,path){var _this=this;return Calendar.$$resource.userResource(uid).fetch(path,"subscribe").then(function(calendarData){var calendar=new Calendar(calendarData);return _.find(_this.$subscriptions,function(o){return o.id==calendarData.id})||Calendar.$add(calendar),calendar})},Calendar.$addWebCalendar=function(url){var _this=this,d=Calendar.$q.defer();return _.find(_this.$webcalendars,function(o){return o.urls.webCalendarURL==url})?d.reject():Calendar.$$resource.post(null,"addWebCalendar",{url:url}).then(function(calendarData){angular.extend(calendarData,{isWebCalendar:!0,isEditable:!0,isRemote:!1,owner:Calendar.activeUser.login,urls:{webCalendarURL:url}});var calendar=new Calendar(calendarData);Calendar.$add(calendar),Calendar.$$resource.fetch(calendar.id,"reload").then(function(data){Calendar.$log.debug(JSON.stringify(data,void 0,2))}),d.resolve()},function(){d.reject()}),d.promise},Calendar.prototype.init=function(data){angular.extend(this,data),this.isOwned=Calendar.activeUser.isSuperUser||this.owner==Calendar.activeUser.login,this.isSubscription=!this.isRemote&&this.owner!=Calendar.activeUser.login},Calendar.prototype.getClassName=function(base){return angular.isUndefined(base)&&(base="fg"),base+"-folder"+this.id},Calendar.prototype.$rename=function(name){var i=_.indexOf(_.pluck(Calendar.$calendars,"id"),this.id);return this.name=name,Calendar.$calendars.splice(i,1),Calendar.$add(this),this.$save()},Calendar.prototype.$delete=function(){var list,promise,_this=this,d=Calendar.$q.defer();return this.isSubscription?(promise=Calendar.$$resource.fetch(this.id,"unsubscribe"),list=Calendar.$subscriptions):(promise=Calendar.$$resource.remove(this.id),list=this.isWebCalendar?Calendar.$webcalendars:Calendar.$calendars),promise.then(function(){var i=_.indexOf(_.pluck(list,"id"),_this.id);list.splice(i,1),d.resolve()},function(data,status){d.reject(data)}),d.promise},Calendar.$deleteComponents=function(components){var calendars={},_this=this;_.forEach(components,function(component){angular.isDefined(calendars[component.c_folder])||(calendars[component.c_folder]=[]),calendars[component.c_folder].push(component.c_name)}),_.forEach(calendars,function(uids,c_folder){Calendar.$$resource.post(c_folder,"batchDelete",{uids:uids})}),_this.$Component.$events=_.difference(_this.$Component.$events,components),_this.$Component.$tasks=_.difference(_this.$Component.$tasks,components)},Calendar.prototype.$save=function(){return Calendar.$$resource.save(this.id,this.$omit()).then(function(data){return data})},Calendar.prototype.$setActivation=function(){return Calendar.$$resource.fetch(this.id,(this.active?"":"de")+"activateFolder")},Calendar.prototype.$getComponent=function(componentId,recurrenceId){return Calendar.$Component.$find(this.id,componentId,recurrenceId)},Calendar.prototype.$omit=function(){var calendar={};return angular.forEach(this,function(value,key){"constructor"!=key&&"$"!=key[0]&&(calendar[key]=value)}),calendar}}(),function(){"use strict";function Component(futureComponentData){if("function"!=typeof futureComponentData.then){if(this.init(futureComponentData),this.pid&&!this.id){var newComponentData=Component.$$resource.newguid(this.pid);this.$unwrap(newComponentData),this.isNew=!0}}else this.$unwrap(futureComponentData)}Component.$factory=["$q","$timeout","$log","sgSettings","Preferences","Gravatar","Resource",function($q,$timeout,$log,Settings,Preferences,Gravatar,Resource){return angular.extend(Component,{$q:$q,$timeout:$timeout,$log:$log,$Preferences:Preferences,$gravatar:Gravatar,$$resource:new Resource(Settings.baseURL(),Settings.activeUser()),timeFormat:"%H:%M",$query:{value:"",search:"title_Category_Location"},$queryEvents:{sort:"start",asc:1,filterpopup:"view_next7"},$queryTasks:{sort:"status",asc:1,filterpopup:"view_incomplete"}}),Preferences.ready().then(function(){Preferences.settings.Calendar.EventsFilterState&&(Component.$queryEvents.filterpopup=Preferences.settings.Calendar.EventsFilterState),Preferences.settings.Calendar.TasksFilterState&&(Component.$queryTasks.filterpopup=Preferences.settings.Calendar.TasksFilterState),Preferences.settings.Calendar.EventsSortingState&&(Component.$queryEvents.sort=Preferences.settings.Calendar.EventsSortingState[0],Component.$queryEvents.asc=parseInt(Preferences.settings.Calendar.EventsSortingState[1])),Preferences.settings.Calendar.TasksSortingState&&(Component.$queryTasks.sort=Preferences.settings.Calendar.TasksSortingState[0],Component.$queryTasks.asc=parseInt(Preferences.settings.Calendar.TasksSortingState[1])),Component.$queryTasks.show_completed=parseInt(Preferences.settings.ShowCompletedTasks),Component.$categories=Preferences.defaults.SOGoCalendarCategoriesColors,Preferences.defaults.SOGoTimeFormat&&(Component.timeFormat=Preferences.defaults.SOGoTimeFormat)}),Component}];try{angular.module("SOGo.SchedulerUI")}catch(e){angular.module("SOGo.SchedulerUI",["SOGo.Common"])}angular.module("SOGo.SchedulerUI").factory("Component",Component.$factory),Component.$selectedCount=function(){var count;return count=0,Component.$events&&(count=_.filter(Component.$events,function(event){return event.selected}).length),Component.$tasks&&(count=_.filter(Component.$tasks,function(event){return event.selected}).length),count},Component.$filter=function(type,options){var _this=this,now=new Date,day=now.getDate(),month=now.getMonth()+1,year=now.getFullYear(),queryKey="$query"+type.capitalize(),params={day:""+year+(10>month?"0":"")+month+(10>day?"0":"")+day};return this.$Preferences.ready().then(function(){var futureComponentData,otherType,dirty=!1;return angular.extend(_this.$query,params),options&&_.each(_.keys(options),function(key){dirty|=_this.$query[key]&&options[key]!=Component.$query[key],"reload"==key&&options[key]?dirty=!0:angular.isDefined(_this.$query[key])?_this.$query[key]=options[key]:_this[queryKey][key]=options[key]}),futureComponentData=_this.$$resource.fetch(null,type+"list",angular.extend(_this[queryKey],_this.$query)),otherType="tasks"==type?"$events":"$tasks",dirty&&(delete Component[otherType],Component.$log.debug("force reload of "+otherType)),_this.$unwrapCollection(type,futureComponentData)})},Component.$find=function(calendarId,componentId,occurrenceId){var futureComponentData,path=[calendarId,componentId];return occurrenceId&&path.push(occurrenceId),futureComponentData=this.$$resource.fetch(path.join("/"),"view"),new Component(futureComponentData)},Component.filterCategories=function(query){var re=new RegExp(query,"i");return _.filter(_.keys(Component.$categories),function(category){return-1!=category.search(re)})},Component.saveSelectedList=function(componentType){return this.$$resource.post(null,"saveSelectedList",{list:componentType+"ListView"})},Component.$eventsBlocksForView=function(view,date){var viewAction,startDate,endDate;return"day"==view?(viewAction="dayView",startDate=endDate=date):"week"==view?(viewAction="weekView",startDate=date.beginOfWeek(),endDate=new Date,endDate.setTime(startDate.getTime()),endDate.addDays(6)):"month"==view&&(viewAction="monthView",startDate=date,startDate.setDate(1),startDate=startDate.beginOfWeek(),endDate=new Date,endDate.setTime(startDate.getTime()),endDate.setMonth(endDate.getMonth()+1),endDate.addDays(-1),endDate=endDate.endOfWeek()),this.$eventsBlocks(viewAction,startDate,endDate)},Component.$eventsBlocks=function(view,startDate,endDate){var params,futureComponentData,i,deferred=Component.$q.defer();return params={view:view.toLowerCase(),sd:startDate.getDayString(),ed:endDate.getDayString()},Component.$log.debug("eventsblocks "+JSON.stringify(params,void 0,2)),futureComponentData=this.$$resource.fetch(null,"eventsblocks",params),futureComponentData.then(function(data){Component.$timeout(function(){var components=[],blocks={};for(_.reduce(data.events,function(objects,eventData,i){var componentData=_.object(data.eventsFields,eventData),start=new Date(1e3*componentData.c_startdate);return componentData.hour=start.getHourString(),objects.push(new Component(componentData)),objects},components),_.each(_.flatten(data.blocks),function(block){block.component=components[block.nbr]}),i=0;i1||this.repeat.days&&this.repeat.days.length>0||this.repeat.monthdays&&this.repeat.monthdays.length>0||this.repeat.months&&this.repeat.months.length>0);return b},Component.prototype.isEditable=function(){return!this.occurrenceId&&!this.isReadOnly},Component.prototype.isEditableOccurrence=function(){return this.occurrenceId&&!this.isReadOnly},Component.prototype.isInvitation=function(){return!this.occurrenceId&&this.userHasRSVP},Component.prototype.isInvitationOccurrence=function(){return this.occurrenceId&&this.userHasRSVP},Component.prototype.isReadOnly=function(){return this.isReadOnly&&!this.userHasRSVP},Component.prototype.enablePercentComplete=function(){return this.component="not-specified"!=this.status&&"cancelled"!=this.status},Component.prototype.coversFreeBusy=function(day,hour,quarter){var b=angular.isDefined(this.freebusy[day])&&angular.isDefined(this.freebusy[day][hour])&&1==this.freebusy[day][hour][quarter];return b},Component.prototype.updateFreeBusyCoverage=function(){var _this=this,freebusy={};if(this.start&&this.end){var roundedStart=new Date(this.start.getTime()),roundedEnd=new Date(this.end.getTime()),startQuarter=parseInt(roundedStart.getMinutes()/15+.5),endQuarter=parseInt(roundedEnd.getMinutes()/15+.5);return roundedStart.setMinutes(15*startQuarter),roundedEnd.setMinutes(15*endQuarter),_.each(roundedStart.daysUpTo(roundedEnd),function(date,index){var hourKey,currentDay=date.getDate(),dayKey=date.getDayString();if(dayKey==_this.start.getDayString())for(hourKey=date.getHours().toString(),freebusy[dayKey]={},freebusy[dayKey][hourKey]=[];startQuarter>0;)freebusy[dayKey][hourKey].push(0),startQuarter--;else date=date.beginOfDay(),freebusy[dayKey]={};for(;date.getTime()<_this.end.getTime()&&date.getDate()==currentDay;)hourKey=date.getHours().toString(),angular.isUndefined(freebusy[dayKey][hourKey])&&(freebusy[dayKey][hourKey]=[]),freebusy[dayKey][hourKey].push(1),date.addMinutes(15)}),freebusy}},Component.prototype.updateFreeBusy=function(attendee){var params,url,days;attendee.uid&&(params={sday:this.start.getDayString(),eday:this.end.getDayString()},url=["..","..",attendee.uid,"freebusy.ifb"],days=_.map(this.start.daysUpTo(this.end),function(day){return day.getDayString()}),angular.isUndefined(attendee.freebusy)&&(attendee.freebusy={}),Component.$$resource.fetch(url.join("/"),"ajaxRead",params).then(function(data){_.each(days,function(day){var hour;angular.isUndefined(attendee.freebusy[day])&&(attendee.freebusy[day]={}),angular.isUndefined(data[day])&&(data[day]={});for(var i=0;23>=i;i++)hour=i.toString(),data[day][hour]?attendee.freebusy[day][hour]=[data[day][hour][0],data[day][hour][15],data[day][hour][30],data[day][hour][45]]:attendee.freebusy[day][hour]=[0,0,0,0]})}))},Component.prototype.getClassName=function(base){return angular.isUndefined(base)&&(base="fg"),base+"-folder"+(this.destinationCalendar||this.c_folder)},Component.prototype.addAttendee=function(card){var attendee;card&&(attendee={name:card.c_cn,email:card.$preferredEmail(),role:"req-participant",status:"needs-action",uid:card.c_uid},_.find(this.attendees,function(o){return o.email==attendee.email})||(attendee.image=Component.$gravatar(attendee.email,32),this.attendees?this.attendees.push(attendee):this.attendees=[attendee],this.updateFreeBusy(attendee)))},Component.prototype.hasAttendee=function(card){var attendee=_.find(this.attendees,function(attendee){return _.find(card.emails,function(email){return email.value==attendee.email})});return angular.isDefined(attendee)},Component.prototype.canRemindAttendeesByEmail=function(){return"email"==this.alarm.action&&!this.isReadOnly&&this.attendees&&this.attendees.length>0},Component.prototype.addAttachUrl=function(attachUrl){if(angular.isUndefined(this.attachUrls))this.attachUrls=[{value:attachUrl}];else{for(var i=0;i-1&&this.attachUrls.length>index&&this.attachUrls.splice(index,1)},Component.prototype.$reset=function(){var _this=this;angular.forEach(this,function(value,key){"constructor"!=key&&"$"!=key[0]&&delete _this[key]}),angular.extend(this,this.$shadowData),this.$shadowData=this.$omit(!0)},Component.prototype.$reply=function(){var data,_this=this,path=[this.pid,this.id];return this.occurrenceId&&path.push(this.occurrenceId),data={reply:this.reply,delegatedTo:this.delegatedTo,alarm:this.$hasAlarm?this.alarm:{}},Component.$$resource.save(path.join("/"),data,{action:"rsvpAppointment"}).then(function(data){return _this.$shadowData=_this.$omit(!0),data})},Component.prototype.$save=function(){var options,_this=this,path=[this.pid,this.id];return this.isNew&&(options={action:"saveAs"+this.type.capitalize()}),this.occurrenceId&&path.push(this.occurrenceId),Component.$$resource.save(path.join("/"),this.$omit(),options).then(function(data){return _this.$shadowData=_this.$omit(!0),data})},Component.prototype.$unwrap=function(futureComponentData){var _this=this;this.$futureComponentData=futureComponentData,this.$futureComponentData.then(function(data){_this.init(data),_this.$shadowData=_this.$omit()},function(data){angular.extend(_this,data),_this.isError=!0,Component.$log.error(_this.error)})},Component.prototype.$omit=function(){function formatTime(dateString){var date=new Date(dateString.substring(0,10)+" "+dateString.substring(11,16)),hours=date.getHours(),minutes=date.getMinutes();return 10>hours&&(hours="0"+hours),10>minutes&&(minutes="0"+minutes),hours+":"+minutes}var component={};return angular.forEach(this,function(value,key){"constructor"!=key&&"$"!=key[0]&&(component[key]=angular.copy(value))}),component.startTime=component.startDate?formatTime(component.startDate):"",component.endTime=component.endDate?formatTime(component.endDate):"",this.$hasCustomRepeat?"monthly"==this.repeat.frequency&&this.repeat.month.type&&"byday"==this.repeat.month.type||"yearly"==this.repeat.frequency&&this.repeat.year.byday?(delete component.repeat.monthdays,component.repeat.days=[{day:this.repeat.month.day,occurrence:this.repeat.month.occurrence.toString()}]):this.repeat.month.type&&delete component.repeat.days:this.repeat.frequency&&(component.repeat={frequency:this.repeat.frequency}),this.repeat.frequency?"until"==this.repeat.end&&this.repeat.until?component.repeat.until=this.repeat.until.stringWithSeparator("-"):"count"==this.repeat.end&&this.repeat.count?component.repeat.count=this.repeat.count:(delete component.repeat.until,delete component.repeat.count):delete component.repeat,this.$hasAlarm?!this.alarm.action||"email"!=this.alarm.action||this.attendees&&this.attendees.length>0||(this.alarm.attendees=0,this.alarm.organizer=1):component.alarm={},component}}(); +!function(){"use strict";function Calendar(futureCalendarData){if(this.init(futureCalendarData),this.name&&!this.id){var newCalendarData=Calendar.$$resource.create("createFolder",this.name);angular.extend(this,newCalendarData)}this.id&&(this.$acl=new Calendar.$$Acl("Calendar/"+this.id))}Calendar.$factory=["$q","$timeout","$log","sgSettings","Resource","Component","Acl",function($q,$timeout,$log,Settings,Resource,Component,Acl){return angular.extend(Calendar,{$q:$q,$timeout:$timeout,$log:$log,$$resource:new Resource(Settings.activeUser("folderURL")+"Calendar",Settings.activeUser()),$Component:Component,$$Acl:Acl,activeUser:Settings.activeUser()}),Calendar}];try{angular.module("SOGo.SchedulerUI")}catch(e){angular.module("SOGo.SchedulerUI",["SOGo.Common"])}angular.module("SOGo.SchedulerUI").factory("Calendar",Calendar.$factory),Calendar.$add=function(calendar){var list,sibling,i;list=calendar.isWebCalendar?this.$webcalendars:calendar.isSubscription?this.$subscriptions:this.$calendars,sibling=_.find(list,function(o){return"personal"!=o.id&&1===o.name.localeCompare(calendar.name)}),i=sibling?_.indexOf(_.pluck(list,"id"),sibling.id):1,list.splice(i,0,calendar)},Calendar.$findAll=function(data){var _this=this;return data&&(this.$calendars=[],this.$subscriptions=[],this.$webcalendars=[],angular.forEach(data,function(o,i){var calendar=new Calendar(o);calendar.isWebCalendar?_this.$webcalendars.push(calendar):calendar.isSubscription?_this.$subscriptions.push(calendar):_this.$calendars.push(calendar)})),_.union(this.$calendars,this.$subscriptions,this.$webcalendars)},Calendar.$get=function(id){var calendar;return calendar=_.find(Calendar.$calendars,function(o){return o.id==id}),calendar||(calendar=_.find(Calendar.$subscriptions,function(o){return o.id==id})),calendar||(calendar=_.find(Calendar.$webcalendars,function(o){return o.id==id})),calendar},Calendar.$subscribe=function(uid,path){var _this=this;return Calendar.$$resource.userResource(uid).fetch(path,"subscribe").then(function(calendarData){var calendar=new Calendar(calendarData);return _.find(_this.$subscriptions,function(o){return o.id==calendarData.id})||Calendar.$add(calendar),calendar})},Calendar.$addWebCalendar=function(url){var _this=this,d=Calendar.$q.defer();return _.find(_this.$webcalendars,function(o){return o.urls.webCalendarURL==url})?d.reject():Calendar.$$resource.post(null,"addWebCalendar",{url:url}).then(function(calendarData){angular.extend(calendarData,{isWebCalendar:!0,isEditable:!0,isRemote:!1,owner:Calendar.activeUser.login,urls:{webCalendarURL:url}});var calendar=new Calendar(calendarData);Calendar.$add(calendar),Calendar.$$resource.fetch(calendar.id,"reload").then(function(data){Calendar.$log.debug(JSON.stringify(data,void 0,2))}),d.resolve()},function(){d.reject()}),d.promise},Calendar.prototype.init=function(data){angular.extend(this,data),this.isOwned=Calendar.activeUser.isSuperUser||this.owner==Calendar.activeUser.login,this.isSubscription=!this.isRemote&&this.owner!=Calendar.activeUser.login},Calendar.prototype.getClassName=function(base){return angular.isUndefined(base)&&(base="fg"),base+"-folder"+this.id},Calendar.prototype.$rename=function(name){var i=_.indexOf(_.pluck(Calendar.$calendars,"id"),this.id);return this.name=name,Calendar.$calendars.splice(i,1),Calendar.$add(this),this.$save()},Calendar.prototype.$delete=function(){var list,promise,_this=this,d=Calendar.$q.defer();return this.isSubscription?(promise=Calendar.$$resource.fetch(this.id,"unsubscribe"),list=Calendar.$subscriptions):(promise=Calendar.$$resource.remove(this.id),list=this.isWebCalendar?Calendar.$webcalendars:Calendar.$calendars),promise.then(function(){var i=_.indexOf(_.pluck(list,"id"),_this.id);list.splice(i,1),d.resolve()},function(data,status){d.reject(data)}),d.promise},Calendar.$deleteComponents=function(components){var calendars={},_this=this;_.forEach(components,function(component){angular.isDefined(calendars[component.c_folder])||(calendars[component.c_folder]=[]),calendars[component.c_folder].push(component.c_name)}),_.forEach(calendars,function(uids,c_folder){Calendar.$$resource.post(c_folder,"batchDelete",{uids:uids})}),_this.$Component.$events=_.difference(_this.$Component.$events,components),_this.$Component.$tasks=_.difference(_this.$Component.$tasks,components)},Calendar.prototype.$save=function(){return Calendar.$$resource.save(this.id,this.$omit()).then(function(data){return data})},Calendar.prototype.$setActivation=function(){return Calendar.$$resource.fetch(this.id,(this.active?"":"de")+"activateFolder")},Calendar.prototype.$getComponent=function(componentId,recurrenceId){return Calendar.$Component.$find(this.id,componentId,recurrenceId)},Calendar.prototype.$omit=function(){var calendar={};return angular.forEach(this,function(value,key){"constructor"!=key&&"$"!=key[0]&&(calendar[key]=value)}),calendar}}(),function(){"use strict";function Component(futureComponentData){if("function"!=typeof futureComponentData.then){if(this.init(futureComponentData),this.pid&&!this.id){var newComponentData=Component.$$resource.newguid(this.pid);this.$unwrap(newComponentData),this.isNew=!0}}else this.$unwrap(futureComponentData)}Component.$factory=["$q","$timeout","$log","sgSettings","Preferences","Gravatar","Resource",function($q,$timeout,$log,Settings,Preferences,Gravatar,Resource){return angular.extend(Component,{$q:$q,$timeout:$timeout,$log:$log,$Preferences:Preferences,$gravatar:Gravatar,$$resource:new Resource(Settings.baseURL(),Settings.activeUser()),timeFormat:"%H:%M",$query:{value:"",search:"title_Category_Location"},$queryEvents:{sort:"start",asc:1,filterpopup:"view_next7"},$queryTasks:{sort:"status",asc:1,filterpopup:"view_incomplete"}}),Preferences.ready().then(function(){Preferences.settings.Calendar.EventsFilterState&&(Component.$queryEvents.filterpopup=Preferences.settings.Calendar.EventsFilterState),Preferences.settings.Calendar.TasksFilterState&&(Component.$queryTasks.filterpopup=Preferences.settings.Calendar.TasksFilterState),Preferences.settings.Calendar.EventsSortingState&&(Component.$queryEvents.sort=Preferences.settings.Calendar.EventsSortingState[0],Component.$queryEvents.asc=parseInt(Preferences.settings.Calendar.EventsSortingState[1])),Preferences.settings.Calendar.TasksSortingState&&(Component.$queryTasks.sort=Preferences.settings.Calendar.TasksSortingState[0],Component.$queryTasks.asc=parseInt(Preferences.settings.Calendar.TasksSortingState[1])),Component.$queryTasks.show_completed=parseInt(Preferences.settings.ShowCompletedTasks),Component.$categories=Preferences.defaults.SOGoCalendarCategoriesColors,Preferences.defaults.SOGoTimeFormat&&(Component.timeFormat=Preferences.defaults.SOGoTimeFormat)}),Component}];try{angular.module("SOGo.SchedulerUI")}catch(e){angular.module("SOGo.SchedulerUI",["SOGo.Common"])}angular.module("SOGo.SchedulerUI").factory("Component",Component.$factory),Component.$selectedCount=function(){var count;return count=0,Component.$events&&(count=_.filter(Component.$events,function(event){return event.selected}).length),Component.$tasks&&(count=_.filter(Component.$tasks,function(event){return event.selected}).length),count},Component.$filter=function(type,options){var _this=this,now=new Date,day=now.getDate(),month=now.getMonth()+1,year=now.getFullYear(),queryKey="$query"+type.capitalize(),params={day:""+year+(10>month?"0":"")+month+(10>day?"0":"")+day};return this.$Preferences.ready().then(function(){var futureComponentData,otherType,dirty=!1;return angular.extend(_this.$query,params),options&&_.each(_.keys(options),function(key){dirty|=_this.$query[key]&&options[key]!=Component.$query[key],"reload"==key&&options[key]?dirty=!0:angular.isDefined(_this.$query[key])?_this.$query[key]=options[key]:_this[queryKey][key]=options[key]}),futureComponentData=_this.$$resource.fetch(null,type+"list",angular.extend(_this[queryKey],_this.$query)),otherType="tasks"==type?"$events":"$tasks",dirty&&(delete Component[otherType],Component.$log.debug("force reload of "+otherType)),_this.$unwrapCollection(type,futureComponentData)})},Component.$find=function(calendarId,componentId,occurrenceId){var futureComponentData,path=[calendarId,componentId];return occurrenceId&&path.push(occurrenceId),futureComponentData=this.$$resource.fetch(path.join("/"),"view"),new Component(futureComponentData)},Component.filterCategories=function(query){var re=new RegExp(query,"i");return _.filter(_.keys(Component.$categories),function(category){return-1!=category.search(re)})},Component.saveSelectedList=function(componentType){return this.$$resource.post(null,"saveSelectedList",{list:componentType+"ListView"})},Component.$eventsBlocksForView=function(view,date){var viewAction,startDate,endDate;return"day"==view?(viewAction="dayView",startDate=endDate=date):"week"==view?(viewAction="weekView",startDate=date.beginOfWeek(),endDate=new Date,endDate.setTime(startDate.getTime()),endDate.addDays(6)):"month"==view&&(viewAction="monthView",startDate=date,startDate.setDate(1),startDate=startDate.beginOfWeek(),endDate=new Date,endDate.setTime(startDate.getTime()),endDate.setMonth(endDate.getMonth()+1),endDate.addDays(-1),endDate=endDate.endOfWeek()),this.$eventsBlocks(viewAction,startDate,endDate)},Component.$eventsBlocks=function(view,startDate,endDate){var params,futureComponentData,i,deferred=Component.$q.defer();return params={view:view.toLowerCase(),sd:startDate.getDayString(),ed:endDate.getDayString()},Component.$log.debug("eventsblocks "+JSON.stringify(params,void 0,2)),futureComponentData=this.$$resource.fetch(null,"eventsblocks",params),futureComponentData.then(function(data){Component.$timeout(function(){var components=[],blocks={};for(_.reduce(data.events,function(objects,eventData,i){var componentData=_.object(data.eventsFields,eventData),start=new Date(1e3*componentData.c_startdate);return componentData.hour=start.getHourString(),objects.push(new Component(componentData)),objects},components),_.each(_.flatten(data.blocks),function(block){block.component=components[block.nbr]}),i=0;i1||this.repeat.days&&this.repeat.days.length>0||this.repeat.monthdays&&this.repeat.monthdays.length>0||this.repeat.months&&this.repeat.months.length>0);return b},Component.prototype.isEditable=function(){return!this.occurrenceId&&!this.isReadOnly},Component.prototype.isEditableOccurrence=function(){return this.occurrenceId&&!this.isReadOnly},Component.prototype.isInvitation=function(){return!this.occurrenceId&&this.userHasRSVP},Component.prototype.isInvitationOccurrence=function(){return this.occurrenceId&&this.userHasRSVP},Component.prototype.isReadOnly=function(){return this.isReadOnly&&!this.userHasRSVP},Component.prototype.enablePercentComplete=function(){return this.component="not-specified"!=this.status&&"cancelled"!=this.status},Component.prototype.coversFreeBusy=function(day,hour,quarter){var b=angular.isDefined(this.freebusy[day])&&angular.isDefined(this.freebusy[day][hour])&&1==this.freebusy[day][hour][quarter];return b},Component.prototype.updateFreeBusyCoverage=function(){var _this=this,freebusy={};if(this.start&&this.end){var roundedStart=new Date(this.start.getTime()),roundedEnd=new Date(this.end.getTime()),startQuarter=parseInt(roundedStart.getMinutes()/15+.5),endQuarter=parseInt(roundedEnd.getMinutes()/15+.5);return roundedStart.setMinutes(15*startQuarter),roundedEnd.setMinutes(15*endQuarter),_.each(roundedStart.daysUpTo(roundedEnd),function(date,index){var hourKey,currentDay=date.getDate(),dayKey=date.getDayString();if(dayKey==_this.start.getDayString())for(hourKey=date.getHours().toString(),freebusy[dayKey]={},freebusy[dayKey][hourKey]=[];startQuarter>0;)freebusy[dayKey][hourKey].push(0),startQuarter--;else date=date.beginOfDay(),freebusy[dayKey]={};for(;date.getTime()<_this.end.getTime()&&date.getDate()==currentDay;)hourKey=date.getHours().toString(),angular.isUndefined(freebusy[dayKey][hourKey])&&(freebusy[dayKey][hourKey]=[]),freebusy[dayKey][hourKey].push(1),date.addMinutes(15)}),freebusy}},Component.prototype.updateFreeBusy=function(attendee){var params,url,days;attendee.uid&&(params={sday:this.start.getDayString(),eday:this.end.getDayString()},url=["..","..",attendee.uid,"freebusy.ifb"],days=_.map(this.start.daysUpTo(this.end),function(day){return day.getDayString()}),angular.isUndefined(attendee.freebusy)&&(attendee.freebusy={}),Component.$$resource.fetch(url.join("/"),"ajaxRead",params).then(function(data){_.each(days,function(day){var hour;angular.isUndefined(attendee.freebusy[day])&&(attendee.freebusy[day]={}),angular.isUndefined(data[day])&&(data[day]={});for(var i=0;23>=i;i++)hour=i.toString(),data[day][hour]?attendee.freebusy[day][hour]=[data[day][hour][0],data[day][hour][15],data[day][hour][30],data[day][hour][45]]:attendee.freebusy[day][hour]=[0,0,0,0]})}))},Component.prototype.getClassName=function(base){return angular.isUndefined(base)&&(base="fg"),base+"-folder"+(this.destinationCalendar||this.c_folder)},Component.prototype.addAttendee=function(card){var attendee;card&&(attendee={name:card.c_cn,email:card.$preferredEmail(),role:"req-participant",status:"needs-action",uid:card.c_uid},_.find(this.attendees,function(o){return o.email==attendee.email})||(attendee.image=Component.$gravatar(attendee.email,32),this.attendees?this.attendees.push(attendee):this.attendees=[attendee],this.updateFreeBusy(attendee)))},Component.prototype.hasAttendee=function(card){var attendee=_.find(this.attendees,function(attendee){return _.find(card.emails,function(email){return email.value==attendee.email})});return angular.isDefined(attendee)},Component.prototype.canRemindAttendeesByEmail=function(){return"email"==this.alarm.action&&!this.isReadOnly&&this.attendees&&this.attendees.length>0},Component.prototype.addAttachUrl=function(attachUrl){if(angular.isUndefined(this.attachUrls))this.attachUrls=[{value:attachUrl}];else{for(var i=0;i-1&&this.attachUrls.length>index&&this.attachUrls.splice(index,1)},Component.prototype.$reset=function(){var _this=this;angular.forEach(this,function(value,key){"constructor"!=key&&"$"!=key[0]&&delete _this[key]}),angular.extend(this,this.$shadowData),this.$shadowData=this.$omit(!0)},Component.prototype.$reply=function(){var data,_this=this,path=[this.pid,this.id];return this.occurrenceId&&path.push(this.occurrenceId),data={reply:this.reply,delegatedTo:this.delegatedTo,alarm:this.$hasAlarm?this.alarm:{}},Component.$$resource.save(path.join("/"),data,{action:"rsvpAppointment"}).then(function(data){return _this.$shadowData=_this.$omit(!0),data})},Component.prototype.$save=function(){var options,_this=this,path=[this.pid,this.id];return this.isNew&&(options={action:"saveAs"+this.type.capitalize()}),this.occurrenceId&&path.push(this.occurrenceId),Component.$$resource.save(path.join("/"),this.$omit(),options).then(function(data){return _this.$shadowData=_this.$omit(!0),data})},Component.prototype.$unwrap=function(futureComponentData){var _this=this;this.$futureComponentData=futureComponentData,this.$futureComponentData.then(function(data){_this.init(data),_this.$shadowData=_this.$omit()},function(data){angular.extend(_this,data),_this.isError=!0,Component.$log.error(_this.error)})},Component.prototype.$omit=function(){function formatTime(dateString){var date=new Date(dateString.substring(0,10)+" "+dateString.substring(11,16)),hours=date.getHours(),minutes=date.getMinutes();return 10>hours&&(hours="0"+hours),10>minutes&&(minutes="0"+minutes),hours+":"+minutes}var component={};return angular.forEach(this,function(value,key){"constructor"!=key&&"$"!=key[0]&&(component[key]=angular.copy(value))}),component.startTime=component.startDate?formatTime(component.startDate):"",component.endTime=component.endDate?formatTime(component.endDate):"",this.$hasCustomRepeat?"monthly"==this.repeat.frequency&&this.repeat.month.type&&"byday"==this.repeat.month.type||"yearly"==this.repeat.frequency&&this.repeat.year.byday?(delete component.repeat.monthdays,component.repeat.days=[{day:this.repeat.month.day,occurrence:this.repeat.month.occurrence.toString()}]):this.repeat.month.type&&delete component.repeat.days:this.repeat.frequency&&(component.repeat={frequency:this.repeat.frequency}),this.repeat.frequency?"until"==this.repeat.end&&this.repeat.until?component.repeat.until=this.repeat.until.stringWithSeparator("-"):"count"==this.repeat.end&&this.repeat.count?component.repeat.count=this.repeat.count:(delete component.repeat.until,delete component.repeat.count):delete component.repeat,this.$hasAlarm?!this.alarm.action||"email"!=this.alarm.action||this.attendees&&this.attendees.length>0||(this.alarm.attendees=0,this.alarm.organizer=1):component.alarm={},component}}(); //# sourceMappingURL=Scheduler.services.js.map \ No newline at end of file diff --git a/UI/WebServerResources/js/Scheduler.services.js.map b/UI/WebServerResources/js/Scheduler.services.js.map index f31b81574..85e5eff93 100644 --- a/UI/WebServerResources/js/Scheduler.services.js.map +++ b/UI/WebServerResources/js/Scheduler.services.js.map @@ -1 +1 @@ -{"version":3,"file":"Scheduler.services.js","sources":["Scheduler/Calendar.service.js","Scheduler/Component.service.js"],"names":["Calendar","futureCalendarData","this","init","name","id","newCalendarData","$$resource","create","angular","extend","$acl","$$Acl","$factory","$q","$timeout","$log","Settings","Resource","Component","Acl","activeUser","$Component","module","e","factory","$add","calendar","list","sibling","i","isWebCalendar","$webcalendars","isSubscription","$subscriptions","$calendars","_","find","o","localeCompare","indexOf","pluck","splice","$findAll","data","_this","forEach","push","$get","$subscribe","uid","path","userResource","fetch","then","calendarData","$addWebCalendar","url","d","defer","urls","webCalendarURL","reject","post","isEditable","isRemote","owner","login","debug","JSON","stringify","undefined","resolve","promise","prototype","isOwned","isSuperUser","getClassName","base","isUndefined","$rename","$save","$delete","remove","status","$deleteComponents","components","calendars","component","isDefined","c_folder","c_name","uids","$events","difference","$tasks","save","$omit","$setActivation","active","$getComponent","componentId","recurrenceId","$find","value","key","futureComponentData","pid","newComponentData","newguid","$unwrap","isNew","Preferences","Gravatar","$Preferences","$gravatar","baseURL","timeFormat","$query","search","$queryEvents","sort","asc","filterpopup","$queryTasks","ready","settings","EventsFilterState","TasksFilterState","EventsSortingState","parseInt","TasksSortingState","show_completed","ShowCompletedTasks","$categories","defaults","SOGoCalendarCategoriesColors","SOGoTimeFormat","$selectedCount","count","filter","event","selected","length","$filter","type","options","now","Date","day","getDate","month","getMonth","year","getFullYear","queryKey","capitalize","params","otherType","dirty","each","keys","$unwrapCollection","calendarId","occurrenceId","join","filterCategories","query","re","RegExp","category","saveSelectedList","componentType","$eventsBlocksForView","view","date","viewAction","startDate","endDate","beginOfWeek","setTime","getTime","addDays","setDate","setMonth","endOfWeek","$eventsBlocks","deferred","toLowerCase","sd","getDayString","ed","blocks","reduce","events","objects","eventData","componentData","object","eventsFields","start","c_startdate","hour","getHourString","flatten","block","nbr","$blocks","fields","invoke","categories","repeat","alarm","action","quantity","unit","reference","relation","classification","substring","end","dueDate","due","$isRecurrent","days","byDayMask","occurrence","frequency","byday","toString","interval","monthdays","months","until","asDate","$hasCustomRepeat","hasCustomRepeat","units","M","H","D","W","match","exec","SOGoCalendarDefaultReminder","$hasAlarm","destinationCalendar","organizer","email","$image","freebusy","updateFreeBusyCoverage","attendees","attendee","image","updateFreeBusy","b","isReadOnly","isEditableOccurrence","isInvitation","userHasRSVP","isInvitationOccurrence","enablePercentComplete","coversFreeBusy","quarter","roundedStart","roundedEnd","startQuarter","getMinutes","endQuarter","setMinutes","daysUpTo","index","hourKey","currentDay","dayKey","getHours","beginOfDay","addMinutes","sday","eday","map","addAttendee","card","c_cn","$preferredEmail","role","c_uid","hasAttendee","emails","canRemindAttendeesByEmail","addAttachUrl","attachUrl","attachUrls","deleteAttachUrl","$reset","$shadowData","$reply","reply","delegatedTo","$futureComponentData","isError","error","formatTime","dateString","hours","minutes","copy","startTime","endTime","stringWithSeparator"],"mappings":"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","sourcesContent":["/* -*- Mode: javascript; indent-tabs-mode: nil; c-basic-offset: 2 -*- */\n\n(function() {\n 'use strict';\n\n /**\n * @name Calendar\n * @constructor\n * @param {object} futureCalendarData - either an object literal or a promise\n */\n function Calendar(futureCalendarData) {\n // Data is immediately available\n this.init(futureCalendarData);\n if (this.name && !this.id) {\n // Create a new calendar on the server\n var newCalendarData = Calendar.$$resource.create('createFolder', this.name);\n angular.extend(this, newCalendarData);\n }\n if (this.id) {\n this.$acl = new Calendar.$$Acl('Calendar/' + this.id);\n }\n }\n\n /**\n * @memberof Calendar\n * @desc The factory we'll use to register with Angular\n * @returns the Calendar constructor\n */\n Calendar.$factory = ['$q', '$timeout', '$log', 'sgSettings', 'Resource', 'Component', 'Acl', function($q, $timeout, $log, Settings, Resource, Component, Acl) {\n angular.extend(Calendar, {\n $q: $q,\n $timeout: $timeout,\n $log: $log,\n $$resource: new Resource(Settings.activeUser('folderURL') + 'Calendar', Settings.activeUser()),\n $Component: Component,\n $$Acl: Acl,\n activeUser: Settings.activeUser()\n });\n\n return Calendar; // return constructor\n }];\n\n /**\n * @module SOGo.SchedulerUI\n * @desc Factory registration of Calendar in Angular module.\n */\n try {\n angular.module('SOGo.SchedulerUI');\n }\n catch(e) {\n angular.module('SOGo.SchedulerUI', ['SOGo.Common']);\n }\n angular.module('SOGo.SchedulerUI')\n .factory('Calendar', Calendar.$factory);\n\n /**\n * @memberof Calendar\n * @desc Add a new calendar to the static list of calendars\n * @param {Calendar} calendar - an Calendar object instance\n */\n Calendar.$add = function(calendar) {\n // Insert new calendar at proper index\n var list, sibling, i;\n\n if (calendar.isWebCalendar)\n list = this.$webcalendars;\n else if (calendar.isSubscription)\n list = this.$subscriptions;\n else\n list = this.$calendars;\n\n sibling = _.find(list, function(o) {\n return (o.id != 'personal' &&\n o.name.localeCompare(calendar.name) === 1);\n });\n i = sibling ? _.indexOf(_.pluck(list, 'id'), sibling.id) : 1;\n list.splice(i, 0, calendar);\n };\n\n /**\n * @memberof Calendar\n * @desc Set or get the list of calendars. Will instanciate a new Calendar object for each item.\n * @param {object[]} [data] - the metadata of the calendars\n * @returns the list of calendars\n */\n Calendar.$findAll = function(data) {\n var _this = this;\n if (data) {\n this.$calendars = [];\n this.$subscriptions = [];\n this.$webcalendars = [];\n // Instanciate Calendar objects\n angular.forEach(data, function(o, i) {\n var calendar = new Calendar(o);\n if (calendar.isWebCalendar)\n _this.$webcalendars.push(calendar);\n else if (calendar.isSubscription)\n _this.$subscriptions.push(calendar);\n else\n _this.$calendars.push(calendar);\n });\n }\n return this.$calendars;\n };\n\n /**\n * @memberof Calendar\n * @desc Find a calendar among local instances (personal calendars, subscriptions and Web calendars).\n * @param {string} id - the calendar ID\n * @returns an object literal of the matching Calendar instance\n */\n Calendar.$get = function(id) {\n var calendar;\n\n calendar = _.find(Calendar.$calendars, function(o) { return o.id == id; });\n if (!calendar)\n calendar = _.find(Calendar.$subscriptions, function(o) { return o.id == id; });\n if (!calendar)\n calendar = _.find(Calendar.$webcalendars, function(o) { return o.id == id; });\n\n return calendar;\n };\n\n /**\n * @memberOf Calendar\n * @desc Subscribe to another user's calendar and add it to the list of calendars.\n * @param {string} uid - user id\n * @param {string} path - path of folder for specified user\n * @returns a promise of the HTTP query result\n */\n Calendar.$subscribe = function(uid, path) {\n var _this = this;\n return Calendar.$$resource.userResource(uid).fetch(path, 'subscribe').then(function(calendarData) {\n var calendar = new Calendar(calendarData);\n if (!_.find(_this.$subscriptions, function(o) {\n return o.id == calendarData.id;\n })) {\n Calendar.$add(calendar);\n }\n return calendar;\n });\n };\n\n /**\n * @memberOf Calendar\n * @desc Subscribe to a remote Web calendar\n * @param {string} url - URL of .ics file\n * @returns a promise of the HTTP query result\n */\n Calendar.$addWebCalendar = function(url) {\n var _this = this,\n d = Calendar.$q.defer();\n\n if (_.find(_this.$webcalendars, function(o) {\n return o.urls.webCalendarURL == url;\n })) {\n // Already subscribed\n d.reject();\n }\n else {\n Calendar.$$resource.post(null, 'addWebCalendar', { url: url }).then(function(calendarData) {\n angular.extend(calendarData, {\n isWebCalendar: true,\n isEditable: true,\n isRemote: false,\n owner: Calendar.activeUser.login,\n urls: { webCalendarURL: url }\n });\n var calendar = new Calendar(calendarData);\n Calendar.$add(calendar);\n Calendar.$$resource.fetch(calendar.id, 'reload').then(function(data) {\n // TODO: show a toast of the reload status\n Calendar.$log.debug(JSON.stringify(data, undefined, 2));\n });\n d.resolve();\n }, function() {\n d.reject();\n });\n }\n\n return d.promise;\n };\n\n /**\n * @function init\n * @memberof Calendar.prototype\n * @desc Extend instance with new data and compute additional attributes.\n * @param {object} data - attributes of calendar\n */\n Calendar.prototype.init = function(data) {\n angular.extend(this, data);\n // Add 'isOwned' and 'isSubscription' attributes based on active user (TODO: add it server-side?)\n this.isOwned = Calendar.activeUser.isSuperUser || this.owner == Calendar.activeUser.login;\n this.isSubscription = !this.isRemote && this.owner != Calendar.activeUser.login;\n };\n\n /**\n * @function getClassName\n * @memberof Calendar.prototype\n * @desc Return the calendar CSS class name based on its ID.\n * @returns a string representing the foreground CSS class name\n */\n Calendar.prototype.getClassName = function(base) {\n if (angular.isUndefined(base))\n base = 'fg';\n return base + '-folder' + this.id;\n };\n\n /**\n * @function $rename\n * @memberof Calendar.prototype\n * @desc Rename the calendar and keep the list sorted\n * @param {string} name - the new name\n * @returns a promise of the HTTP operation\n */\n Calendar.prototype.$rename = function(name) {\n var i = _.indexOf(_.pluck(Calendar.$calendars, 'id'), this.id);\n this.name = name;\n Calendar.$calendars.splice(i, 1);\n Calendar.$add(this);\n return this.$save();\n };\n\n /**\n * @function $delete\n * @memberof Calendar.prototype\n * @desc Delete the calendar from the server and the static list of calendars.\n * @returns a promise of the HTTP operation\n */\n Calendar.prototype.$delete = function() {\n var _this = this,\n d = Calendar.$q.defer(),\n list,\n promise;\n\n if (this.isSubscription) {\n promise = Calendar.$$resource.fetch(this.id, 'unsubscribe');\n list = Calendar.$subscriptions;\n }\n else {\n promise = Calendar.$$resource.remove(this.id);\n if (this.isWebCalendar)\n list = Calendar.$webcalendars;\n else\n list = Calendar.$calendars;\n }\n\n promise.then(function() {\n var i = _.indexOf(_.pluck(list, 'id'), _this.id);\n list.splice(i, 1);\n d.resolve();\n }, function(data, status) {\n d.reject(data);\n });\n return d.promise;\n };\n\n /**\n * @function $deleteComponents\n * @memberof Calendar\n * @desc Delete multiple components from calendar.\n * @return a promise of the HTTP operation\n */\n Calendar.$deleteComponents = function(components) {\n\n // We create a c_folder -> event hash\n var calendars = {}, _this = this;\n\n _.forEach(components, function(component) {\n if (!angular.isDefined(calendars[component.c_folder]))\n calendars[component.c_folder] = [];\n\n calendars[component.c_folder].push(component.c_name);\n });\n\n _.forEach(calendars, function(uids, c_folder) {\n Calendar.$$resource.post(c_folder, 'batchDelete', {uids: uids});\n });\n\n // We slice both arrays - might be useful if in the future, we can delete\n // events and tasks at the same time.\n _this.$Component.$events = _.difference(_this.$Component.$events, components);\n _this.$Component.$tasks = _.difference(_this.$Component.$tasks, components);\n };\n\n /**\n * @function $save\n * @memberof Calendar.prototype\n * @desc Save the calendar properties to the server.\n * @returns a promise of the HTTP operation\n */\n Calendar.prototype.$save = function() {\n return Calendar.$$resource.save(this.id, this.$omit()).then(function(data) {\n return data;\n });\n };\n\n /**\n * @function $setActivation\n * @memberof Calendar.prototype\n * @desc Either activate or deactivate the calendar.\n * @returns a promise of the HTTP operation\n */\n Calendar.prototype.$setActivation = function() {\n return Calendar.$$resource.fetch(this.id, (this.active?'':'de') + 'activateFolder');\n };\n\n /**\n * @function $getComponent\n * @memberof Calendar.prototype\n * @desc Fetch a component attributes from the server.\n * @returns a promise of the HTTP operation\n */\n Calendar.prototype.$getComponent = function(componentId, recurrenceId) {\n return Calendar.$Component.$find(this.id, componentId, recurrenceId);\n };\n\n /**\n * @function $omit\n * @memberof Calendar.prototype\n * @desc Return a sanitized object used to send to the server.\n * @return an object literal copy of the Calendar instance\n */\n Calendar.prototype.$omit = function() {\n var calendar = {};\n angular.forEach(this, function(value, key) {\n if (key != 'constructor' &&\n key[0] != '$') {\n calendar[key] = value;\n }\n });\n return calendar;\n };\n})();\n","/* -*- Mode: javascript; indent-tabs-mode: nil; c-basic-offset: 2 -*- */\n\n(function() {\n 'use strict';\n\n /**\n * @name Component\n * @constructor\n * @param {object} futureComponentData - either an object literal or a promise\n */\n function Component(futureComponentData) {\n // Data is immediately available\n if (typeof futureComponentData.then !== 'function') {\n this.init(futureComponentData);\n if (this.pid && !this.id) {\n // Prepare for the creation of a new component;\n // Get UID from the server.\n var newComponentData = Component.$$resource.newguid(this.pid);\n this.$unwrap(newComponentData);\n this.isNew = true;\n }\n }\n else {\n // The promise will be unwrapped first\n this.$unwrap(futureComponentData);\n }\n }\n\n /**\n * @memberof Component\n * @desc The factory we'll use to register with Angular\n * @returns the Component constructor\n */\n Component.$factory = ['$q', '$timeout', '$log', 'sgSettings', 'Preferences', 'Gravatar', 'Resource', function($q, $timeout, $log, Settings, Preferences, Gravatar, Resource) {\n angular.extend(Component, {\n $q: $q,\n $timeout: $timeout,\n $log: $log,\n $Preferences: Preferences,\n $gravatar: Gravatar,\n $$resource: new Resource(Settings.baseURL(), Settings.activeUser()),\n timeFormat: \"%H:%M\",\n // Filter parameters common to events and tasks\n $query: { value: '', search: 'title_Category_Location' },\n // Filter paramaters specific to events\n $queryEvents: { sort: 'start', asc: 1, filterpopup: 'view_next7' },\n // Filter parameters specific to tasks\n $queryTasks: { sort: 'status', asc: 1, filterpopup: 'view_incomplete' }\n });\n Preferences.ready().then(function() {\n // Initialize filter parameters from user's settings\n if (Preferences.settings.Calendar.EventsFilterState)\n Component.$queryEvents.filterpopup = Preferences.settings.Calendar.EventsFilterState;\n if (Preferences.settings.Calendar.TasksFilterState)\n Component.$queryTasks.filterpopup = Preferences.settings.Calendar.TasksFilterState;\n if (Preferences.settings.Calendar.EventsSortingState) {\n Component.$queryEvents.sort = Preferences.settings.Calendar.EventsSortingState[0];\n Component.$queryEvents.asc = parseInt(Preferences.settings.Calendar.EventsSortingState[1]);\n }\n if (Preferences.settings.Calendar.TasksSortingState) {\n Component.$queryTasks.sort = Preferences.settings.Calendar.TasksSortingState[0];\n Component.$queryTasks.asc = parseInt(Preferences.settings.Calendar.TasksSortingState[1]);\n }\n Component.$queryTasks.show_completed = parseInt(Preferences.settings.ShowCompletedTasks);\n // Initialize categories from user's defaults\n Component.$categories = Preferences.defaults.SOGoCalendarCategoriesColors;\n // Initialize time format from user's defaults\n if (Preferences.defaults.SOGoTimeFormat) {\n Component.timeFormat = Preferences.defaults.SOGoTimeFormat;\n }\n });\n\n return Component; // return constructor\n }];\n\n /**\n * @module SOGo.SchedulerUI\n * @desc Factory registration of Component in Angular module.\n */\n try {\n angular.module('SOGo.SchedulerUI');\n }\n catch(e) {\n angular.module('SOGo.SchedulerUI', ['SOGo.Common']);\n }\n angular.module('SOGo.SchedulerUI')\n .factory('Component', Component.$factory);\n\n /**\n * @function $selectedCount\n * @memberof Component\n * @desc Return the number of events or tasks selected by the user.\n * @returns the number of selected events or tasks\n */\n Component.$selectedCount = function() {\n var count;\n\n count = 0;\n if (Component.$events) {\n count = (_.filter(Component.$events, function(event) { return event.selected; })).length;\n }\n if (Component.$tasks) {\n count = (_.filter(Component.$tasks, function(event) { return event.selected; })).length;\n }\n return count;\n };\n\n /**\n * @function $filter\n * @memberof Component\n * @desc Search for components matching some criterias\n * @param {string} type - either 'events' or 'tasks'\n * @param {object} [options] - additional options to the query\n * @returns a collection of Components instances\n */\n Component.$filter = function(type, options) {\n var _this = this,\n now = new Date(),\n day = now.getDate(),\n month = now.getMonth() + 1,\n year = now.getFullYear(),\n queryKey = '$query' + type.capitalize(),\n params = {\n day: '' + year + (month < 10?'0':'') + month + (day < 10?'0':'') + day,\n };\n\n return this.$Preferences.ready().then(function() {\n var futureComponentData,\n dirty = false,\n otherType;\n\n angular.extend(_this.$query, params);\n\n if (options) {\n _.each(_.keys(options), function(key) {\n // Query parameters common to events and tasks are compared\n dirty |= (_this.$query[key] && options[key] != Component.$query[key]);\n if (key == 'reload' && options[key])\n dirty = true;\n // Update either the common parameters or the type-specific parameters\n else if (angular.isDefined(_this.$query[key]))\n _this.$query[key] = options[key];\n else\n _this[queryKey][key] = options[key];\n });\n }\n\n // Perform query with both common and type-specific parameters\n futureComponentData = _this.$$resource.fetch(null, type + 'list',\n angular.extend(_this[queryKey], _this.$query));\n\n // Invalidate cached results of other type if $query has changed\n otherType = (type == 'tasks')? '$events' : '$tasks';\n if (dirty) {\n delete Component[otherType];\n Component.$log.debug('force reload of ' + otherType);\n }\n\n return _this.$unwrapCollection(type, futureComponentData);\n });\n };\n\n /**\n * @function $find\n * @desc Fetch a component from a specific calendar.\n * @param {string} calendarId - the calendar ID\n * @param {string} componentId - the component ID\n * @param {string} [occurrenceId] - the component ID\n * @see {@link Calendar.$getComponent}\n */\n Component.$find = function(calendarId, componentId, occurrenceId) {\n var futureComponentData, path = [calendarId, componentId];\n\n if (occurrenceId)\n path.push(occurrenceId);\n\n futureComponentData = this.$$resource.fetch(path.join('/'), 'view');\n\n return new Component(futureComponentData);\n };\n\n /**\n * @function filterCategories\n * @desc Search for categories matching some criterias\n * @param {string} search - the search string to match\n * @returns a collection of strings\n */\n Component.filterCategories = function(query) {\n var re = new RegExp(query, 'i');\n return _.filter(_.keys(Component.$categories), function(category) {\n return category.search(re) != -1;\n });\n };\n\n /**\n * @function saveSelectedList\n * @desc Save to the user's settings the currently selected list.\n * @param {string} componentType - either \"events\" or \"tasks\"\n * @returns a promise of the HTTP operation\n */\n Component.saveSelectedList = function(componentType) {\n return this.$$resource.post(null, 'saveSelectedList', { list: componentType + 'ListView' });\n };\n\n /**\n * @function $eventsBlocksForView\n * @desc Events blocks for a specific week\n * @param {string} view - Either 'day' or 'week'\n * @param {Date} type - Date of any day of the desired period\n * @returns a promise of a collection of objects describing the events blocks\n */\n Component.$eventsBlocksForView = function(view, date) {\n var viewAction, startDate, endDate, params;\n\n if (view == 'day') {\n viewAction = 'dayView';\n startDate = endDate = date;\n }\n else if (view == 'week') {\n viewAction = 'weekView';\n startDate = date.beginOfWeek();\n endDate = new Date();\n endDate.setTime(startDate.getTime());\n endDate.addDays(6);\n }\n else if (view == 'month') {\n viewAction = 'monthView';\n startDate = date;\n startDate.setDate(1);\n startDate = startDate.beginOfWeek();\n endDate = new Date();\n endDate.setTime(startDate.getTime());\n endDate.setMonth(endDate.getMonth() + 1);\n endDate.addDays(-1);\n endDate = endDate.endOfWeek();\n }\n return this.$eventsBlocks(viewAction, startDate, endDate);\n };\n\n /**\n * @function $eventsBlocks\n * @desc Events blocks for a specific view and period\n * @param {string} view - Either 'day' or 'week'\n * @param {Date} startDate - period's start date\n * @param {Date} endDate - period's end date\n * @returns a promise of a collection of objects describing the events blocks\n */\n Component.$eventsBlocks = function(view, startDate, endDate) {\n var params, futureComponentData, i,\n deferred = Component.$q.defer();\n\n params = { view: view.toLowerCase(), sd: startDate.getDayString(), ed: endDate.getDayString() };\n Component.$log.debug('eventsblocks ' + JSON.stringify(params, undefined, 2));\n futureComponentData = this.$$resource.fetch(null, 'eventsblocks', params);\n futureComponentData.then(function(data) {\n Component.$timeout(function() {\n var components = [], blocks = {};\n\n // Instantiate Component objects\n _.reduce(data.events, function(objects, eventData, i) {\n var componentData = _.object(data.eventsFields, eventData),\n start = new Date(componentData.c_startdate * 1000);\n componentData.hour = start.getHourString();\n objects.push(new Component(componentData));\n return objects;\n }, components);\n\n // Associate Component objects to blocks positions\n _.each(_.flatten(data.blocks), function(block) {\n block.component = components[block.nbr];\n });\n\n // Convert array of blocks to object with days as keys\n for (i = 0; i < data.blocks.length; i++) {\n blocks[startDate.getDayString()] = data.blocks[i];\n startDate.addDays(1);\n }\n\n Component.$log.debug('blocks ready (' + _.keys(blocks).length + ')');\n\n // Save the blocks to the object model\n Component.$blocks = blocks;\n\n deferred.resolve(blocks);\n });\n }, deferred.reject);\n\n return deferred.promise;\n };\n\n /**\n * @function $unwrapCollection\n * @desc Unwrap a promise and instanciate new Component objects using received data.\n * @param {string} type - either 'events' or 'tasks'\n * @param {promise} futureComponentData - a promise of the components' metadata\n * @returns a promise of the HTTP operation\n */\n Component.$unwrapCollection = function(type, futureComponentData) {\n var _this = this,\n components = [];\n\n return futureComponentData.then(function(data) {\n return Component.$timeout(function() {\n var fields = _.invoke(data.fields, 'toLowerCase');\n\n // Instanciate Component objects\n _.reduce(data[type], function(components, componentData, i) {\n var data = _.object(fields, componentData);\n components.push(new Component(data));\n return components;\n }, components);\n\n Component.$log.debug('list of ' + type + ' ready (' + components.length + ')');\n\n // Save the list of components to the object model\n Component['$' + type] = components;\n\n return components;\n });\n });\n };\n\n /**\n * @function init\n * @memberof Component.prototype\n * @desc Extend instance with required attributes and new data.\n * @param {object} data - attributes of component\n */\n Component.prototype.init = function(data) {\n var _this = this;\n\n this.categories = [];\n this.repeat = {};\n this.alarm = { action: 'display', quantity: 5, unit: 'MINUTES', reference: 'BEFORE', relation: 'START' };\n this.status = 'not-specified';\n angular.extend(this, data);\n\n Component.$Preferences.ready().then(function() {\n var type = (_this.type == 'appointment')? 'Events' : 'Tasks';\n\n // Set default values from user's defaults\n _this.classification = _this.classification ||\n Component.$Preferences.defaults['SOGoCalendar' + type + 'DefaultClassification'].toLowerCase();\n });\n\n if (this.startDate)\n this.start = new Date(this.startDate.substring(0,10) + ' ' + this.startDate.substring(11,16));\n else\n this.start = new Date();\n if (this.endDate)\n this.end = new Date(this.endDate.substring(0,10) + ' ' + this.endDate.substring(11,16));\n if (this.dueDate)\n this.due = new Date(this.dueDate.substring(0,10) + ' ' + this.dueDate.substring(11,16));\n\n // Parse recurrence rule definition and initialize default values\n this.$isRecurrent = angular.isDefined(data.repeat);\n if (this.repeat.days) {\n var byDayMask = _.find(this.repeat.days, function(o) {\n return angular.isDefined(o.occurrence);\n });\n if (byDayMask)\n if (this.repeat.frequency == 'yearly')\n this.repeat.year = { byday: true };\n this.repeat.month = {\n type: 'byday',\n occurrence: byDayMask.occurrence.toString(),\n day: byDayMask.day\n };\n }\n else {\n this.repeat.days = [];\n }\n if (angular.isUndefined(this.repeat.frequency))\n this.repeat.frequency = 'never';\n if (angular.isUndefined(this.repeat.interval))\n this.repeat.interval = 1;\n if (angular.isUndefined(this.repeat.month))\n this.repeat.month = { occurrence: '1', day: 'SU', type: 'bymonthday' };\n if (angular.isUndefined(this.repeat.monthdays))\n this.repeat.monthdays = [];\n if (angular.isUndefined(this.repeat.months))\n this.repeat.months = [];\n if (angular.isUndefined(this.repeat.year))\n this.repeat.year = {};\n if (this.repeat.count)\n this.repeat.end = 'count';\n else if (this.repeat.until) {\n this.repeat.end = 'until';\n this.repeat.until = this.repeat.until.substring(0,10).asDate();\n }\n else\n this.repeat.end = 'never';\n this.$hasCustomRepeat = this.hasCustomRepeat();\n\n if (this.isNew) {\n // Set default alarm\n Component.$Preferences.ready().then(function() {\n var units = { M: 'MINUTES', H: 'HOURS', D: 'DAYS', W: 'WEEKS' };\n var match = /-PT?([0-9]+)([MHDW])/.exec(Component.$Preferences.defaults.SOGoCalendarDefaultReminder);\n if (match) {\n _this.$hasAlarm = true;\n _this.alarm.quantity = parseInt(match[1]);\n _this.alarm.unit = units[match[2]];\n }\n });\n }\n else {\n this.$hasAlarm = angular.isDefined(data.alarm);\n }\n\n // Allow the component to be moved to a different calendar\n this.destinationCalendar = this.pid;\n\n if (this.organizer && this.organizer.email) {\n this.organizer.$image = Component.$gravatar(this.organizer.email, 32);\n }\n\n // Load freebusy of attendees\n this.freebusy = this.updateFreeBusyCoverage();\n\n if (this.attendees) {\n _.each(this.attendees, function(attendee) {\n attendee.image = Component.$gravatar(attendee.email, 32);\n _this.updateFreeBusy(attendee);\n });\n }\n\n this.selected = false;\n };\n\n /**\n * @function hasCustomRepeat\n * @memberof Component.prototype\n * @desc Check if the component has a custom recurrence rule.\n * @returns true if the recurrence rule requires the full recurrence editor\n */\n Component.prototype.hasCustomRepeat = function() {\n var b = angular.isDefined(this.repeat) &&\n (this.repeat.interval > 1 ||\n this.repeat.days && this.repeat.days.length > 0 ||\n this.repeat.monthdays && this.repeat.monthdays.length > 0 ||\n this.repeat.months && this.repeat.months.length > 0);\n return b;\n };\n\n /**\n * @function isEditable\n * @memberof Component.prototype\n * @desc Check if the component is editable and not an occurrence of a recurrent component\n * @returns true or false\n */\n Component.prototype.isEditable = function() {\n return (!this.occurrenceId && !this.isReadOnly);\n };\n\n /**\n * @function isEditableOccurrence\n * @memberof Component.prototype\n * @desc Check if the component is editable and an occurrence of a recurrent component\n * @returns true or false\n */\n Component.prototype.isEditableOccurrence = function() {\n return (this.occurrenceId && !this.isReadOnly);\n };\n\n /**\n * @function isInvitation\n * @memberof Component.prototype\n * @desc Check if the component an invitation and not an occurrence of a recurrent component\n * @returns true or false\n */\n Component.prototype.isInvitation = function() {\n return (!this.occurrenceId && this.userHasRSVP);\n };\n\n /**\n * @function isInvitationOccurrence\n * @memberof Component.prototype\n * @desc Check if the component an invitation and an occurrence of a recurrent component\n * @returns true or false\n */\n Component.prototype.isInvitationOccurrence = function() {\n return (this.occurrenceId && this.userHasRSVP);\n };\n\n /**\n * @function isReadOnly\n * @memberof Component.prototype\n * @desc Check if the component is not editable and not an invitation\n * @returns true or false\n */\n Component.prototype.isReadOnly = function() {\n return (this.isReadOnly && !this.userHasRSVP);\n };\n\n /**\n * @function enablePercentComplete\n * @memberof Component.prototype\n * @desc Check if the percent completion should be enabled with respect to the\n * component's type and status.\n * @returns true if the percent completion should be displayed\n */\n Component.prototype.enablePercentComplete = function() {\n return (this.component = 'vtodo' &&\n this.status != 'not-specified' &&\n this.status != 'cancelled');\n };\n\n /**\n * @function coversFreeBusy\n * @memberof Component.prototype\n * @desc Check if a specific quarter matches the component's period\n * @returns true if the quarter covers the component's period\n */\n Component.prototype.coversFreeBusy = function(day, hour, quarter) {\n var b = (angular.isDefined(this.freebusy[day]) &&\n angular.isDefined(this.freebusy[day][hour]) &&\n this.freebusy[day][hour][quarter] == 1);\n return b;\n };\n\n /**\n * @function updateFreeBusyCoverage\n * @memberof Component.prototype\n * @desc Build a 15-minute-based representation of the component's period.\n * @returns an object literal hashed by days and hours and arrays of four 1's and 0's\n */\n Component.prototype.updateFreeBusyCoverage = function() {\n var _this = this, freebusy = {};\n\n if (this.start && this.end) {\n var roundedStart = new Date(this.start.getTime()),\n roundedEnd = new Date(this.end.getTime()),\n startQuarter = parseInt(roundedStart.getMinutes()/15 + 0.5),\n endQuarter = parseInt(roundedEnd.getMinutes()/15 + 0.5);\n roundedStart.setMinutes(15*startQuarter);\n roundedEnd.setMinutes(15*endQuarter);\n\n _.each(roundedStart.daysUpTo(roundedEnd), function(date, index) {\n var currentDay = date.getDate(),\n dayKey = date.getDayString(),\n hourKey;\n if (dayKey == _this.start.getDayString()) {\n hourKey = date.getHours().toString();\n freebusy[dayKey] = {};\n freebusy[dayKey][hourKey] = [];\n while (startQuarter > 0) {\n freebusy[dayKey][hourKey].push(0);\n startQuarter--;\n }\n }\n else {\n date = date.beginOfDay();\n freebusy[dayKey] = {};\n }\n while (date.getTime() < _this.end.getTime() &&\n date.getDate() == currentDay) {\n hourKey = date.getHours().toString();\n if (angular.isUndefined(freebusy[dayKey][hourKey]))\n freebusy[dayKey][hourKey] = [];\n freebusy[dayKey][hourKey].push(1);\n date.addMinutes(15);\n }\n });\n return freebusy;\n }\n };\n\n /**\n * @function updateFreeBusy\n * @memberof Component.prototype\n * @desc Update the freebusy information for the component's period for a specific attendee.\n * @param {Object} card - an Card object instance of the attendee\n */\n Component.prototype.updateFreeBusy = function(attendee) {\n var params, url, days;\n if (attendee.uid) {\n params =\n {\n sday: this.start.getDayString(),\n eday: this.end.getDayString()\n };\n url = ['..', '..', attendee.uid, 'freebusy.ifb'];\n days = _.map(this.start.daysUpTo(this.end), function(day) { return day.getDayString(); });\n\n if (angular.isUndefined(attendee.freebusy))\n attendee.freebusy = {};\n\n // Fetch FreeBusy information\n Component.$$resource.fetch(url.join('/'), 'ajaxRead', params).then(function(data) {\n _.each(days, function(day) {\n var hour;\n\n if (angular.isUndefined(attendee.freebusy[day]))\n attendee.freebusy[day] = {};\n\n if (angular.isUndefined(data[day]))\n data[day] = {};\n\n for (var i = 0; i <= 23; i++) {\n hour = i.toString();\n if (data[day][hour])\n attendee.freebusy[day][hour] = [\n data[day][hour][\"0\"],\n data[day][hour][\"15\"],\n data[day][hour][\"30\"],\n data[day][hour][\"45\"]\n ];\n else\n attendee.freebusy[day][hour] = [0, 0, 0, 0];\n }\n });\n });\n }\n };\n\n /**\n * @function getClassName\n * @memberof Component.prototype\n * @desc Return the component CSS class name based on its container (calendar) ID.\n * @param {string} [base] - the prefix to add to the class name (defaults to \"fg\")\n * @returns a string representing the foreground CSS class name\n */\n Component.prototype.getClassName = function(base) {\n if (angular.isUndefined(base))\n base = 'fg';\n return base + '-folder' + (this.destinationCalendar || this.c_folder);\n };\n\n /**\n * @function addAttendee\n * @memberof Component.prototype\n * @desc Add an attendee and fetch his freebusy info.\n * @param {Object} card - an Card object instance to be added to the attendees list\n */\n Component.prototype.addAttendee = function(card) {\n var attendee, url, params;\n if (card) {\n attendee = {\n name: card.c_cn,\n email: card.$preferredEmail(),\n role: 'req-participant',\n status: 'needs-action',\n uid: card.c_uid\n };\n if (!_.find(this.attendees, function(o) {\n return o.email == attendee.email;\n })) {\n attendee.image = Component.$gravatar(attendee.email, 32);\n if (this.attendees)\n this.attendees.push(attendee);\n else\n this.attendees = [attendee];\n this.updateFreeBusy(attendee);\n }\n }\n };\n\n /**\n * @function hasAttendee\n * @memberof Component.prototype\n * @desc Verify if one of the email addresses of a Card instance matches an attendee.\n * @param {Object} card - an Card object instance\n * @returns true if the Card matches an attendee\n */\n Component.prototype.hasAttendee = function(card) {\n var attendee = _.find(this.attendees, function(attendee) {\n return _.find(card.emails, function(email) {\n return email.value == attendee.email;\n });\n });\n return angular.isDefined(attendee);\n };\n\n /**\n * @function canRemindAttendeesByEmail\n * @memberof Component.prototype\n * @desc Verify if the component's reminder must be send by email and if it has at least one attendee.\n * @returns true if attendees can receive a reminder by email\n */\n Component.prototype.canRemindAttendeesByEmail = function() {\n return this.alarm.action == 'email' &&\n !this.isReadOnly &&\n this.attendees && this.attendees.length > 0;\n };\n\n /**\n * @function addAttachUrl\n * @memberof Component.prototype\n * @desc Add a new attach URL if not already defined\n * @param {string} attachUrl - the URL\n * @returns the number of values in the list of attach URLs\n */\n Component.prototype.addAttachUrl = function(attachUrl) {\n if (angular.isUndefined(this.attachUrls)) {\n this.attachUrls = [{value: attachUrl}];\n }\n else {\n for (var i = 0; i < this.attachUrls.length; i++) {\n if (this.attachUrls[i].value == attachUrl) {\n break;\n }\n }\n if (i == this.attachUrls.length)\n this.attachUrls.push({value: attachUrl});\n }\n return this.attachUrls.length - 1;\n };\n\n /**\n * @function deleteAttachUrl\n * @memberof Component.prototype\n * @desc Remove an attach URL\n * @param {number} index - the URL index in the list of attach URLs\n */\n Component.prototype.deleteAttachUrl = function(index) {\n if (index > -1 && this.attachUrls.length > index) {\n this.attachUrls.splice(index, 1);\n }\n };\n\n /**\n * @function $reset\n * @memberof Component.prototype\n * @desc Reset the original state the component's data.\n */\n Component.prototype.$reset = function() {\n var _this = this;\n angular.forEach(this, function(value, key) {\n if (key != 'constructor' && key[0] != '$') {\n delete _this[key];\n }\n });\n angular.extend(this, this.$shadowData);\n this.$shadowData = this.$omit(true);\n };\n\n /**\n * @function reply\n * @memberof Component.prototype\n * @desc Reply to an invitation.\n * @returns a promise of the HTTP operation\n */\n Component.prototype.$reply = function() {\n var _this = this, data, path = [this.pid, this.id];\n\n if (this.occurrenceId)\n path.push(this.occurrenceId);\n\n data = {\n reply: this.reply,\n delegatedTo: this.delegatedTo,\n alarm: this.$hasAlarm? this.alarm : {}\n };\n\n return Component.$$resource.save(path.join('/'), data, { action: 'rsvpAppointment' })\n .then(function(data) {\n // Make a copy of the data for an eventual reset\n _this.$shadowData = _this.$omit(true);\n return data;\n });\n };\n\n /**\n * @function $save\n * @memberof Component.prototype\n * @desc Save the component to the server.\n */\n Component.prototype.$save = function() {\n var _this = this, options, path = [this.pid, this.id];\n\n if (this.isNew)\n options = { action: 'saveAs' + this.type.capitalize() };\n\n if (this.occurrenceId)\n path.push(this.occurrenceId);\n\n return Component.$$resource.save(path.join('/'), this.$omit(), options)\n .then(function(data) {\n // Make a copy of the data for an eventual reset\n _this.$shadowData = _this.$omit(true);\n return data;\n });\n };\n\n /**\n * @function $unwrap\n * @memberof Component.prototype\n * @desc Unwrap a promise.\n * @param {promise} futureComponentData - a promise of some of the Component's data\n */\n Component.prototype.$unwrap = function(futureComponentData) {\n var _this = this;\n\n // Expose the promise\n this.$futureComponentData = futureComponentData;\n\n // Resolve the promise\n this.$futureComponentData.then(function(data) {\n _this.init(data);\n // Make a copy of the data for an eventual reset\n _this.$shadowData = _this.$omit();\n }, function(data) {\n angular.extend(_this, data);\n _this.isError = true;\n Component.$log.error(_this.error);\n });\n };\n\n /**\n * @function $omit\n * @memberof Component.prototype\n * @desc Return a sanitized object used to send to the server.\n * @return an object literal copy of the Component instance\n */\n Component.prototype.$omit = function() {\n var component = {}, date;\n angular.forEach(this, function(value, key) {\n if (key != 'constructor' && key[0] != '$') {\n component[key] = angular.copy(value);\n }\n });\n\n // Format times\n component.startTime = component.startDate ? formatTime(component.startDate) : '';\n component.endTime = component.endDate ? formatTime(component.endDate) : '';\n\n // Update recurrence definition depending on selections\n if (this.$hasCustomRepeat) {\n if (this.repeat.frequency == 'monthly' && this.repeat.month.type && this.repeat.month.type == 'byday' ||\n this.repeat.frequency == 'yearly' && this.repeat.year.byday) {\n // BYDAY mask for a monthly or yearly recurrence\n delete component.repeat.monthdays;\n component.repeat.days = [{ day: this.repeat.month.day, occurrence: this.repeat.month.occurrence.toString() }];\n }\n else if (this.repeat.month.type) {\n // montly recurrence by month days or yearly by month\n delete component.repeat.days;\n }\n }\n else if (this.repeat.frequency) {\n component.repeat = { frequency: this.repeat.frequency };\n }\n if (this.repeat.frequency) {\n if (this.repeat.end == 'until' && this.repeat.until)\n component.repeat.until = this.repeat.until.stringWithSeparator('-');\n else if (this.repeat.end == 'count' && this.repeat.count)\n component.repeat.count = this.repeat.count;\n else {\n delete component.repeat.until;\n delete component.repeat.count;\n }\n }\n else {\n delete component.repeat;\n }\n\n if (this.$hasAlarm) {\n if (this.alarm.action && this.alarm.action == 'email' &&\n !(this.attendees && this.attendees.length > 0)) {\n // No attendees; email reminder must be sent to organizer only\n this.alarm.attendees = 0;\n this.alarm.organizer = 1;\n }\n }\n else {\n component.alarm = {};\n }\n\n function formatTime(dateString) {\n // YYYY-MM-DDTHH:MM-ZZ:00 => YYYY-MM-DD HH:MM\n var date = new Date(dateString.substring(0,10) + ' ' + dateString.substring(11,16)),\n hours = date.getHours(),\n minutes = date.getMinutes();\n\n if (hours < 10) hours = '0' + hours;\n if (minutes < 10) minutes = '0' + minutes;\n\n return hours + ':' + minutes;\n }\n\n return component;\n };\n\n})();\n"]} \ No newline at end of file +{"version":3,"file":"Scheduler.services.js","sources":["Scheduler/Calendar.service.js","Scheduler/Component.service.js"],"names":["Calendar","futureCalendarData","this","init","name","id","newCalendarData","$$resource","create","angular","extend","$acl","$$Acl","$factory","$q","$timeout","$log","Settings","Resource","Component","Acl","activeUser","$Component","module","e","factory","$add","calendar","list","sibling","i","isWebCalendar","$webcalendars","isSubscription","$subscriptions","$calendars","_","find","o","localeCompare","indexOf","pluck","splice","$findAll","data","_this","forEach","push","union","$get","$subscribe","uid","path","userResource","fetch","then","calendarData","$addWebCalendar","url","d","defer","urls","webCalendarURL","reject","post","isEditable","isRemote","owner","login","debug","JSON","stringify","undefined","resolve","promise","prototype","isOwned","isSuperUser","getClassName","base","isUndefined","$rename","$save","$delete","remove","status","$deleteComponents","components","calendars","component","isDefined","c_folder","c_name","uids","$events","difference","$tasks","save","$omit","$setActivation","active","$getComponent","componentId","recurrenceId","$find","value","key","futureComponentData","pid","newComponentData","newguid","$unwrap","isNew","Preferences","Gravatar","$Preferences","$gravatar","baseURL","timeFormat","$query","search","$queryEvents","sort","asc","filterpopup","$queryTasks","ready","settings","EventsFilterState","TasksFilterState","EventsSortingState","parseInt","TasksSortingState","show_completed","ShowCompletedTasks","$categories","defaults","SOGoCalendarCategoriesColors","SOGoTimeFormat","$selectedCount","count","filter","event","selected","length","$filter","type","options","now","Date","day","getDate","month","getMonth","year","getFullYear","queryKey","capitalize","params","otherType","dirty","each","keys","$unwrapCollection","calendarId","occurrenceId","join","filterCategories","query","re","RegExp","category","saveSelectedList","componentType","$eventsBlocksForView","view","date","viewAction","startDate","endDate","beginOfWeek","setTime","getTime","addDays","setDate","setMonth","endOfWeek","$eventsBlocks","deferred","toLowerCase","sd","getDayString","ed","blocks","reduce","events","objects","eventData","componentData","object","eventsFields","start","c_startdate","hour","getHourString","flatten","block","nbr","$blocks","fields","invoke","categories","repeat","alarm","action","quantity","unit","reference","relation","classification","substring","end","dueDate","due","$isRecurrent","days","byDayMask","occurrence","frequency","byday","toString","interval","monthdays","months","until","asDate","$hasCustomRepeat","hasCustomRepeat","units","M","H","D","W","match","exec","SOGoCalendarDefaultReminder","$hasAlarm","destinationCalendar","organizer","email","$image","freebusy","updateFreeBusyCoverage","attendees","attendee","image","updateFreeBusy","b","isReadOnly","isEditableOccurrence","isInvitation","userHasRSVP","isInvitationOccurrence","enablePercentComplete","coversFreeBusy","quarter","roundedStart","roundedEnd","startQuarter","getMinutes","endQuarter","setMinutes","daysUpTo","index","hourKey","currentDay","dayKey","getHours","beginOfDay","addMinutes","sday","eday","map","addAttendee","card","c_cn","$preferredEmail","role","c_uid","hasAttendee","emails","canRemindAttendeesByEmail","addAttachUrl","attachUrl","attachUrls","deleteAttachUrl","$reset","$shadowData","$reply","reply","delegatedTo","$futureComponentData","isError","error","formatTime","dateString","hours","minutes","copy","startTime","endTime","stringWithSeparator"],"mappings":"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","sourcesContent":["/* -*- Mode: javascript; indent-tabs-mode: nil; c-basic-offset: 2 -*- */\n\n(function() {\n 'use strict';\n\n /**\n * @name Calendar\n * @constructor\n * @param {object} futureCalendarData - either an object literal or a promise\n */\n function Calendar(futureCalendarData) {\n // Data is immediately available\n this.init(futureCalendarData);\n if (this.name && !this.id) {\n // Create a new calendar on the server\n var newCalendarData = Calendar.$$resource.create('createFolder', this.name);\n angular.extend(this, newCalendarData);\n }\n if (this.id) {\n this.$acl = new Calendar.$$Acl('Calendar/' + this.id);\n }\n }\n\n /**\n * @memberof Calendar\n * @desc The factory we'll use to register with Angular\n * @returns the Calendar constructor\n */\n Calendar.$factory = ['$q', '$timeout', '$log', 'sgSettings', 'Resource', 'Component', 'Acl', function($q, $timeout, $log, Settings, Resource, Component, Acl) {\n angular.extend(Calendar, {\n $q: $q,\n $timeout: $timeout,\n $log: $log,\n $$resource: new Resource(Settings.activeUser('folderURL') + 'Calendar', Settings.activeUser()),\n $Component: Component,\n $$Acl: Acl,\n activeUser: Settings.activeUser()\n });\n\n return Calendar; // return constructor\n }];\n\n /**\n * @module SOGo.SchedulerUI\n * @desc Factory registration of Calendar in Angular module.\n */\n try {\n angular.module('SOGo.SchedulerUI');\n }\n catch(e) {\n angular.module('SOGo.SchedulerUI', ['SOGo.Common']);\n }\n angular.module('SOGo.SchedulerUI')\n .factory('Calendar', Calendar.$factory);\n\n /**\n * @memberof Calendar\n * @desc Add a new calendar to the static list of calendars\n * @param {Calendar} calendar - an Calendar object instance\n */\n Calendar.$add = function(calendar) {\n // Insert new calendar at proper index\n var list, sibling, i;\n\n if (calendar.isWebCalendar)\n list = this.$webcalendars;\n else if (calendar.isSubscription)\n list = this.$subscriptions;\n else\n list = this.$calendars;\n\n sibling = _.find(list, function(o) {\n return (o.id != 'personal' &&\n o.name.localeCompare(calendar.name) === 1);\n });\n i = sibling ? _.indexOf(_.pluck(list, 'id'), sibling.id) : 1;\n list.splice(i, 0, calendar);\n };\n\n /**\n * @memberof Calendar\n * @desc Set or get the list of calendars. Will instanciate a new Calendar object for each item.\n * @param {object[]} [data] - the metadata of the calendars\n * @returns the list of calendars\n */\n Calendar.$findAll = function(data) {\n var _this = this;\n if (data) {\n this.$calendars = [];\n this.$subscriptions = [];\n this.$webcalendars = [];\n // Instanciate Calendar objects\n angular.forEach(data, function(o, i) {\n var calendar = new Calendar(o);\n if (calendar.isWebCalendar)\n _this.$webcalendars.push(calendar);\n else if (calendar.isSubscription)\n _this.$subscriptions.push(calendar);\n else\n _this.$calendars.push(calendar);\n });\n }\n return _.union(this.$calendars, this.$subscriptions, this.$webcalendars);\n };\n\n /**\n * @memberof Calendar\n * @desc Find a calendar among local instances (personal calendars, subscriptions and Web calendars).\n * @param {string} id - the calendar ID\n * @returns an object literal of the matching Calendar instance\n */\n Calendar.$get = function(id) {\n var calendar;\n\n calendar = _.find(Calendar.$calendars, function(o) { return o.id == id; });\n if (!calendar)\n calendar = _.find(Calendar.$subscriptions, function(o) { return o.id == id; });\n if (!calendar)\n calendar = _.find(Calendar.$webcalendars, function(o) { return o.id == id; });\n\n return calendar;\n };\n\n /**\n * @memberOf Calendar\n * @desc Subscribe to another user's calendar and add it to the list of calendars.\n * @param {string} uid - user id\n * @param {string} path - path of folder for specified user\n * @returns a promise of the HTTP query result\n */\n Calendar.$subscribe = function(uid, path) {\n var _this = this;\n return Calendar.$$resource.userResource(uid).fetch(path, 'subscribe').then(function(calendarData) {\n var calendar = new Calendar(calendarData);\n if (!_.find(_this.$subscriptions, function(o) {\n return o.id == calendarData.id;\n })) {\n Calendar.$add(calendar);\n }\n return calendar;\n });\n };\n\n /**\n * @memberOf Calendar\n * @desc Subscribe to a remote Web calendar\n * @param {string} url - URL of .ics file\n * @returns a promise of the HTTP query result\n */\n Calendar.$addWebCalendar = function(url) {\n var _this = this,\n d = Calendar.$q.defer();\n\n if (_.find(_this.$webcalendars, function(o) {\n return o.urls.webCalendarURL == url;\n })) {\n // Already subscribed\n d.reject();\n }\n else {\n Calendar.$$resource.post(null, 'addWebCalendar', { url: url }).then(function(calendarData) {\n angular.extend(calendarData, {\n isWebCalendar: true,\n isEditable: true,\n isRemote: false,\n owner: Calendar.activeUser.login,\n urls: { webCalendarURL: url }\n });\n var calendar = new Calendar(calendarData);\n Calendar.$add(calendar);\n Calendar.$$resource.fetch(calendar.id, 'reload').then(function(data) {\n // TODO: show a toast of the reload status\n Calendar.$log.debug(JSON.stringify(data, undefined, 2));\n });\n d.resolve();\n }, function() {\n d.reject();\n });\n }\n\n return d.promise;\n };\n\n /**\n * @function init\n * @memberof Calendar.prototype\n * @desc Extend instance with new data and compute additional attributes.\n * @param {object} data - attributes of calendar\n */\n Calendar.prototype.init = function(data) {\n angular.extend(this, data);\n // Add 'isOwned' and 'isSubscription' attributes based on active user (TODO: add it server-side?)\n this.isOwned = Calendar.activeUser.isSuperUser || this.owner == Calendar.activeUser.login;\n this.isSubscription = !this.isRemote && this.owner != Calendar.activeUser.login;\n };\n\n /**\n * @function getClassName\n * @memberof Calendar.prototype\n * @desc Return the calendar CSS class name based on its ID.\n * @returns a string representing the foreground CSS class name\n */\n Calendar.prototype.getClassName = function(base) {\n if (angular.isUndefined(base))\n base = 'fg';\n return base + '-folder' + this.id;\n };\n\n /**\n * @function $rename\n * @memberof Calendar.prototype\n * @desc Rename the calendar and keep the list sorted\n * @param {string} name - the new name\n * @returns a promise of the HTTP operation\n */\n Calendar.prototype.$rename = function(name) {\n var i = _.indexOf(_.pluck(Calendar.$calendars, 'id'), this.id);\n this.name = name;\n Calendar.$calendars.splice(i, 1);\n Calendar.$add(this);\n return this.$save();\n };\n\n /**\n * @function $delete\n * @memberof Calendar.prototype\n * @desc Delete the calendar from the server and the static list of calendars.\n * @returns a promise of the HTTP operation\n */\n Calendar.prototype.$delete = function() {\n var _this = this,\n d = Calendar.$q.defer(),\n list,\n promise;\n\n if (this.isSubscription) {\n promise = Calendar.$$resource.fetch(this.id, 'unsubscribe');\n list = Calendar.$subscriptions;\n }\n else {\n promise = Calendar.$$resource.remove(this.id);\n if (this.isWebCalendar)\n list = Calendar.$webcalendars;\n else\n list = Calendar.$calendars;\n }\n\n promise.then(function() {\n var i = _.indexOf(_.pluck(list, 'id'), _this.id);\n list.splice(i, 1);\n d.resolve();\n }, function(data, status) {\n d.reject(data);\n });\n return d.promise;\n };\n\n /**\n * @function $deleteComponents\n * @memberof Calendar\n * @desc Delete multiple components from calendar.\n * @return a promise of the HTTP operation\n */\n Calendar.$deleteComponents = function(components) {\n\n // We create a c_folder -> event hash\n var calendars = {}, _this = this;\n\n _.forEach(components, function(component) {\n if (!angular.isDefined(calendars[component.c_folder]))\n calendars[component.c_folder] = [];\n\n calendars[component.c_folder].push(component.c_name);\n });\n\n _.forEach(calendars, function(uids, c_folder) {\n Calendar.$$resource.post(c_folder, 'batchDelete', {uids: uids});\n });\n\n // We slice both arrays - might be useful if in the future, we can delete\n // events and tasks at the same time.\n _this.$Component.$events = _.difference(_this.$Component.$events, components);\n _this.$Component.$tasks = _.difference(_this.$Component.$tasks, components);\n };\n\n /**\n * @function $save\n * @memberof Calendar.prototype\n * @desc Save the calendar properties to the server.\n * @returns a promise of the HTTP operation\n */\n Calendar.prototype.$save = function() {\n return Calendar.$$resource.save(this.id, this.$omit()).then(function(data) {\n return data;\n });\n };\n\n /**\n * @function $setActivation\n * @memberof Calendar.prototype\n * @desc Either activate or deactivate the calendar.\n * @returns a promise of the HTTP operation\n */\n Calendar.prototype.$setActivation = function() {\n return Calendar.$$resource.fetch(this.id, (this.active?'':'de') + 'activateFolder');\n };\n\n /**\n * @function $getComponent\n * @memberof Calendar.prototype\n * @desc Fetch a component attributes from the server.\n * @returns a promise of the HTTP operation\n */\n Calendar.prototype.$getComponent = function(componentId, recurrenceId) {\n return Calendar.$Component.$find(this.id, componentId, recurrenceId);\n };\n\n /**\n * @function $omit\n * @memberof Calendar.prototype\n * @desc Return a sanitized object used to send to the server.\n * @return an object literal copy of the Calendar instance\n */\n Calendar.prototype.$omit = function() {\n var calendar = {};\n angular.forEach(this, function(value, key) {\n if (key != 'constructor' &&\n key[0] != '$') {\n calendar[key] = value;\n }\n });\n return calendar;\n };\n})();\n","/* -*- Mode: javascript; indent-tabs-mode: nil; c-basic-offset: 2 -*- */\n\n(function() {\n 'use strict';\n\n /**\n * @name Component\n * @constructor\n * @param {object} futureComponentData - either an object literal or a promise\n */\n function Component(futureComponentData) {\n // Data is immediately available\n if (typeof futureComponentData.then !== 'function') {\n this.init(futureComponentData);\n if (this.pid && !this.id) {\n // Prepare for the creation of a new component;\n // Get UID from the server.\n var newComponentData = Component.$$resource.newguid(this.pid);\n this.$unwrap(newComponentData);\n this.isNew = true;\n }\n }\n else {\n // The promise will be unwrapped first\n this.$unwrap(futureComponentData);\n }\n }\n\n /**\n * @memberof Component\n * @desc The factory we'll use to register with Angular\n * @returns the Component constructor\n */\n Component.$factory = ['$q', '$timeout', '$log', 'sgSettings', 'Preferences', 'Gravatar', 'Resource', function($q, $timeout, $log, Settings, Preferences, Gravatar, Resource) {\n angular.extend(Component, {\n $q: $q,\n $timeout: $timeout,\n $log: $log,\n $Preferences: Preferences,\n $gravatar: Gravatar,\n $$resource: new Resource(Settings.baseURL(), Settings.activeUser()),\n timeFormat: \"%H:%M\",\n // Filter parameters common to events and tasks\n $query: { value: '', search: 'title_Category_Location' },\n // Filter paramaters specific to events\n $queryEvents: { sort: 'start', asc: 1, filterpopup: 'view_next7' },\n // Filter parameters specific to tasks\n $queryTasks: { sort: 'status', asc: 1, filterpopup: 'view_incomplete' }\n });\n Preferences.ready().then(function() {\n // Initialize filter parameters from user's settings\n if (Preferences.settings.Calendar.EventsFilterState)\n Component.$queryEvents.filterpopup = Preferences.settings.Calendar.EventsFilterState;\n if (Preferences.settings.Calendar.TasksFilterState)\n Component.$queryTasks.filterpopup = Preferences.settings.Calendar.TasksFilterState;\n if (Preferences.settings.Calendar.EventsSortingState) {\n Component.$queryEvents.sort = Preferences.settings.Calendar.EventsSortingState[0];\n Component.$queryEvents.asc = parseInt(Preferences.settings.Calendar.EventsSortingState[1]);\n }\n if (Preferences.settings.Calendar.TasksSortingState) {\n Component.$queryTasks.sort = Preferences.settings.Calendar.TasksSortingState[0];\n Component.$queryTasks.asc = parseInt(Preferences.settings.Calendar.TasksSortingState[1]);\n }\n Component.$queryTasks.show_completed = parseInt(Preferences.settings.ShowCompletedTasks);\n // Initialize categories from user's defaults\n Component.$categories = Preferences.defaults.SOGoCalendarCategoriesColors;\n // Initialize time format from user's defaults\n if (Preferences.defaults.SOGoTimeFormat) {\n Component.timeFormat = Preferences.defaults.SOGoTimeFormat;\n }\n });\n\n return Component; // return constructor\n }];\n\n /**\n * @module SOGo.SchedulerUI\n * @desc Factory registration of Component in Angular module.\n */\n try {\n angular.module('SOGo.SchedulerUI');\n }\n catch(e) {\n angular.module('SOGo.SchedulerUI', ['SOGo.Common']);\n }\n angular.module('SOGo.SchedulerUI')\n .factory('Component', Component.$factory);\n\n /**\n * @function $selectedCount\n * @memberof Component\n * @desc Return the number of events or tasks selected by the user.\n * @returns the number of selected events or tasks\n */\n Component.$selectedCount = function() {\n var count;\n\n count = 0;\n if (Component.$events) {\n count = (_.filter(Component.$events, function(event) { return event.selected; })).length;\n }\n if (Component.$tasks) {\n count = (_.filter(Component.$tasks, function(event) { return event.selected; })).length;\n }\n return count;\n };\n\n /**\n * @function $filter\n * @memberof Component\n * @desc Search for components matching some criterias\n * @param {string} type - either 'events' or 'tasks'\n * @param {object} [options] - additional options to the query\n * @returns a collection of Components instances\n */\n Component.$filter = function(type, options) {\n var _this = this,\n now = new Date(),\n day = now.getDate(),\n month = now.getMonth() + 1,\n year = now.getFullYear(),\n queryKey = '$query' + type.capitalize(),\n params = {\n day: '' + year + (month < 10?'0':'') + month + (day < 10?'0':'') + day,\n };\n\n return this.$Preferences.ready().then(function() {\n var futureComponentData,\n dirty = false,\n otherType;\n\n angular.extend(_this.$query, params);\n\n if (options) {\n _.each(_.keys(options), function(key) {\n // Query parameters common to events and tasks are compared\n dirty |= (_this.$query[key] && options[key] != Component.$query[key]);\n if (key == 'reload' && options[key])\n dirty = true;\n // Update either the common parameters or the type-specific parameters\n else if (angular.isDefined(_this.$query[key]))\n _this.$query[key] = options[key];\n else\n _this[queryKey][key] = options[key];\n });\n }\n\n // Perform query with both common and type-specific parameters\n futureComponentData = _this.$$resource.fetch(null, type + 'list',\n angular.extend(_this[queryKey], _this.$query));\n\n // Invalidate cached results of other type if $query has changed\n otherType = (type == 'tasks')? '$events' : '$tasks';\n if (dirty) {\n delete Component[otherType];\n Component.$log.debug('force reload of ' + otherType);\n }\n\n return _this.$unwrapCollection(type, futureComponentData);\n });\n };\n\n /**\n * @function $find\n * @desc Fetch a component from a specific calendar.\n * @param {string} calendarId - the calendar ID\n * @param {string} componentId - the component ID\n * @param {string} [occurrenceId] - the component ID\n * @see {@link Calendar.$getComponent}\n */\n Component.$find = function(calendarId, componentId, occurrenceId) {\n var futureComponentData, path = [calendarId, componentId];\n\n if (occurrenceId)\n path.push(occurrenceId);\n\n futureComponentData = this.$$resource.fetch(path.join('/'), 'view');\n\n return new Component(futureComponentData);\n };\n\n /**\n * @function filterCategories\n * @desc Search for categories matching some criterias\n * @param {string} search - the search string to match\n * @returns a collection of strings\n */\n Component.filterCategories = function(query) {\n var re = new RegExp(query, 'i');\n return _.filter(_.keys(Component.$categories), function(category) {\n return category.search(re) != -1;\n });\n };\n\n /**\n * @function saveSelectedList\n * @desc Save to the user's settings the currently selected list.\n * @param {string} componentType - either \"events\" or \"tasks\"\n * @returns a promise of the HTTP operation\n */\n Component.saveSelectedList = function(componentType) {\n return this.$$resource.post(null, 'saveSelectedList', { list: componentType + 'ListView' });\n };\n\n /**\n * @function $eventsBlocksForView\n * @desc Events blocks for a specific week\n * @param {string} view - Either 'day' or 'week'\n * @param {Date} type - Date of any day of the desired period\n * @returns a promise of a collection of objects describing the events blocks\n */\n Component.$eventsBlocksForView = function(view, date) {\n var viewAction, startDate, endDate, params;\n\n if (view == 'day') {\n viewAction = 'dayView';\n startDate = endDate = date;\n }\n else if (view == 'week') {\n viewAction = 'weekView';\n startDate = date.beginOfWeek();\n endDate = new Date();\n endDate.setTime(startDate.getTime());\n endDate.addDays(6);\n }\n else if (view == 'month') {\n viewAction = 'monthView';\n startDate = date;\n startDate.setDate(1);\n startDate = startDate.beginOfWeek();\n endDate = new Date();\n endDate.setTime(startDate.getTime());\n endDate.setMonth(endDate.getMonth() + 1);\n endDate.addDays(-1);\n endDate = endDate.endOfWeek();\n }\n return this.$eventsBlocks(viewAction, startDate, endDate);\n };\n\n /**\n * @function $eventsBlocks\n * @desc Events blocks for a specific view and period\n * @param {string} view - Either 'day' or 'week'\n * @param {Date} startDate - period's start date\n * @param {Date} endDate - period's end date\n * @returns a promise of a collection of objects describing the events blocks\n */\n Component.$eventsBlocks = function(view, startDate, endDate) {\n var params, futureComponentData, i,\n deferred = Component.$q.defer();\n\n params = { view: view.toLowerCase(), sd: startDate.getDayString(), ed: endDate.getDayString() };\n Component.$log.debug('eventsblocks ' + JSON.stringify(params, undefined, 2));\n futureComponentData = this.$$resource.fetch(null, 'eventsblocks', params);\n futureComponentData.then(function(data) {\n Component.$timeout(function() {\n var components = [], blocks = {};\n\n // Instantiate Component objects\n _.reduce(data.events, function(objects, eventData, i) {\n var componentData = _.object(data.eventsFields, eventData),\n start = new Date(componentData.c_startdate * 1000);\n componentData.hour = start.getHourString();\n objects.push(new Component(componentData));\n return objects;\n }, components);\n\n // Associate Component objects to blocks positions\n _.each(_.flatten(data.blocks), function(block) {\n block.component = components[block.nbr];\n });\n\n // Convert array of blocks to object with days as keys\n for (i = 0; i < data.blocks.length; i++) {\n blocks[startDate.getDayString()] = data.blocks[i];\n startDate.addDays(1);\n }\n\n Component.$log.debug('blocks ready (' + _.keys(blocks).length + ')');\n\n // Save the blocks to the object model\n Component.$blocks = blocks;\n\n deferred.resolve(blocks);\n });\n }, deferred.reject);\n\n return deferred.promise;\n };\n\n /**\n * @function $unwrapCollection\n * @desc Unwrap a promise and instanciate new Component objects using received data.\n * @param {string} type - either 'events' or 'tasks'\n * @param {promise} futureComponentData - a promise of the components' metadata\n * @returns a promise of the HTTP operation\n */\n Component.$unwrapCollection = function(type, futureComponentData) {\n var _this = this,\n components = [];\n\n return futureComponentData.then(function(data) {\n return Component.$timeout(function() {\n var fields = _.invoke(data.fields, 'toLowerCase');\n\n // Instanciate Component objects\n _.reduce(data[type], function(components, componentData, i) {\n var data = _.object(fields, componentData);\n components.push(new Component(data));\n return components;\n }, components);\n\n Component.$log.debug('list of ' + type + ' ready (' + components.length + ')');\n\n // Save the list of components to the object model\n Component['$' + type] = components;\n\n return components;\n });\n });\n };\n\n /**\n * @function init\n * @memberof Component.prototype\n * @desc Extend instance with required attributes and new data.\n * @param {object} data - attributes of component\n */\n Component.prototype.init = function(data) {\n var _this = this;\n\n this.categories = [];\n this.repeat = {};\n this.alarm = { action: 'display', quantity: 5, unit: 'MINUTES', reference: 'BEFORE', relation: 'START' };\n this.status = 'not-specified';\n angular.extend(this, data);\n\n Component.$Preferences.ready().then(function() {\n var type = (_this.type == 'appointment')? 'Events' : 'Tasks';\n\n // Set default values from user's defaults\n _this.classification = _this.classification ||\n Component.$Preferences.defaults['SOGoCalendar' + type + 'DefaultClassification'].toLowerCase();\n });\n\n if (this.startDate)\n this.start = new Date(this.startDate.substring(0,10) + ' ' + this.startDate.substring(11,16));\n if (this.endDate)\n this.end = new Date(this.endDate.substring(0,10) + ' ' + this.endDate.substring(11,16));\n if (this.dueDate)\n this.due = new Date(this.dueDate.substring(0,10) + ' ' + this.dueDate.substring(11,16));\n\n // Parse recurrence rule definition and initialize default values\n this.$isRecurrent = angular.isDefined(data.repeat);\n if (this.repeat.days) {\n var byDayMask = _.find(this.repeat.days, function(o) {\n return angular.isDefined(o.occurrence);\n });\n if (byDayMask)\n if (this.repeat.frequency == 'yearly')\n this.repeat.year = { byday: true };\n this.repeat.month = {\n type: 'byday',\n occurrence: byDayMask.occurrence.toString(),\n day: byDayMask.day\n };\n }\n else {\n this.repeat.days = [];\n }\n if (angular.isUndefined(this.repeat.frequency))\n this.repeat.frequency = 'never';\n if (angular.isUndefined(this.repeat.interval))\n this.repeat.interval = 1;\n if (angular.isUndefined(this.repeat.month))\n this.repeat.month = { occurrence: '1', day: 'SU', type: 'bymonthday' };\n if (angular.isUndefined(this.repeat.monthdays))\n this.repeat.monthdays = [];\n if (angular.isUndefined(this.repeat.months))\n this.repeat.months = [];\n if (angular.isUndefined(this.repeat.year))\n this.repeat.year = {};\n if (this.repeat.count)\n this.repeat.end = 'count';\n else if (this.repeat.until) {\n this.repeat.end = 'until';\n this.repeat.until = this.repeat.until.substring(0,10).asDate();\n }\n else\n this.repeat.end = 'never';\n this.$hasCustomRepeat = this.hasCustomRepeat();\n\n if (this.isNew) {\n // Set default alarm\n Component.$Preferences.ready().then(function() {\n var units = { M: 'MINUTES', H: 'HOURS', D: 'DAYS', W: 'WEEKS' };\n var match = /-PT?([0-9]+)([MHDW])/.exec(Component.$Preferences.defaults.SOGoCalendarDefaultReminder);\n if (match) {\n _this.$hasAlarm = true;\n _this.alarm.quantity = parseInt(match[1]);\n _this.alarm.unit = units[match[2]];\n }\n });\n }\n else {\n this.$hasAlarm = angular.isDefined(data.alarm);\n }\n\n // Allow the component to be moved to a different calendar\n this.destinationCalendar = this.pid;\n\n if (this.organizer && this.organizer.email) {\n this.organizer.$image = Component.$gravatar(this.organizer.email, 32);\n }\n\n // Load freebusy of attendees\n this.freebusy = this.updateFreeBusyCoverage();\n\n if (this.attendees) {\n _.each(this.attendees, function(attendee) {\n attendee.image = Component.$gravatar(attendee.email, 32);\n _this.updateFreeBusy(attendee);\n });\n }\n\n this.selected = false;\n };\n\n /**\n * @function hasCustomRepeat\n * @memberof Component.prototype\n * @desc Check if the component has a custom recurrence rule.\n * @returns true if the recurrence rule requires the full recurrence editor\n */\n Component.prototype.hasCustomRepeat = function() {\n var b = angular.isDefined(this.repeat) &&\n (this.repeat.interval > 1 ||\n this.repeat.days && this.repeat.days.length > 0 ||\n this.repeat.monthdays && this.repeat.monthdays.length > 0 ||\n this.repeat.months && this.repeat.months.length > 0);\n return b;\n };\n\n /**\n * @function isEditable\n * @memberof Component.prototype\n * @desc Check if the component is editable and not an occurrence of a recurrent component\n * @returns true or false\n */\n Component.prototype.isEditable = function() {\n return (!this.occurrenceId && !this.isReadOnly);\n };\n\n /**\n * @function isEditableOccurrence\n * @memberof Component.prototype\n * @desc Check if the component is editable and an occurrence of a recurrent component\n * @returns true or false\n */\n Component.prototype.isEditableOccurrence = function() {\n return (this.occurrenceId && !this.isReadOnly);\n };\n\n /**\n * @function isInvitation\n * @memberof Component.prototype\n * @desc Check if the component an invitation and not an occurrence of a recurrent component\n * @returns true or false\n */\n Component.prototype.isInvitation = function() {\n return (!this.occurrenceId && this.userHasRSVP);\n };\n\n /**\n * @function isInvitationOccurrence\n * @memberof Component.prototype\n * @desc Check if the component an invitation and an occurrence of a recurrent component\n * @returns true or false\n */\n Component.prototype.isInvitationOccurrence = function() {\n return (this.occurrenceId && this.userHasRSVP);\n };\n\n /**\n * @function isReadOnly\n * @memberof Component.prototype\n * @desc Check if the component is not editable and not an invitation\n * @returns true or false\n */\n Component.prototype.isReadOnly = function() {\n return (this.isReadOnly && !this.userHasRSVP);\n };\n\n /**\n * @function enablePercentComplete\n * @memberof Component.prototype\n * @desc Check if the percent completion should be enabled with respect to the\n * component's type and status.\n * @returns true if the percent completion should be displayed\n */\n Component.prototype.enablePercentComplete = function() {\n return (this.component = 'vtodo' &&\n this.status != 'not-specified' &&\n this.status != 'cancelled');\n };\n\n /**\n * @function coversFreeBusy\n * @memberof Component.prototype\n * @desc Check if a specific quarter matches the component's period\n * @returns true if the quarter covers the component's period\n */\n Component.prototype.coversFreeBusy = function(day, hour, quarter) {\n var b = (angular.isDefined(this.freebusy[day]) &&\n angular.isDefined(this.freebusy[day][hour]) &&\n this.freebusy[day][hour][quarter] == 1);\n return b;\n };\n\n /**\n * @function updateFreeBusyCoverage\n * @memberof Component.prototype\n * @desc Build a 15-minute-based representation of the component's period.\n * @returns an object literal hashed by days and hours and arrays of four 1's and 0's\n */\n Component.prototype.updateFreeBusyCoverage = function() {\n var _this = this, freebusy = {};\n\n if (this.start && this.end) {\n var roundedStart = new Date(this.start.getTime()),\n roundedEnd = new Date(this.end.getTime()),\n startQuarter = parseInt(roundedStart.getMinutes()/15 + 0.5),\n endQuarter = parseInt(roundedEnd.getMinutes()/15 + 0.5);\n roundedStart.setMinutes(15*startQuarter);\n roundedEnd.setMinutes(15*endQuarter);\n\n _.each(roundedStart.daysUpTo(roundedEnd), function(date, index) {\n var currentDay = date.getDate(),\n dayKey = date.getDayString(),\n hourKey;\n if (dayKey == _this.start.getDayString()) {\n hourKey = date.getHours().toString();\n freebusy[dayKey] = {};\n freebusy[dayKey][hourKey] = [];\n while (startQuarter > 0) {\n freebusy[dayKey][hourKey].push(0);\n startQuarter--;\n }\n }\n else {\n date = date.beginOfDay();\n freebusy[dayKey] = {};\n }\n while (date.getTime() < _this.end.getTime() &&\n date.getDate() == currentDay) {\n hourKey = date.getHours().toString();\n if (angular.isUndefined(freebusy[dayKey][hourKey]))\n freebusy[dayKey][hourKey] = [];\n freebusy[dayKey][hourKey].push(1);\n date.addMinutes(15);\n }\n });\n return freebusy;\n }\n };\n\n /**\n * @function updateFreeBusy\n * @memberof Component.prototype\n * @desc Update the freebusy information for the component's period for a specific attendee.\n * @param {Object} card - an Card object instance of the attendee\n */\n Component.prototype.updateFreeBusy = function(attendee) {\n var params, url, days;\n if (attendee.uid) {\n params =\n {\n sday: this.start.getDayString(),\n eday: this.end.getDayString()\n };\n url = ['..', '..', attendee.uid, 'freebusy.ifb'];\n days = _.map(this.start.daysUpTo(this.end), function(day) { return day.getDayString(); });\n\n if (angular.isUndefined(attendee.freebusy))\n attendee.freebusy = {};\n\n // Fetch FreeBusy information\n Component.$$resource.fetch(url.join('/'), 'ajaxRead', params).then(function(data) {\n _.each(days, function(day) {\n var hour;\n\n if (angular.isUndefined(attendee.freebusy[day]))\n attendee.freebusy[day] = {};\n\n if (angular.isUndefined(data[day]))\n data[day] = {};\n\n for (var i = 0; i <= 23; i++) {\n hour = i.toString();\n if (data[day][hour])\n attendee.freebusy[day][hour] = [\n data[day][hour][\"0\"],\n data[day][hour][\"15\"],\n data[day][hour][\"30\"],\n data[day][hour][\"45\"]\n ];\n else\n attendee.freebusy[day][hour] = [0, 0, 0, 0];\n }\n });\n });\n }\n };\n\n /**\n * @function getClassName\n * @memberof Component.prototype\n * @desc Return the component CSS class name based on its container (calendar) ID.\n * @param {string} [base] - the prefix to add to the class name (defaults to \"fg\")\n * @returns a string representing the foreground CSS class name\n */\n Component.prototype.getClassName = function(base) {\n if (angular.isUndefined(base))\n base = 'fg';\n return base + '-folder' + (this.destinationCalendar || this.c_folder);\n };\n\n /**\n * @function addAttendee\n * @memberof Component.prototype\n * @desc Add an attendee and fetch his freebusy info.\n * @param {Object} card - an Card object instance to be added to the attendees list\n */\n Component.prototype.addAttendee = function(card) {\n var attendee, url, params;\n if (card) {\n attendee = {\n name: card.c_cn,\n email: card.$preferredEmail(),\n role: 'req-participant',\n status: 'needs-action',\n uid: card.c_uid\n };\n if (!_.find(this.attendees, function(o) {\n return o.email == attendee.email;\n })) {\n attendee.image = Component.$gravatar(attendee.email, 32);\n if (this.attendees)\n this.attendees.push(attendee);\n else\n this.attendees = [attendee];\n this.updateFreeBusy(attendee);\n }\n }\n };\n\n /**\n * @function hasAttendee\n * @memberof Component.prototype\n * @desc Verify if one of the email addresses of a Card instance matches an attendee.\n * @param {Object} card - an Card object instance\n * @returns true if the Card matches an attendee\n */\n Component.prototype.hasAttendee = function(card) {\n var attendee = _.find(this.attendees, function(attendee) {\n return _.find(card.emails, function(email) {\n return email.value == attendee.email;\n });\n });\n return angular.isDefined(attendee);\n };\n\n /**\n * @function canRemindAttendeesByEmail\n * @memberof Component.prototype\n * @desc Verify if the component's reminder must be send by email and if it has at least one attendee.\n * @returns true if attendees can receive a reminder by email\n */\n Component.prototype.canRemindAttendeesByEmail = function() {\n return this.alarm.action == 'email' &&\n !this.isReadOnly &&\n this.attendees && this.attendees.length > 0;\n };\n\n /**\n * @function addAttachUrl\n * @memberof Component.prototype\n * @desc Add a new attach URL if not already defined\n * @param {string} attachUrl - the URL\n * @returns the number of values in the list of attach URLs\n */\n Component.prototype.addAttachUrl = function(attachUrl) {\n if (angular.isUndefined(this.attachUrls)) {\n this.attachUrls = [{value: attachUrl}];\n }\n else {\n for (var i = 0; i < this.attachUrls.length; i++) {\n if (this.attachUrls[i].value == attachUrl) {\n break;\n }\n }\n if (i == this.attachUrls.length)\n this.attachUrls.push({value: attachUrl});\n }\n return this.attachUrls.length - 1;\n };\n\n /**\n * @function deleteAttachUrl\n * @memberof Component.prototype\n * @desc Remove an attach URL\n * @param {number} index - the URL index in the list of attach URLs\n */\n Component.prototype.deleteAttachUrl = function(index) {\n if (index > -1 && this.attachUrls.length > index) {\n this.attachUrls.splice(index, 1);\n }\n };\n\n /**\n * @function $reset\n * @memberof Component.prototype\n * @desc Reset the original state the component's data.\n */\n Component.prototype.$reset = function() {\n var _this = this;\n angular.forEach(this, function(value, key) {\n if (key != 'constructor' && key[0] != '$') {\n delete _this[key];\n }\n });\n angular.extend(this, this.$shadowData);\n this.$shadowData = this.$omit(true);\n };\n\n /**\n * @function reply\n * @memberof Component.prototype\n * @desc Reply to an invitation.\n * @returns a promise of the HTTP operation\n */\n Component.prototype.$reply = function() {\n var _this = this, data, path = [this.pid, this.id];\n\n if (this.occurrenceId)\n path.push(this.occurrenceId);\n\n data = {\n reply: this.reply,\n delegatedTo: this.delegatedTo,\n alarm: this.$hasAlarm? this.alarm : {}\n };\n\n return Component.$$resource.save(path.join('/'), data, { action: 'rsvpAppointment' })\n .then(function(data) {\n // Make a copy of the data for an eventual reset\n _this.$shadowData = _this.$omit(true);\n return data;\n });\n };\n\n /**\n * @function $save\n * @memberof Component.prototype\n * @desc Save the component to the server.\n */\n Component.prototype.$save = function() {\n var _this = this, options, path = [this.pid, this.id];\n\n if (this.isNew)\n options = { action: 'saveAs' + this.type.capitalize() };\n\n if (this.occurrenceId)\n path.push(this.occurrenceId);\n\n return Component.$$resource.save(path.join('/'), this.$omit(), options)\n .then(function(data) {\n // Make a copy of the data for an eventual reset\n _this.$shadowData = _this.$omit(true);\n return data;\n });\n };\n\n /**\n * @function $unwrap\n * @memberof Component.prototype\n * @desc Unwrap a promise.\n * @param {promise} futureComponentData - a promise of some of the Component's data\n */\n Component.prototype.$unwrap = function(futureComponentData) {\n var _this = this;\n\n // Expose the promise\n this.$futureComponentData = futureComponentData;\n\n // Resolve the promise\n this.$futureComponentData.then(function(data) {\n _this.init(data);\n // Make a copy of the data for an eventual reset\n _this.$shadowData = _this.$omit();\n }, function(data) {\n angular.extend(_this, data);\n _this.isError = true;\n Component.$log.error(_this.error);\n });\n };\n\n /**\n * @function $omit\n * @memberof Component.prototype\n * @desc Return a sanitized object used to send to the server.\n * @return an object literal copy of the Component instance\n */\n Component.prototype.$omit = function() {\n var component = {}, date;\n angular.forEach(this, function(value, key) {\n if (key != 'constructor' && key[0] != '$') {\n component[key] = angular.copy(value);\n }\n });\n\n // Format times\n component.startTime = component.startDate ? formatTime(component.startDate) : '';\n component.endTime = component.endDate ? formatTime(component.endDate) : '';\n\n // Update recurrence definition depending on selections\n if (this.$hasCustomRepeat) {\n if (this.repeat.frequency == 'monthly' && this.repeat.month.type && this.repeat.month.type == 'byday' ||\n this.repeat.frequency == 'yearly' && this.repeat.year.byday) {\n // BYDAY mask for a monthly or yearly recurrence\n delete component.repeat.monthdays;\n component.repeat.days = [{ day: this.repeat.month.day, occurrence: this.repeat.month.occurrence.toString() }];\n }\n else if (this.repeat.month.type) {\n // montly recurrence by month days or yearly by month\n delete component.repeat.days;\n }\n }\n else if (this.repeat.frequency) {\n component.repeat = { frequency: this.repeat.frequency };\n }\n if (this.repeat.frequency) {\n if (this.repeat.end == 'until' && this.repeat.until)\n component.repeat.until = this.repeat.until.stringWithSeparator('-');\n else if (this.repeat.end == 'count' && this.repeat.count)\n component.repeat.count = this.repeat.count;\n else {\n delete component.repeat.until;\n delete component.repeat.count;\n }\n }\n else {\n delete component.repeat;\n }\n\n if (this.$hasAlarm) {\n if (this.alarm.action && this.alarm.action == 'email' &&\n !(this.attendees && this.attendees.length > 0)) {\n // No attendees; email reminder must be sent to organizer only\n this.alarm.attendees = 0;\n this.alarm.organizer = 1;\n }\n }\n else {\n component.alarm = {};\n }\n\n function formatTime(dateString) {\n // YYYY-MM-DDTHH:MM-ZZ:00 => YYYY-MM-DD HH:MM\n var date = new Date(dateString.substring(0,10) + ' ' + dateString.substring(11,16)),\n hours = date.getHours(),\n minutes = date.getMinutes();\n\n if (hours < 10) hours = '0' + hours;\n if (minutes < 10) minutes = '0' + minutes;\n\n return hours + ':' + minutes;\n }\n\n return component;\n };\n\n})();\n"]} \ No newline at end of file diff --git a/UI/WebServerResources/js/vendor/angular-animate.js b/UI/WebServerResources/js/vendor/angular-animate.js index 168aa57a0..cd835d0e2 100644 --- a/UI/WebServerResources/js/vendor/angular-animate.js +++ b/UI/WebServerResources/js/vendor/angular-animate.js @@ -1,5 +1,5 @@ /** - * @license AngularJS v1.3.17 + * @license AngularJS v1.3.18 * (c) 2010-2014 Google, Inc. http://angularjs.org * License: MIT */ @@ -1200,18 +1200,21 @@ angular.module('ngAnimate', ['ng']) } return cache.promise = runAnimationPostDigest(function(done) { - var parentElement = element.parent(); - var elementNode = extractElementNode(element); - var parentNode = elementNode.parentNode; + var cache, parentNode, parentElement, elementNode = extractElementNode(element); + if (elementNode) { + cache = element.data(STORAGE_KEY); + element.removeData(STORAGE_KEY); + + parentElement = element.parent(); + parentNode = elementNode.parentNode; + } + // TODO(matsko): move this code into the animationsDisabled() function once #8092 is fixed if (!parentNode || parentNode['$$NG_REMOVED'] || elementNode['$$NG_REMOVED']) { done(); return; } - var cache = element.data(STORAGE_KEY); - element.removeData(STORAGE_KEY); - var state = element.data(NG_ANIMATE_STATE) || {}; var classes = resolveElementClasses(element, cache, state.active); return !classes diff --git a/UI/WebServerResources/js/vendor/angular-animate.min.js b/UI/WebServerResources/js/vendor/angular-animate.min.js index 0b5b88147..a9c6f841b 100644 --- a/UI/WebServerResources/js/vendor/angular-animate.min.js +++ b/UI/WebServerResources/js/vendor/angular-animate.min.js @@ -1,33 +1,33 @@ /* - AngularJS v1.3.17 + AngularJS v1.3.18 (c) 2010-2014 Google, Inc. http://angularjs.org License: MIT */ (function(N,f,W){'use strict';f.module("ngAnimate",["ng"]).directive("ngAnimateChildren",function(){return function(X,r,g){g=g.ngAnimateChildren;f.isString(g)&&0===g.length?r.data("$$ngAnimateChildren",!0):X.$watch(g,function(f){r.data("$$ngAnimateChildren",!!f)})}}).factory("$$animateReflow",["$$rAF","$document",function(f,r){var g=r[0].body;return function(r){return f(function(){r(g.offsetWidth)})}}]).config(["$provide","$animateProvider",function(X,r){function g(f){for(var n=0;n=B&&b>=y&&c()}var m=g(e);a=e.data("$$ngAnimateCSS3Data");if(-1!=m.getAttribute("class").indexOf(b)&&a){var k= -"",t="";n(b.split(" "),function(a,b){var e=(0=B&&b>=y&&c()}var m=g(e);a=e.data("$$ngAnimateCSS3Data");if(-1!=m.getAttribute("class").indexOf(b)&& +a){var l="",t="";n(b.split(" "),function(a,b){var e=(0 3) ? args.slice(3) : [ ]; + + Object.defineProperty(scope, key, { + get: function () { + if (value === null) value = getter.apply(scope, params); + return value; + } + }); + }, + /** * Get a unique ID. * @@ -1347,6 +1363,12 @@ mdCompilerService.$inject = ["$q", "$http", "$injector", "$compile", "$controlle */ var pointer, lastPointer, forceSkipClickHijack = false; + /** + * The position of the most recent click if that click was on a label element. + * @type {{x: number, y: number}?} + */ + var lastLabelClickPos = null; + // Used to attach event listeners once when multiple ng-apps are running. var isInitialized = false; @@ -1790,9 +1812,16 @@ mdCompilerService.$inject = ["$q", "$http", "$injector", "$compile", "$controlle */ document.addEventListener('click', function clickHijacker(ev) { var isKeyClick = ev.clientX === 0 && ev.clientY === 0; - if (!isKeyClick && !ev.$material && !ev.isIonicTap) { + if (!isKeyClick && !ev.$material && !ev.isIonicTap + && !isInputEventFromLabelClick(ev)) { ev.preventDefault(); ev.stopPropagation(); + lastLabelClickPos = null; + } else { + lastLabelClickPos = null; + if (ev.target.tagName.toLowerCase() == 'label') { + lastLabelClickPos = {x: ev.x, y: ev.y}; + } } }, true); @@ -1913,6 +1942,28 @@ mdCompilerService.$inject = ["$q", "$http", "$injector", "$compile", "$controlle return ev && pointer && ev.type.charAt(0) === pointer.type; } + /** + * Gets whether the given event is an input event that was caused by clicking on an + * associated label element. + * + * This is necessary because the browser will, upon clicking on a label element, fire an + * *extra* click event on its associated input (if any). mdGesture is able to flag the label + * click as with `$material` correctly, but not the second input click. + * + * In order to determine whether an input event is from a label click, we compare the (x, y) for + * the event to the (x, y) for the most recent label click (which is cleared whenever a non-label + * click occurs). Unfortunately, there are no event properties that tie the input and the label + * together (such as relatedTarget). + * + * @param {MouseEvent} event + * @returns {boolean} + */ + function isInputEventFromLabelClick(event) { + return lastLabelClickPos + && lastLabelClickPos.x == event.x + && lastLabelClickPos.y == event.y; + } + /* * Update the given pointer based upon the given DOMEvent. * Distance, velocity, direction, duration, etc @@ -2876,12 +2927,13 @@ function InkRippleCtrl ($scope, $element, rippleOptions, $window, $timeout, $mdU this.options = rippleOptions; this.mousedown = false; this.ripples = []; - this.container = null; - this.color = null; - this.background = null; this.timeout = null; // Stores a reference to the most-recent ripple timeout this.lastRipple = null; + $mdUtil.valueOnUse(this, 'container', this.createContainer); + $mdUtil.valueOnUse(this, 'color', this.getColor, 1); + $mdUtil.valueOnUse(this, 'background', this.getColor, 0.5); + // attach method for unit tests ($element.controller('mdInkRipple') || {}).createRipple = angular.bind(this, this.createRipple); @@ -3015,10 +3067,6 @@ InkRippleCtrl.prototype.clearTimeout = function () { * @param top */ InkRippleCtrl.prototype.createRipple = function (left, top) { - if (!this.container) this.container = this.createContainer(); - if (!this.color) this.color = this.getColor(); - if (!this.background) this.background = this.getColor(0.5); - var ctrl = this; var ripple = angular.element('
'); var width = this.$element.prop('clientWidth'); @@ -3173,8 +3221,8 @@ angular.module('material.core.theming.palette', []) 'A400': '#ff1744', 'A700': '#d50000', 'contrastDefaultColor': 'light', - 'contrastDarkColors': '50 100 200 300 400 A100', - 'contrastStrongLightColors': '500 600 700 A200 A400 A700' + 'contrastDarkColors': '50 100 200 300 A100', + 'contrastStrongLightColors': '400 500 600 700 A200 A400 A700' }, 'pink': { '50': '#fce4ec', @@ -3192,7 +3240,7 @@ angular.module('material.core.theming.palette', []) 'A400': '#f50057', 'A700': '#c51162', 'contrastDefaultColor': 'light', - 'contrastDarkColors': '50 100 200 300 400 A100', + 'contrastDarkColors': '50 100 200 A100', 'contrastStrongLightColors': '500 600 A200 A400 A700' }, 'purple': { @@ -3268,7 +3316,7 @@ angular.module('material.core.theming.palette', []) 'A400': '#2979ff', 'A700': '#2962ff', 'contrastDefaultColor': 'light', - 'contrastDarkColors': '100 200 300 400 A100', + 'contrastDarkColors': '50 100 200 300 400 A100', 'contrastStrongLightColors': '500 600 700 A200 A400 A700' }, 'light-blue': { @@ -3287,8 +3335,8 @@ angular.module('material.core.theming.palette', []) 'A400': '#00b0ff', 'A700': '#0091ea', 'contrastDefaultColor': 'dark', - 'contrastLightColors': '500 600 700 800 900 A700', - 'contrastStrongLightColors': '500 600 700 800 A700' + 'contrastLightColors': '600 700 800 900 A700', + 'contrastStrongLightColors': '600 700 800 A700' }, 'cyan': { '50': '#e0f7fa', @@ -3306,8 +3354,8 @@ angular.module('material.core.theming.palette', []) 'A400': '#00e5ff', 'A700': '#00b8d4', 'contrastDefaultColor': 'dark', - 'contrastLightColors': '500 600 700 800 900', - 'contrastStrongLightColors': '500 600 700 800' + 'contrastLightColors': '700 800 900', + 'contrastStrongLightColors': '700 800 900' }, 'teal': { '50': '#e0f2f1', @@ -3344,8 +3392,8 @@ angular.module('material.core.theming.palette', []) 'A400': '#00e676', 'A700': '#00c853', 'contrastDefaultColor': 'dark', - 'contrastLightColors': '500 600 700 800 900', - 'contrastStrongLightColors': '500 600 700' + 'contrastLightColors': '600 700 800 900', + 'contrastStrongLightColors': '600 700' }, 'light-green': { '50': '#f1f8e9', @@ -3363,8 +3411,8 @@ angular.module('material.core.theming.palette', []) 'A400': '#76ff03', 'A700': '#64dd17', 'contrastDefaultColor': 'dark', - 'contrastLightColors': '800 900', - 'contrastStrongLightColors': '800 900' + 'contrastLightColors': '700 800 900', + 'contrastStrongLightColors': '700 800 900' }, 'lime': { '50': '#f9fbe7', @@ -5387,7 +5435,7 @@ angular * * */ -function MdCheckboxDirective(inputDirective, $mdInkRipple, $mdAria, $mdConstant, $mdTheming, $mdUtil, $timeout) { +function MdCheckboxDirective(inputDirective, $mdAria, $mdConstant, $mdTheming, $mdUtil, $timeout) { inputDirective = inputDirective[0]; var CHECKED_CSS = 'md-checked'; @@ -5494,7 +5542,7 @@ function MdCheckboxDirective(inputDirective, $mdInkRipple, $mdAria, $mdConstant, }; } } -MdCheckboxDirective.$inject = ["inputDirective", "$mdInkRipple", "$mdAria", "$mdConstant", "$mdTheming", "$mdUtil", "$timeout"]; +MdCheckboxDirective.$inject = ["inputDirective", "$mdAria", "$mdConstant", "$mdTheming", "$mdUtil", "$timeout"]; })(); (function(){ @@ -5953,7 +6001,7 @@ function iosScrollFix(node) { * @param {Date=} opt_date */ CalendarCtrl.prototype.focus = function(opt_date) { - var date = opt_date || this.selectedDate; + var date = opt_date || this.selectedDate || this.today; var previousFocus = this.calendarElement.querySelector('.md-focus'); if (previousFocus) { @@ -6114,7 +6162,7 @@ function iosScrollFix(node) { // of repeated items that are linked, and then those elements have their bindings updataed. // Since the months are not generated by bindings, we simply regenerate the entire thing // when the binding (offset) changes. - scope.$watch(function() { return monthCtrl.offset }, function(offset, oldOffset) { + scope.$watch(function() { return monthCtrl.offset; }, function(offset, oldOffset) { if (offset != oldOffset) { monthCtrl.generateContent(); } @@ -6143,11 +6191,11 @@ function iosScrollFix(node) { this.calendarCtrl = null; /** - * Number of months from the start of the month "items" - * that the currently rendered month occurs. + * Number of months from the start of the month "items" that the currently rendered month + * occurs. Set via angular data binding. * @type {number} */ - this.offset = 0; + this.offset; /** * Date cell to focus after appending the month to the document. @@ -6479,7 +6527,7 @@ function iosScrollFix(node) { * @returns {string} */ function defaultFormatDate(date) { - return date.toLocaleDateString(); + return date ? date.toLocaleDateString() : ''; } /** @@ -6609,6 +6657,7 @@ function iosScrollFix(node) { * @module material.components.datepicker * * @param {Date} ng-model The component's model. Expects a JavaScript Date object. + * @param {expression=} ng-change Expression evaluated when the model value changes. * @param {boolean=} disabled Whether the datepicker is disabled. * * @description @@ -6637,7 +6686,8 @@ function iosScrollFix(node) { 'ng-class="{\'md-datepicker-focused\': ctrl.isFocused}">' + '' + - '' + '
' + @@ -6646,7 +6696,9 @@ function iosScrollFix(node) { // This pane will be detached from here and re-attached to the document body. '
' + - '
' + + '
' + + '
' + + '
' + '
' + '' + @@ -6720,6 +6772,12 @@ function iosScrollFix(node) { /** @type {HTMLElement} Calendar icon button. */ this.calendarButton = $element[0].querySelector('.md-datepicker-button'); + /** + * Element covering everything but the input in the top of the floating calendar pane. + * @type {HTMLElement} + */ + this.inputMask = $element[0].querySelector('.md-datepicker-input-mask-opaque'); + /** @final {!angular.JQLite} */ this.$element = $element; @@ -6765,7 +6823,7 @@ function iosScrollFix(node) { this.installPropertyInterceptors(); this.attachChangeListeners(); - this.attachInterationListeners(); + this.attachInteractionListeners(); var self = this; $scope.$on('$destroy', function() { @@ -6799,18 +6857,22 @@ function iosScrollFix(node) { self.$scope.$on('md-calendar-change', function(event, date) { self.ngModelCtrl.$setViewValue(date); + self.date = date; self.inputElement.value = self.dateLocale.formatDate(date); self.closeCalendarPane(); + self.resizeInputElement(); + self.inputContainer.classList.remove(INVALID_CLASS); }); - self.inputElement.addEventListener('input', angular.bind(self, self.resizeInputElement)); + var ngElement = angular.element(self.inputElement); + ngElement.on('input', angular.bind(self, self.resizeInputElement)); // TODO(chenmike): Add ability for users to specify this interval. - self.inputElement.addEventListener('input', self.$mdUtil.debounce(self.handleInputEvent, + ngElement.on('input', self.$mdUtil.debounce(self.handleInputEvent, DEFAULT_DEBOUNCE_INTERVAL, self)); }; /** Attach event listeners for user interaction. */ - DatePickerCtrl.prototype.attachInterationListeners = function() { + DatePickerCtrl.prototype.attachInteractionListeners = function() { var self = this; var $scope = this.$scope; var keyCodes = this.$mdConstant.KEY_CODE; @@ -6845,7 +6907,7 @@ function iosScrollFix(node) { Object.defineProperty(this, 'placeholder', { get: function() { return self.inputElement.placeholder; }, - set: function(value) { self.inputElement.placeholder = value; } + set: function(value) { self.inputElement.placeholder = value || ''; } }); }; @@ -6878,7 +6940,6 @@ function iosScrollFix(node) { this.ngModelCtrl.$setViewValue(parsedDate); this.date = parsedDate; this.inputContainer.classList.remove(INVALID_CLASS); - this.$scope.$apply(); } else { // If there's an input string, it's an invalid date. this.inputContainer.classList.toggle(INVALID_CLASS, inputString); @@ -6897,6 +6958,12 @@ function iosScrollFix(node) { calendarPane.style.top = (elementRect.top - bodyRect.top) + 'px'; document.body.appendChild(this.calendarPane); + // The top of the calendar pane is a transparent box that shows the text input underneath. + // Since the pane is flowing, though, the page underneath the pane *adjacent* to the input is + // also shown unless we cover it up. The inputMask does this by filling up the remaining space + // based on the width of the input. + this.inputMask.style.left = elementRect.width + 'px'; + // Add CSS class after one frame to trigger open animation. this.$$rAF(function() { calendarPane.classList.add('md-pane-open'); @@ -6908,9 +6975,11 @@ function iosScrollFix(node) { this.$element.removeClass('md-datepicker-open'); this.calendarPane.classList.remove('md-pane-open'); - // Use native DOM removal because we do not want any of the angular state of this element - // to be disposed. - this.calendarPane.parentNode.removeChild(this.calendarPane); + if (this.calendarPane.parentNode) { + // Use native DOM removal because we do not want any of the angular state of this element + // to be disposed. + this.calendarPane.parentNode.removeChild(this.calendarPane); + } }; /** @@ -7182,7 +7251,7 @@ function iosScrollFix(node) { * @return {boolean} Whether the date is a valid Date. */ function isValidDate(date) { - return date !== null && date.getTime && !isNaN(date.getTime()); + return date != null && date.getTime && !isNaN(date.getTime()); } /** @@ -8746,7 +8815,7 @@ MdDividerDirective.$inject = ["$mdTheming"]; '
', scope: { - direction: '=?mdDirection', + direction: '@?mdDirection', isOpen: '=?mdOpen' }, @@ -10662,6 +10731,7 @@ function inputTextareaDirective($mdUtil, $window, $mdAria) { function postLink(scope, element, attr, ctrls) { var containerCtrl = ctrls[0]; + var hasNgModel = !!ctrls[1]; var ngModelCtrl = ctrls[1] || $mdUtil.fakeNgModel(); var isReadonly = angular.isDefined(attr.readonly); @@ -10684,6 +10754,13 @@ function inputTextareaDirective($mdUtil, $window, $mdAria) { setupTextarea(); } + // If the input doesn't have an ngModel, it may have a static value. For that case, + // we have to do one initial check to determine if the container should be in the + // "has a value" state. + if (!hasNgModel) { + inputCheckValue(); + } + var isErrorGetter = containerCtrl.isErrorGetter || function() { return ngModelCtrl.$invalid && ngModelCtrl.$touched; }; @@ -11311,7 +11388,7 @@ angular.module('material.components.menu', [ * */ -function MenuDirective($mdMenu) { +function MenuDirective() { var INVALID_PREFIX = 'Invalid HTML for md-menu: '; return { restrict: 'E', @@ -11352,7 +11429,6 @@ function MenuDirective($mdMenu) { } } -MenuDirective.$inject = ["$mdMenu"]; function MenuController($mdMenu, $attrs, $element, $scope) { var menuContainer; @@ -13114,7 +13190,7 @@ function OptionDirective($mdButtonInkRipple, $mdUtil) { if (angular.isDefined(attr.ngValue)) { scope.$watch(attr.ngValue, setOptionValue); } else if (angular.isDefined(attr.value)) { - setOptionValue(attr.value); + setOptionValue(isNaN(attr.value) ? attr.value : Number(attr.value)); } else { scope.$watch(function() { return element.text(); @@ -13564,6 +13640,7 @@ function SelectProvider($$interimElementProvider) { function checkCloseMenu(ev) { if (ev && ( ev.type == 'mouseup') && (ev.currentTarget != dropDown[0])) return; + if ( mouseOnScrollbar() ) return; if (!selectCtrl.isMultiple) { opts.restoreFocus = true; @@ -13572,6 +13649,23 @@ function SelectProvider($$interimElementProvider) { $mdSelect.hide(selectCtrl.ngModel.$viewValue); }, true); } + + /** + * check if the mouseup event was on a scrollbar + */ + function mouseOnScrollbar() { + var clickOnScrollbar = false; + if(ev.currentTarget.children.length > 0) { + var child = ev.currentTarget.children[0]; + var hasScrollbar = child.scrollHeight > child.clientHeight; + if (hasScrollbar && child.children.length > 0) { + var relPosX = ev.pageX - ev.currentTarget.getBoundingClientRect().left; + if(relPosX > child.children[0].offsetWidth) + clickOnScrollbar = true; + } + } + return clickOnScrollbar; + } } } @@ -14945,46 +15039,57 @@ angular.module('material.components.subheader', [ * */ -function MdSubheaderDirective($mdSticky, $compile, $mdTheming) { +function MdSubheaderDirective($mdSticky, $compile, $mdTheming, $mdUtil) { return { restrict: 'E', replace: true, transclude: true, - template: - '

' + - '
' + - '' + - '
' + - '

', - compile: function(element, attr, transclude) { - return function postLink(scope, element, attr) { - $mdTheming(element); - var outerHTML = element[0].outerHTML; + template: ( + '

' + + '
' + + ' ' + + '
' + + '

' + ), + link: function postLink(scope, element, attr, controllers, transclude) { + $mdTheming(element); + var outerHTML = element[0].outerHTML; - function getContent(el) { - return angular.element(el[0].querySelector('.md-subheader-content')); - } + function getContent(el) { + return angular.element(el[0].querySelector('.md-subheader-content')); + } - // Transclude the user-given contents of the subheader - // the conventional way. + // Transclude the user-given contents of the subheader + // the conventional way. + transclude(scope, function(clone) { + getContent(element).append(clone); + }); + + // Create another clone, that uses the outer and inner contents + // of the element, that will be 'stickied' as the user scrolls. + if (!element.hasClass('md-no-sticky')) { transclude(scope, function(clone) { - getContent(element).append(clone); - }); + // If the user adds an ng-if or ng-repeat directly to the md-subheader element, the + // compiled clone below will only be a comment tag (since they replace their elements with + // a comment) which cannot be properly passed to the $mdSticky; so we wrap it in our own + // DIV to ensure we have something $mdSticky can use + var wrapperHtml = '
' + outerHTML + '
'; + var stickyClone = $compile(wrapperHtml)(scope); - // Create another clone, that uses the outer and inner contents - // of the element, that will be 'stickied' as the user scrolls. - if (!element.hasClass('md-no-sticky')) { - transclude(scope, function(clone) { - var stickyClone = $compile(angular.element(outerHTML))(scope); + // Append the sticky + $mdSticky(scope, element, stickyClone); + + // Delay initialization until after any `ng-if`/`ng-repeat`/etc has finished before + // attempting to create the clone + $mdUtil.nextTick(function() { getContent(stickyClone).append(clone); - $mdSticky(scope, element, stickyClone); }); - } - }; + }); + } } - }; + } } -MdSubheaderDirective.$inject = ["$mdSticky", "$compile", "$mdTheming"]; +MdSubheaderDirective.$inject = ["$mdSticky", "$compile", "$mdTheming", "$mdUtil"]; })(); (function(){ @@ -15822,7 +15927,25 @@ function MdTooltipDirective($timeout, $window, $$rAF, $document, $mdUtil, $mdThe function bindEvents () { var mouseActive = false; - var enterHandler = function() { + + var ngWindow = angular.element($window); + + // Store whether the element was focused when the window loses focus. + var windowBlurHandler = function() { + elementFocusedOnWindowBlur = document.activeElement === parent[0]; + }; + var elementFocusedOnWindowBlur = false; + ngWindow.on('blur', windowBlurHandler); + scope.$on('$destroy', function() { + ngWindow.off('blur', windowBlurHandler); + }); + + var enterHandler = function(e) { + // Prevent the tooltip from showing when the window is receiving focus. + if (e.type === 'focus' && elementFocusedOnWindowBlur) { + elementFocusedOnWindowBlur = false; + return; + } parent.on('blur mouseleave touchend touchcancel', leaveHandler ); setVisible(true); }; @@ -16271,6 +16394,15 @@ VirtualRepeatContainerController.prototype.handleScroll_ = function() { * @param {string=} md-extra-name Evaluates to an additional name to which * the current iterated item can be assigned on the repeated scope. (Needed * for use in md-autocomplete). + * @param {boolean=} md-on-demand When present, treats the md-virtual-repeat argument + * as an object that can fetch rows rather than an array. + * NOTE: This object must implement the following interface with two (2) methods: + * getItemAtIndex: function(index) -> item at that index or null if it is not yet + * loaded (It should start downloading the item in that case). + * getLength: function() -> number The data legnth to which the repeater container + * should be sized. Ideally, when the count is known, this method should return it. + * Otherwise, return a higher number than the currently loaded items to produce an + * infinite-scroll behavior. */ function VirtualRepeatDirective($parse) { return { @@ -16305,12 +16437,16 @@ function VirtualRepeatController($scope, $element, $attrs, $browser, $document, this.$document = $document; this.$$rAF = $$rAF; + /** @type {boolean} Whether we are in on-demand mode. */ + this.onDemand = $attrs.hasOwnProperty('mdOnDemand'); /** @type {!Function} Backup reference to $browser.$$checkUrlChange */ this.browserCheckUrlChange = $browser.$$checkUrlChange; /** @type {number} Most recent starting repeat index (based on scroll offset) */ this.newStartIndex = 0; /** @type {number} Most recent ending repeat index (based on scroll offset) */ this.newEndIndex = 0; + /** @type {number} Most recent end visible index (based on scroll offset) */ + this.newVisibleEnd = 0; /** @type {number} Previous starting repeat index (based on scroll offset) */ this.startIndex = 0; /** @type {number} Previous ending repeat index (based on scroll offset) */ @@ -16365,10 +16501,12 @@ VirtualRepeatController.prototype.link_ = this.container = container; this.transclude = transclude; this.repeatName = repeatName; - this.repeatListExpression = repeatListExpression; + this.rawRepeatListExpression = repeatListExpression; this.extraName = extraName; this.sized = false; + this.repeatListExpression = angular.bind(this, this.repeatListExpression_); + this.container.register(this); }; @@ -16396,6 +16534,25 @@ VirtualRepeatController.prototype.readItemSize_ = function() { }; +/** + * Returns the user-specified repeat list, transforming it into an array-like + * object in the case of infinite scroll/dynamic load mode. + * @param {!angular.Scope} The scope. + * @return {!Array|!Object} An array or array-like object for iteration. + */ +VirtualRepeatController.prototype.repeatListExpression_ = function(scope) { + var repeatList = this.rawRepeatListExpression(scope); + + if (this.onDemand && repeatList) { + var virtualList = new VirtualRepeatModelArrayLike(repeatList); + virtualList.$$includeIndexes(this.newStartIndex, this.newVisibleEnd); + return virtualList; + } else { + return repeatList; + } +}; + + /** * Called by the container. Informs us that the containers scroll or size has * changed. @@ -16429,6 +16586,9 @@ VirtualRepeatController.prototype.containerUpdated = function() { if (this.newStartIndex !== this.startIndex || this.newEndIndex !== this.endIndex || this.container.getScrollOffset() > this.container.getScrollSize()) { + if (this.items instanceof VirtualRepeatModelArrayLike) { + this.items.$$includeIndexes(this.newStartIndex, this.newEndIndex); + } this.virtualRepeatUpdate_(this.items, this.items); } }; @@ -16465,7 +16625,7 @@ VirtualRepeatController.prototype.virtualRepeatUpdate_ = function(items, oldItem } this.items = items; - if (items !== oldItems) { + if (items !== oldItems || lengthChanged) { this.updateIndexes_(); } @@ -16646,10 +16806,59 @@ VirtualRepeatController.prototype.updateIndexes_ = function() { this.newStartIndex = Math.max(0, Math.min( itemsLength - containerLength, Math.floor(this.container.getScrollOffset() / this.itemSize))); - this.newEndIndex = Math.min(itemsLength, this.newStartIndex + containerLength + NUM_EXTRA); + this.newVisibleEnd = this.newStartIndex + containerLength + NUM_EXTRA; + this.newEndIndex = Math.min(itemsLength, this.newVisibleEnd); this.newStartIndex = Math.max(0, this.newStartIndex - NUM_EXTRA); }; +/** + * This VirtualRepeatModelArrayLike class enforces the interface requirements + * for infinite scrolling within a mdVirtualRepeatContainer. An object with this + * interface must implement the following interface with two (2) methods: + * + * getItemAtIndex: function(index) -> item at that index or null if it is not yet + * loaded (It should start downloading the item in that case). + * + * getLength: function() -> number The data legnth to which the repeater container + * should be sized. Ideally, when the count is known, this method should return it. + * Otherwise, return a higher number than the currently loaded items to produce an + * infinite-scroll behavior. + * + * @usage + * + * + *
+ * Hello {{i}}! + *
+ *
+ *
+ * + */ +function VirtualRepeatModelArrayLike(model) { + if (!angular.isFunction(model.getItemAtIndex) || + !angular.isFunction(model.getLength)) { + throw Error('When md-on-demand is enabled, the Object passed to md-virtual-repeat must implement ' + + 'functions getItemAtIndex() and getLength() '); + } + + this.model = model; +} + + +VirtualRepeatModelArrayLike.prototype.$$includeIndexes = function(start, end) { + for (var i = start; i < end; i++) { + if (!this.hasOwnProperty(i)) { + this[i] = this.model.getItemAtIndex(i); + } + } + this.length = this.model.getLength(); +}; + + +function abstractMethod() { + throw Error('Non-overridden abstract method called.'); +} + })(); (function(){ "use strict"; @@ -17857,6 +18066,7 @@ function MdChipTransclude ($compile) { newScope = ctrl.parent.$new(false, ctrl.parent); newScope.$$replacedScope = scope; newScope.$chip = scope.$chip; + newScope.$index = scope.$index; newScope.$mdChipsCtrl = ctrl; var newHtml = ctrl.$scope.$eval(attr.mdChipTransclude); @@ -19906,7 +20116,7 @@ MdTabsTemplate.$inject = ["$compile", "$mdUtil"]; })(); (function(){ -angular.module("material.core").constant("$MD_THEME_CSS", "/* mixin definition ; sets LTR and RTL within the same style call *//** * Position a FAB button. */md-autocomplete.md-THEME_NAME-theme { background: '{{background-50}}'; } md-autocomplete.md-THEME_NAME-theme[disabled] { background: '{{background-100}}'; } md-autocomplete.md-THEME_NAME-theme button md-icon path { fill: '{{background-600}}'; } md-autocomplete.md-THEME_NAME-theme button:after { background: '{{background-600-0.3}}'; }.md-autocomplete-suggestions.md-THEME_NAME-theme { background: '{{background-50}}'; } .md-autocomplete-suggestions.md-THEME_NAME-theme li { color: '{{background-900}}'; } .md-autocomplete-suggestions.md-THEME_NAME-theme li .highlight { color: '{{background-600}}'; } .md-autocomplete-suggestions.md-THEME_NAME-theme li:hover, .md-autocomplete-suggestions.md-THEME_NAME-theme li.selected { background: '{{background-200}}'; }md-backdrop { background-color: '{{background-900-0.0}}'; } md-backdrop.md-opaque.md-THEME_NAME-theme { background-color: '{{background-900-0.48}}'; } md-backdrop.md-opaque.md-THEME_NAME-theme.ng-enter { background-color: '{{background-900-0.0}}'; } md-backdrop.md-opaque.md-THEME_NAME-theme.ng-enter.md-opaque.md-THEME_NAME-theme.ng-enter-active { background-color: '{{background-900-0.48}}'; } md-backdrop.md-opaque.md-THEME_NAME-theme.ng-leave.md-opaque.md-THEME_NAME-theme.ng-leave-active { background-color: '{{background-900-0.0}}'; }md-bottom-sheet.md-THEME_NAME-theme { background-color: '{{background-50}}'; border-top-color: '{{background-300}}'; } md-bottom-sheet.md-THEME_NAME-theme.md-list md-list-item { color: '{{foreground-1}}'; } md-bottom-sheet.md-THEME_NAME-theme .md-subheader { background-color: '{{background-50}}'; } md-bottom-sheet.md-THEME_NAME-theme .md-subheader { color: '{{foreground-1}}'; }a.md-button.md-THEME_NAME-theme:not([disabled]):hover, .md-button.md-THEME_NAME-theme:not([disabled]):hover { background-color: '{{background-500-0.2}}'; }a.md-button.md-THEME_NAME-theme:not([disabled]).md-focused, .md-button.md-THEME_NAME-theme:not([disabled]).md-focused { background-color: '{{background-500-0.2}}'; }a.md-button.md-THEME_NAME-theme:not([disabled]).md-icon-button:hover, .md-button.md-THEME_NAME-theme:not([disabled]).md-icon-button:hover { background-color: transparent; }a.md-button.md-THEME_NAME-theme.md-fab, .md-button.md-THEME_NAME-theme.md-fab { background-color: '{{accent-color}}'; color: '{{accent-contrast}}'; } a.md-button.md-THEME_NAME-theme.md-fab md-icon, .md-button.md-THEME_NAME-theme.md-fab md-icon { color: '{{accent-contrast}}'; } a.md-button.md-THEME_NAME-theme.md-fab:not([disabled]):hover, .md-button.md-THEME_NAME-theme.md-fab:not([disabled]):hover { background-color: '{{accent-color}}'; } a.md-button.md-THEME_NAME-theme.md-fab:not([disabled]).md-focused, .md-button.md-THEME_NAME-theme.md-fab:not([disabled]).md-focused { background-color: '{{accent-A700}}'; }a.md-button.md-THEME_NAME-theme.md-primary, .md-button.md-THEME_NAME-theme.md-primary { color: '{{primary-color}}'; } a.md-button.md-THEME_NAME-theme.md-primary.md-raised, a.md-button.md-THEME_NAME-theme.md-primary.md-fab, .md-button.md-THEME_NAME-theme.md-primary.md-raised, .md-button.md-THEME_NAME-theme.md-primary.md-fab { color: '{{primary-contrast}}'; background-color: '{{primary-color}}'; } a.md-button.md-THEME_NAME-theme.md-primary.md-raised:not([disabled]) md-icon, a.md-button.md-THEME_NAME-theme.md-primary.md-fab:not([disabled]) md-icon, .md-button.md-THEME_NAME-theme.md-primary.md-raised:not([disabled]) md-icon, .md-button.md-THEME_NAME-theme.md-primary.md-fab:not([disabled]) md-icon { color: '{{primary-contrast}}'; } a.md-button.md-THEME_NAME-theme.md-primary.md-raised:not([disabled]):hover, a.md-button.md-THEME_NAME-theme.md-primary.md-fab:not([disabled]):hover, .md-button.md-THEME_NAME-theme.md-primary.md-raised:not([disabled]):hover, .md-button.md-THEME_NAME-theme.md-primary.md-fab:not([disabled]):hover { background-color: '{{primary-color}}'; } a.md-button.md-THEME_NAME-theme.md-primary.md-raised:not([disabled]).md-focused, a.md-button.md-THEME_NAME-theme.md-primary.md-fab:not([disabled]).md-focused, .md-button.md-THEME_NAME-theme.md-primary.md-raised:not([disabled]).md-focused, .md-button.md-THEME_NAME-theme.md-primary.md-fab:not([disabled]).md-focused { background-color: '{{primary-600}}'; } a.md-button.md-THEME_NAME-theme.md-primary:not([disabled]) md-icon, .md-button.md-THEME_NAME-theme.md-primary:not([disabled]) md-icon { color: '{{primary-color}}'; }a.md-button.md-THEME_NAME-theme.md-fab, .md-button.md-THEME_NAME-theme.md-fab { background-color: '{{accent-color}}'; color: '{{accent-contrast}}'; } a.md-button.md-THEME_NAME-theme.md-fab:not([disabled]) .md-icon, .md-button.md-THEME_NAME-theme.md-fab:not([disabled]) .md-icon { color: '{{accent-contrast}}'; } a.md-button.md-THEME_NAME-theme.md-fab:not([disabled]):hover, .md-button.md-THEME_NAME-theme.md-fab:not([disabled]):hover { background-color: '{{accent-color}}'; } a.md-button.md-THEME_NAME-theme.md-fab:not([disabled]).md-focused, .md-button.md-THEME_NAME-theme.md-fab:not([disabled]).md-focused { background-color: '{{accent-A700}}'; }a.md-button.md-THEME_NAME-theme.md-raised, .md-button.md-THEME_NAME-theme.md-raised { color: '{{background-contrast}}'; background-color: '{{background-50}}'; } a.md-button.md-THEME_NAME-theme.md-raised:not([disabled]) .md-icon, .md-button.md-THEME_NAME-theme.md-raised:not([disabled]) .md-icon { color: '{{background-contrast}}'; } a.md-button.md-THEME_NAME-theme.md-raised:not([disabled]):hover, .md-button.md-THEME_NAME-theme.md-raised:not([disabled]):hover { background-color: '{{background-50}}'; } a.md-button.md-THEME_NAME-theme.md-raised:not([disabled]).md-focused, .md-button.md-THEME_NAME-theme.md-raised:not([disabled]).md-focused { background-color: '{{background-200}}'; }a.md-button.md-THEME_NAME-theme.md-warn, .md-button.md-THEME_NAME-theme.md-warn { color: '{{warn-color}}'; } a.md-button.md-THEME_NAME-theme.md-warn.md-raised, a.md-button.md-THEME_NAME-theme.md-warn.md-fab, .md-button.md-THEME_NAME-theme.md-warn.md-raised, .md-button.md-THEME_NAME-theme.md-warn.md-fab { color: '{{warn-contrast}}'; background-color: '{{warn-color}}'; } a.md-button.md-THEME_NAME-theme.md-warn.md-raised:not([disabled]) md-icon, a.md-button.md-THEME_NAME-theme.md-warn.md-fab:not([disabled]) md-icon, .md-button.md-THEME_NAME-theme.md-warn.md-raised:not([disabled]) md-icon, .md-button.md-THEME_NAME-theme.md-warn.md-fab:not([disabled]) md-icon { color: '{{warn-contrast}}'; } a.md-button.md-THEME_NAME-theme.md-warn.md-raised:not([disabled]):hover, a.md-button.md-THEME_NAME-theme.md-warn.md-fab:not([disabled]):hover, .md-button.md-THEME_NAME-theme.md-warn.md-raised:not([disabled]):hover, .md-button.md-THEME_NAME-theme.md-warn.md-fab:not([disabled]):hover { background-color: '{{warn-color}}'; } a.md-button.md-THEME_NAME-theme.md-warn.md-raised:not([disabled]).md-focused, a.md-button.md-THEME_NAME-theme.md-warn.md-fab:not([disabled]).md-focused, .md-button.md-THEME_NAME-theme.md-warn.md-raised:not([disabled]).md-focused, .md-button.md-THEME_NAME-theme.md-warn.md-fab:not([disabled]).md-focused { background-color: '{{warn-700}}'; } a.md-button.md-THEME_NAME-theme.md-warn:not([disabled]) md-icon, .md-button.md-THEME_NAME-theme.md-warn:not([disabled]) md-icon { color: '{{warn-color}}'; }a.md-button.md-THEME_NAME-theme.md-accent, .md-button.md-THEME_NAME-theme.md-accent { color: '{{accent-color}}'; } a.md-button.md-THEME_NAME-theme.md-accent.md-raised, a.md-button.md-THEME_NAME-theme.md-accent.md-fab, .md-button.md-THEME_NAME-theme.md-accent.md-raised, .md-button.md-THEME_NAME-theme.md-accent.md-fab { color: '{{accent-contrast}}'; background-color: '{{accent-color}}'; } a.md-button.md-THEME_NAME-theme.md-accent.md-raised:not([disabled]) md-icon, a.md-button.md-THEME_NAME-theme.md-accent.md-fab:not([disabled]) md-icon, .md-button.md-THEME_NAME-theme.md-accent.md-raised:not([disabled]) md-icon, .md-button.md-THEME_NAME-theme.md-accent.md-fab:not([disabled]) md-icon { color: '{{accent-contrast}}'; } a.md-button.md-THEME_NAME-theme.md-accent.md-raised:not([disabled]):hover, a.md-button.md-THEME_NAME-theme.md-accent.md-fab:not([disabled]):hover, .md-button.md-THEME_NAME-theme.md-accent.md-raised:not([disabled]):hover, .md-button.md-THEME_NAME-theme.md-accent.md-fab:not([disabled]):hover { background-color: '{{accent-color}}'; } a.md-button.md-THEME_NAME-theme.md-accent.md-raised:not([disabled]).md-focused, a.md-button.md-THEME_NAME-theme.md-accent.md-fab:not([disabled]).md-focused, .md-button.md-THEME_NAME-theme.md-accent.md-raised:not([disabled]).md-focused, .md-button.md-THEME_NAME-theme.md-accent.md-fab:not([disabled]).md-focused { background-color: '{{accent-700}}'; } a.md-button.md-THEME_NAME-theme.md-accent:not([disabled]) md-icon, .md-button.md-THEME_NAME-theme.md-accent:not([disabled]) md-icon { color: '{{accent-color}}'; }a.md-button.md-THEME_NAME-theme[disabled], a.md-button.md-THEME_NAME-theme.md-raised[disabled], a.md-button.md-THEME_NAME-theme.md-fab[disabled], a.md-button.md-THEME_NAME-theme.md-accent[disabled], a.md-button.md-THEME_NAME-theme.md-warn[disabled], .md-button.md-THEME_NAME-theme[disabled], .md-button.md-THEME_NAME-theme.md-raised[disabled], .md-button.md-THEME_NAME-theme.md-fab[disabled], .md-button.md-THEME_NAME-theme.md-accent[disabled], .md-button.md-THEME_NAME-theme.md-warn[disabled] { color: '{{foreground-3}}'; cursor: not-allowed; } a.md-button.md-THEME_NAME-theme[disabled] md-icon, a.md-button.md-THEME_NAME-theme.md-raised[disabled] md-icon, a.md-button.md-THEME_NAME-theme.md-fab[disabled] md-icon, a.md-button.md-THEME_NAME-theme.md-accent[disabled] md-icon, a.md-button.md-THEME_NAME-theme.md-warn[disabled] md-icon, .md-button.md-THEME_NAME-theme[disabled] md-icon, .md-button.md-THEME_NAME-theme.md-raised[disabled] md-icon, .md-button.md-THEME_NAME-theme.md-fab[disabled] md-icon, .md-button.md-THEME_NAME-theme.md-accent[disabled] md-icon, .md-button.md-THEME_NAME-theme.md-warn[disabled] md-icon { color: '{{foreground-3}}'; }a.md-button.md-THEME_NAME-theme.md-raised[disabled], a.md-button.md-THEME_NAME-theme.md-fab[disabled], .md-button.md-THEME_NAME-theme.md-raised[disabled], .md-button.md-THEME_NAME-theme.md-fab[disabled] { background-color: '{{foreground-4}}'; }a.md-button.md-THEME_NAME-theme[disabled], .md-button.md-THEME_NAME-theme[disabled] { background-color: transparent; }md-card.md-THEME_NAME-theme { background-color: '{{background-color}}'; border-radius: 2px; } md-card.md-THEME_NAME-theme .md-card-image { border-radius: 2px 2px 0 0; }md-checkbox.md-THEME_NAME-theme .md-ripple { color: '{{accent-600}}'; }md-checkbox.md-THEME_NAME-theme.md-checked .md-ripple { color: '{{background-600}}'; }md-checkbox.md-THEME_NAME-theme.md-checked.md-focused .md-container:before { background-color: '{{accent-color-0.26}}'; }md-checkbox.md-THEME_NAME-theme .md-icon { border-color: '{{foreground-2}}'; }md-checkbox.md-THEME_NAME-theme.md-checked .md-icon { background-color: '{{accent-color-0.87}}'; }md-checkbox.md-THEME_NAME-theme.md-checked .md-icon:after { border-color: '{{background-200}}'; }md-checkbox.md-THEME_NAME-theme:not([disabled]).md-primary .md-ripple { color: '{{primary-600}}'; }md-checkbox.md-THEME_NAME-theme:not([disabled]).md-primary.md-checked .md-ripple { color: '{{background-600}}'; }md-checkbox.md-THEME_NAME-theme:not([disabled]).md-primary .md-icon { border-color: '{{foreground-2}}'; }md-checkbox.md-THEME_NAME-theme:not([disabled]).md-primary.md-checked .md-icon { background-color: '{{primary-color-0.87}}'; }md-checkbox.md-THEME_NAME-theme:not([disabled]).md-primary.md-checked.md-focused .md-container:before { background-color: '{{primary-color-0.26}}'; }md-checkbox.md-THEME_NAME-theme:not([disabled]).md-primary.md-checked .md-icon:after { border-color: '{{background-200}}'; }md-checkbox.md-THEME_NAME-theme:not([disabled]).md-warn .md-ripple { color: '{{warn-600}}'; }md-checkbox.md-THEME_NAME-theme:not([disabled]).md-warn .md-icon { border-color: '{{foreground-2}}'; }md-checkbox.md-THEME_NAME-theme:not([disabled]).md-warn.md-checked .md-icon { background-color: '{{warn-color-0.87}}'; }md-checkbox.md-THEME_NAME-theme:not([disabled]).md-warn.md-checked.md-focused:not([disabled]) .md-container:before { background-color: '{{warn-color-0.26}}'; }md-checkbox.md-THEME_NAME-theme:not([disabled]).md-warn.md-checked .md-icon:after { border-color: '{{background-200}}'; }md-checkbox.md-THEME_NAME-theme[disabled] .md-icon { border-color: '{{foreground-3}}'; }md-checkbox.md-THEME_NAME-theme[disabled].md-checked .md-icon { background-color: '{{foreground-3}}'; }md-checkbox.md-THEME_NAME-theme[disabled] .md-label { color: '{{foreground-3}}'; }md-chips.md-THEME_NAME-theme .md-chips { box-shadow: 0 1px '{{background-300}}'; } md-chips.md-THEME_NAME-theme .md-chips.md-focused { box-shadow: 0 2px '{{primary-color}}'; }md-chips.md-THEME_NAME-theme .md-chip { background: '{{background-300}}'; color: '{{background-800}}'; } md-chips.md-THEME_NAME-theme .md-chip.md-focused { background: '{{primary-color}}'; color: '{{primary-contrast}}'; } md-chips.md-THEME_NAME-theme .md-chip.md-focused md-icon { color: '{{primary-contrast}}'; }md-chips.md-THEME_NAME-theme md-chip-remove .md-button md-icon path { fill: '{{background-500}}'; }.md-contact-suggestion span.md-contact-email { color: '{{background-400}}'; }md-content.md-THEME_NAME-theme { color: '{{foreground-1}}'; background-color: '{{background-color}}'; }/** Theme styles for mdCalendar. */.md-calendar.md-THEME_NAME-theme { color: '{{foreground-2}}'; } .md-calendar.md-THEME_NAME-theme tr:last-child td { border-bottom-color: '{{background-200}}'; }.md-THEME_NAME-theme .md-calendar-day-header { background: '{{background-200}}'; color: '{{foreground-2}}'; }.md-THEME_NAME-theme .md-calendar-date.md-calendar-date-today { color: '{{primary-500}}'; }.md-THEME_NAME-theme .md-calendar-date.md-focus .md-calendar-date-selection-indicator { background: '{{background-300}}'; }.md-THEME_NAME-theme .md-calendar-date-selection-indicator:hover { background: '{{background-300}}'; }.md-THEME_NAME-theme .md-calendar-date.md-calendar-selected-date .md-calendar-date-selection-indicator, .md-THEME_NAME-theme .md-calendar-date.md-focus.md-calendar-selected-date .md-calendar-date-selection-indicator { background: '{{primary-500}}'; color: '{{primary-500-contrast}}'; }/** Theme styles for mdDatepicker. */md-datepicker.md-THEME_NAME-theme { background: white; }.md-THEME_NAME-theme .md-datepicker-input-container { border-bottom-color: '{{background-300}}'; } .md-THEME_NAME-theme .md-datepicker-input-container.md-datepicker-focused { border-bottom-color: '{{primary-500}}'; } .md-THEME_NAME-theme .md-datepicker-input-container.md-datepicker-invalid { border-bottom-color: '{{warn-500}}'; }.md-THEME_NAME-theme .md-datepicker-calendar-pane { border-color: '{{background-300}}'; }.md-THEME_NAME-theme .md-datepicker-triangle-button:hover .md-datepicker-expand-triangle { border-top-color: '{{foreground-2}}'; }.md-THEME_NAME-theme .md-datepicker-open .md-datepicker-calendar-icon { fill: '{{primary-500}}'; }.md-THEME_NAME-theme .md-datepicker-calendar { background: white; }md-dialog.md-THEME_NAME-theme { border-radius: 4px; background-color: '{{background-color}}'; } md-dialog.md-THEME_NAME-theme.md-content-overflow .md-actions { border-top-color: '{{foreground-4}}'; }md-divider.md-THEME_NAME-theme { border-top-color: '{{foreground-4}}'; }md-icon.md-THEME_NAME-theme { color: '{{foreground-2}}'; } md-icon.md-THEME_NAME-theme.md-primary { color: '{{primary-color}}'; } md-icon.md-THEME_NAME-theme.md-accent { color: '{{accent-color}}'; } md-icon.md-THEME_NAME-theme.md-warn { color: '{{warn-color}}'; }md-input-container.md-THEME_NAME-theme .md-input { color: '{{foreground-1}}'; border-color: '{{foreground-4}}'; text-shadow: '{{foreground-shadow}}'; } md-input-container.md-THEME_NAME-theme .md-input::-webkit-input-placeholder, md-input-container.md-THEME_NAME-theme .md-input::-moz-placeholder, md-input-container.md-THEME_NAME-theme .md-input:-moz-placeholder, md-input-container.md-THEME_NAME-theme .md-input:-ms-input-placeholder { color: '{{foreground-3}}'; }md-input-container.md-THEME_NAME-theme > md-icon { color: '{{foreground-1}}'; }md-input-container.md-THEME_NAME-theme label, md-input-container.md-THEME_NAME-theme .md-placeholder { text-shadow: '{{foreground-shadow}}'; color: '{{foreground-3}}'; }md-input-container.md-THEME_NAME-theme ng-messages, md-input-container.md-THEME_NAME-theme [ng-message], md-input-container.md-THEME_NAME-theme [data-ng-message], md-input-container.md-THEME_NAME-theme [x-ng-message] { color: '{{warn-500}}'; }md-input-container.md-THEME_NAME-theme:not(.md-input-invalid).md-input-has-value label { color: '{{foreground-2}}'; }md-input-container.md-THEME_NAME-theme:not(.md-input-invalid).md-input-focused .md-input { border-color: '{{primary-500}}'; }md-input-container.md-THEME_NAME-theme:not(.md-input-invalid).md-input-focused label { color: '{{primary-500}}'; }md-input-container.md-THEME_NAME-theme:not(.md-input-invalid).md-input-focused md-icon { color: '{{primary-500}}'; }md-input-container.md-THEME_NAME-theme:not(.md-input-invalid).md-input-focused.md-accent .md-input { border-color: '{{accent-500}}'; }md-input-container.md-THEME_NAME-theme:not(.md-input-invalid).md-input-focused.md-accent label { color: '{{accent-500}}'; }md-input-container.md-THEME_NAME-theme:not(.md-input-invalid).md-input-focused.md-warn .md-input { border-color: '{{warn-500}}'; }md-input-container.md-THEME_NAME-theme:not(.md-input-invalid).md-input-focused.md-warn label { color: '{{warn-500}}'; }md-input-container.md-THEME_NAME-theme.md-input-invalid .md-input { border-color: '{{warn-500}}'; }md-input-container.md-THEME_NAME-theme.md-input-invalid.md-input-focused label { color: '{{warn-500}}'; }md-input-container.md-THEME_NAME-theme.md-input-invalid ng-message, md-input-container.md-THEME_NAME-theme.md-input-invalid data-ng-message, md-input-container.md-THEME_NAME-theme.md-input-invalid x-ng-message, md-input-container.md-THEME_NAME-theme.md-input-invalid [ng-message], md-input-container.md-THEME_NAME-theme.md-input-invalid [data-ng-message], md-input-container.md-THEME_NAME-theme.md-input-invalid [x-ng-message], md-input-container.md-THEME_NAME-theme.md-input-invalid .md-char-counter { color: '{{warn-500}}'; }md-input-container.md-THEME_NAME-theme .md-input[disabled], [disabled] md-input-container.md-THEME_NAME-theme .md-input { border-bottom-color: transparent; color: '{{foreground-3}}'; background-image: linear-gradient(to right, '{{foreground-3}}' 0%, '{{foreground-3}}' 33%, transparent 0%); background-image: -ms-linear-gradient(left, transparent 0%, '{{foreground-3}}' 100%); }md-list.md-THEME_NAME-theme md-list-item.md-2-line .md-list-item-text h3, md-list.md-THEME_NAME-theme md-list-item.md-2-line .md-list-item-text h4, md-list.md-THEME_NAME-theme md-list-item.md-3-line .md-list-item-text h3, md-list.md-THEME_NAME-theme md-list-item.md-3-line .md-list-item-text h4 { color: '{{foreground-1}}'; }md-list.md-THEME_NAME-theme md-list-item.md-2-line .md-list-item-text p, md-list.md-THEME_NAME-theme md-list-item.md-3-line .md-list-item-text p { color: '{{foreground-2}}'; }md-list.md-THEME_NAME-theme .md-proxy-focus.md-focused div.md-no-style { background-color: '{{background-100}}'; }md-list.md-THEME_NAME-theme md-list-item > md-icon { color: '{{foreground-2}}'; } md-list.md-THEME_NAME-theme md-list-item > md-icon.md-highlight { color: '{{primary-color}}'; } md-list.md-THEME_NAME-theme md-list-item > md-icon.md-highlight.md-accent { color: '{{accent-color}}'; }md-list.md-THEME_NAME-theme md-list-item button { background-color: '{{background-color}}'; } md-list.md-THEME_NAME-theme md-list-item button.md-button:not([disabled]):hover { background-color: '{{background-color}}'; }md-menu-content.md-THEME_NAME-theme { background-color: '{{background-color}}'; } md-menu-content.md-THEME_NAME-theme md-menu-divider { background-color: '{{foreground-4}}'; }md-progress-circular.md-THEME_NAME-theme { background-color: transparent; } md-progress-circular.md-THEME_NAME-theme .md-inner .md-gap { border-top-color: '{{primary-color}}'; border-bottom-color: '{{primary-color}}'; } md-progress-circular.md-THEME_NAME-theme .md-inner .md-left .md-half-circle, md-progress-circular.md-THEME_NAME-theme .md-inner .md-right .md-half-circle { border-top-color: '{{primary-color}}'; } md-progress-circular.md-THEME_NAME-theme .md-inner .md-right .md-half-circle { border-right-color: '{{primary-color}}'; } md-progress-circular.md-THEME_NAME-theme .md-inner .md-left .md-half-circle { border-left-color: '{{primary-color}}'; } md-progress-circular.md-THEME_NAME-theme.md-warn .md-inner .md-gap { border-top-color: '{{warn-color}}'; border-bottom-color: '{{warn-color}}'; } md-progress-circular.md-THEME_NAME-theme.md-warn .md-inner .md-left .md-half-circle, md-progress-circular.md-THEME_NAME-theme.md-warn .md-inner .md-right .md-half-circle { border-top-color: '{{warn-color}}'; } md-progress-circular.md-THEME_NAME-theme.md-warn .md-inner .md-right .md-half-circle { border-right-color: '{{warn-color}}'; } md-progress-circular.md-THEME_NAME-theme.md-warn .md-inner .md-left .md-half-circle { border-left-color: '{{warn-color}}'; } md-progress-circular.md-THEME_NAME-theme.md-accent .md-inner .md-gap { border-top-color: '{{accent-color}}'; border-bottom-color: '{{accent-color}}'; } md-progress-circular.md-THEME_NAME-theme.md-accent .md-inner .md-left .md-half-circle, md-progress-circular.md-THEME_NAME-theme.md-accent .md-inner .md-right .md-half-circle { border-top-color: '{{accent-color}}'; } md-progress-circular.md-THEME_NAME-theme.md-accent .md-inner .md-right .md-half-circle { border-right-color: '{{accent-color}}'; } md-progress-circular.md-THEME_NAME-theme.md-accent .md-inner .md-left .md-half-circle { border-left-color: '{{accent-color}}'; }md-progress-linear.md-THEME_NAME-theme .md-container { background-color: '{{primary-100}}'; }md-progress-linear.md-THEME_NAME-theme .md-bar { background-color: '{{primary-color}}'; }md-progress-linear.md-THEME_NAME-theme.md-warn .md-container { background-color: '{{warn-100}}'; }md-progress-linear.md-THEME_NAME-theme.md-warn .md-bar { background-color: '{{warn-color}}'; }md-progress-linear.md-THEME_NAME-theme.md-accent .md-container { background-color: '{{accent-100}}'; }md-progress-linear.md-THEME_NAME-theme.md-accent .md-bar { background-color: '{{accent-color}}'; }md-progress-linear.md-THEME_NAME-theme[md-mode=buffer].md-warn .md-bar1 { background-color: '{{warn-100}}'; }md-progress-linear.md-THEME_NAME-theme[md-mode=buffer].md-warn .md-dashed:before { background: radial-gradient('{{warn-100}}' 0%, '{{warn-100}}' 16%, transparent 42%); }md-progress-linear.md-THEME_NAME-theme[md-mode=buffer].md-accent .md-bar1 { background-color: '{{accent-100}}'; }md-progress-linear.md-THEME_NAME-theme[md-mode=buffer].md-accent .md-dashed:before { background: radial-gradient('{{accent-100}}' 0%, '{{accent-100}}' 16%, transparent 42%); }md-radio-button.md-THEME_NAME-theme .md-off { border-color: '{{foreground-2}}'; }md-radio-button.md-THEME_NAME-theme .md-on { background-color: '{{accent-color-0.87}}'; }md-radio-button.md-THEME_NAME-theme.md-checked .md-off { border-color: '{{accent-color-0.87}}'; }md-radio-button.md-THEME_NAME-theme.md-checked .md-ink-ripple { color: '{{accent-color-0.87}}'; }md-radio-button.md-THEME_NAME-theme .md-container .md-ripple { color: '{{accent-600}}'; }md-radio-group.md-THEME_NAME-theme:not([disabled]) .md-primary .md-on, md-radio-group.md-THEME_NAME-theme:not([disabled]).md-primary .md-on, md-radio-button.md-THEME_NAME-theme:not([disabled]) .md-primary .md-on, md-radio-button.md-THEME_NAME-theme:not([disabled]).md-primary .md-on { background-color: '{{primary-color-0.87}}'; }md-radio-group.md-THEME_NAME-theme:not([disabled]) .md-primary .md-checked .md-off, md-radio-group.md-THEME_NAME-theme:not([disabled]) .md-primary.md-checked .md-off, md-radio-group.md-THEME_NAME-theme:not([disabled]).md-primary .md-checked .md-off, md-radio-group.md-THEME_NAME-theme:not([disabled]).md-primary.md-checked .md-off, md-radio-button.md-THEME_NAME-theme:not([disabled]) .md-primary .md-checked .md-off, md-radio-button.md-THEME_NAME-theme:not([disabled]) .md-primary.md-checked .md-off, md-radio-button.md-THEME_NAME-theme:not([disabled]).md-primary .md-checked .md-off, md-radio-button.md-THEME_NAME-theme:not([disabled]).md-primary.md-checked .md-off { border-color: '{{primary-color-0.87}}'; }md-radio-group.md-THEME_NAME-theme:not([disabled]) .md-primary .md-checked .md-ink-ripple, md-radio-group.md-THEME_NAME-theme:not([disabled]) .md-primary.md-checked .md-ink-ripple, md-radio-group.md-THEME_NAME-theme:not([disabled]).md-primary .md-checked .md-ink-ripple, md-radio-group.md-THEME_NAME-theme:not([disabled]).md-primary.md-checked .md-ink-ripple, md-radio-button.md-THEME_NAME-theme:not([disabled]) .md-primary .md-checked .md-ink-ripple, md-radio-button.md-THEME_NAME-theme:not([disabled]) .md-primary.md-checked .md-ink-ripple, md-radio-button.md-THEME_NAME-theme:not([disabled]).md-primary .md-checked .md-ink-ripple, md-radio-button.md-THEME_NAME-theme:not([disabled]).md-primary.md-checked .md-ink-ripple { color: '{{primary-color-0.87}}'; }md-radio-group.md-THEME_NAME-theme:not([disabled]) .md-primary .md-container .md-ripple, md-radio-group.md-THEME_NAME-theme:not([disabled]).md-primary .md-container .md-ripple, md-radio-button.md-THEME_NAME-theme:not([disabled]) .md-primary .md-container .md-ripple, md-radio-button.md-THEME_NAME-theme:not([disabled]).md-primary .md-container .md-ripple { color: '{{primary-600}}'; }md-radio-group.md-THEME_NAME-theme:not([disabled]) .md-warn .md-on, md-radio-group.md-THEME_NAME-theme:not([disabled]).md-warn .md-on, md-radio-button.md-THEME_NAME-theme:not([disabled]) .md-warn .md-on, md-radio-button.md-THEME_NAME-theme:not([disabled]).md-warn .md-on { background-color: '{{warn-color-0.87}}'; }md-radio-group.md-THEME_NAME-theme:not([disabled]) .md-warn .md-checked .md-off, md-radio-group.md-THEME_NAME-theme:not([disabled]) .md-warn.md-checked .md-off, md-radio-group.md-THEME_NAME-theme:not([disabled]).md-warn .md-checked .md-off, md-radio-group.md-THEME_NAME-theme:not([disabled]).md-warn.md-checked .md-off, md-radio-button.md-THEME_NAME-theme:not([disabled]) .md-warn .md-checked .md-off, md-radio-button.md-THEME_NAME-theme:not([disabled]) .md-warn.md-checked .md-off, md-radio-button.md-THEME_NAME-theme:not([disabled]).md-warn .md-checked .md-off, md-radio-button.md-THEME_NAME-theme:not([disabled]).md-warn.md-checked .md-off { border-color: '{{warn-color-0.87}}'; }md-radio-group.md-THEME_NAME-theme:not([disabled]) .md-warn .md-checked .md-ink-ripple, md-radio-group.md-THEME_NAME-theme:not([disabled]) .md-warn.md-checked .md-ink-ripple, md-radio-group.md-THEME_NAME-theme:not([disabled]).md-warn .md-checked .md-ink-ripple, md-radio-group.md-THEME_NAME-theme:not([disabled]).md-warn.md-checked .md-ink-ripple, md-radio-button.md-THEME_NAME-theme:not([disabled]) .md-warn .md-checked .md-ink-ripple, md-radio-button.md-THEME_NAME-theme:not([disabled]) .md-warn.md-checked .md-ink-ripple, md-radio-button.md-THEME_NAME-theme:not([disabled]).md-warn .md-checked .md-ink-ripple, md-radio-button.md-THEME_NAME-theme:not([disabled]).md-warn.md-checked .md-ink-ripple { color: '{{warn-color-0.87}}'; }md-radio-group.md-THEME_NAME-theme:not([disabled]) .md-warn .md-container .md-ripple, md-radio-group.md-THEME_NAME-theme:not([disabled]).md-warn .md-container .md-ripple, md-radio-button.md-THEME_NAME-theme:not([disabled]) .md-warn .md-container .md-ripple, md-radio-button.md-THEME_NAME-theme:not([disabled]).md-warn .md-container .md-ripple { color: '{{warn-600}}'; }md-radio-group.md-THEME_NAME-theme[disabled], md-radio-button.md-THEME_NAME-theme[disabled] { color: '{{foreground-3}}'; } md-radio-group.md-THEME_NAME-theme[disabled] .md-container .md-off, md-radio-button.md-THEME_NAME-theme[disabled] .md-container .md-off { border-color: '{{foreground-3}}'; } md-radio-group.md-THEME_NAME-theme[disabled] .md-container .md-on, md-radio-button.md-THEME_NAME-theme[disabled] .md-container .md-on { border-color: '{{foreground-3}}'; }md-radio-group.md-THEME_NAME-theme.md-focused:not(:empty) .md-checked .md-container:before { background-color: '{{accent-color-0.26}}'; }md-radio-group.md-THEME_NAME-theme.md-focused:not(:empty) .md-checked:not([disabled]).md-primary .md-container:before { background-color: '{{primary-color-0.26}}'; }md-radio-group.md-THEME_NAME-theme.md-focused:not(:empty) .md-checked.md-primary .md-container:before { background-color: '{{warn-color-0.26}}'; }md-select.md-THEME_NAME-theme .md-select-value { border-bottom-color: '{{foreground-4}}'; } md-select.md-THEME_NAME-theme .md-select-value.md-select-placeholder { color: '{{foreground-3}}'; }md-select.md-THEME_NAME-theme.ng-invalid.ng-dirty .md-select-value { color: '{{warn-500}}' !important; border-bottom-color: '{{warn-500}}' !important; }md-select.md-THEME_NAME-theme:not([disabled]):focus .md-select-value { border-bottom-color: '{{primary-color}}'; color: '{{ foreground-1 }}'; } md-select.md-THEME_NAME-theme:not([disabled]):focus .md-select-value.md-select-placeholder { color: '{{ foreground-1 }}'; }md-select.md-THEME_NAME-theme:not([disabled]):focus.md-accent .md-select-value { border-bottom-color: '{{accent-color}}'; }md-select.md-THEME_NAME-theme:not([disabled]):focus.md-warn .md-select-value { border-bottom-color: '{{warn-color}}'; }md-select.md-THEME_NAME-theme[disabled] .md-select-value { color: '{{foreground-3}}'; } md-select.md-THEME_NAME-theme[disabled] .md-select-value.md-select-placeholder { color: '{{foreground-3}}'; }md-select-menu.md-THEME_NAME-theme md-option[disabled] { color: '{{foreground-3}}'; }md-select-menu.md-THEME_NAME-theme md-optgroup { color: '{{foreground-2}}'; } md-select-menu.md-THEME_NAME-theme md-optgroup md-option { color: '{{foreground-1}}'; }md-select-menu.md-THEME_NAME-theme md-option[selected] { color: '{{primary-500}}'; } md-select-menu.md-THEME_NAME-theme md-option[selected]:focus { color: '{{primary-600}}'; } md-select-menu.md-THEME_NAME-theme md-option[selected].md-accent { color: '{{accent-500}}'; } md-select-menu.md-THEME_NAME-theme md-option[selected].md-accent:focus { color: '{{accent-600}}'; }md-select-menu.md-THEME_NAME-theme md-option:focus:not([selected]) { background: '{{background-200}}'; }md-sidenav.md-THEME_NAME-theme { background-color: '{{background-color}}'; }md-slider.md-THEME_NAME-theme .md-track { background-color: '{{foreground-3}}'; }md-slider.md-THEME_NAME-theme .md-track-ticks { background-color: '{{foreground-4}}'; }md-slider.md-THEME_NAME-theme .md-focus-thumb { background-color: '{{foreground-2}}'; }md-slider.md-THEME_NAME-theme .md-focus-ring { border-color: '{{foreground-4}}'; }md-slider.md-THEME_NAME-theme .md-disabled-thumb { border-color: '{{background-color}}'; }md-slider.md-THEME_NAME-theme.md-min .md-thumb:after { background-color: '{{background-color}}'; }md-slider.md-THEME_NAME-theme .md-track.md-track-fill { background-color: '{{accent-color}}'; }md-slider.md-THEME_NAME-theme .md-thumb:after { border-color: '{{accent-color}}'; background-color: '{{accent-color}}'; }md-slider.md-THEME_NAME-theme .md-sign { background-color: '{{accent-color}}'; } md-slider.md-THEME_NAME-theme .md-sign:after { border-top-color: '{{accent-color}}'; }md-slider.md-THEME_NAME-theme .md-thumb-text { color: '{{accent-contrast}}'; }md-slider.md-THEME_NAME-theme.md-warn .md-track.md-track-fill { background-color: '{{warn-color}}'; }md-slider.md-THEME_NAME-theme.md-warn .md-thumb:after { border-color: '{{warn-color}}'; background-color: '{{warn-color}}'; }md-slider.md-THEME_NAME-theme.md-warn .md-sign { background-color: '{{warn-color}}'; } md-slider.md-THEME_NAME-theme.md-warn .md-sign:after { border-top-color: '{{warn-color}}'; }md-slider.md-THEME_NAME-theme.md-warn .md-thumb-text { color: '{{warn-contrast}}'; }md-slider.md-THEME_NAME-theme.md-primary .md-track.md-track-fill { background-color: '{{primary-color}}'; }md-slider.md-THEME_NAME-theme.md-primary .md-thumb:after { border-color: '{{primary-color}}'; background-color: '{{primary-color}}'; }md-slider.md-THEME_NAME-theme.md-primary .md-sign { background-color: '{{primary-color}}'; } md-slider.md-THEME_NAME-theme.md-primary .md-sign:after { border-top-color: '{{primary-color}}'; }md-slider.md-THEME_NAME-theme.md-primary .md-thumb-text { color: '{{primary-contrast}}'; }md-slider.md-THEME_NAME-theme[disabled] .md-thumb:after { border-color: '{{foreground-3}}'; }md-slider.md-THEME_NAME-theme[disabled]:not(.md-min) .md-thumb:after { background-color: '{{foreground-3}}'; }.md-subheader.md-THEME_NAME-theme { color: '{{ foreground-2-0.23 }}'; background-color: '{{background-color}}'; } .md-subheader.md-THEME_NAME-theme.md-primary { color: '{{primary-color}}'; } .md-subheader.md-THEME_NAME-theme.md-accent { color: '{{accent-color}}'; } .md-subheader.md-THEME_NAME-theme.md-warn { color: '{{warn-color}}'; }md-switch.md-THEME_NAME-theme .md-thumb { background-color: '{{background-50}}'; }md-switch.md-THEME_NAME-theme .md-bar { background-color: '{{background-500}}'; }md-switch.md-THEME_NAME-theme.md-checked .md-thumb { background-color: '{{accent-color}}'; }md-switch.md-THEME_NAME-theme.md-checked .md-bar { background-color: '{{accent-color-0.5}}'; }md-switch.md-THEME_NAME-theme.md-checked.md-focused .md-thumb:before { background-color: '{{accent-color-0.26}}'; }md-switch.md-THEME_NAME-theme.md-checked.md-primary .md-thumb { background-color: '{{primary-color}}'; }md-switch.md-THEME_NAME-theme.md-checked.md-primary .md-bar { background-color: '{{primary-color-0.5}}'; }md-switch.md-THEME_NAME-theme.md-checked.md-primary.md-focused .md-thumb:before { background-color: '{{primary-color-0.26}}'; }md-switch.md-THEME_NAME-theme.md-checked.md-warn .md-thumb { background-color: '{{warn-color}}'; }md-switch.md-THEME_NAME-theme.md-checked.md-warn .md-bar { background-color: '{{warn-color-0.5}}'; }md-switch.md-THEME_NAME-theme.md-checked.md-warn.md-focused .md-thumb:before { background-color: '{{warn-color-0.26}}'; }md-switch.md-THEME_NAME-theme[disabled] .md-thumb { background-color: '{{background-400}}'; }md-switch.md-THEME_NAME-theme[disabled] .md-bar { background-color: '{{foreground-4}}'; }md-tabs.md-THEME_NAME-theme md-tabs-wrapper { background-color: transparent; border-color: '{{foreground-4}}'; }md-tabs.md-THEME_NAME-theme .md-paginator md-icon { color: '{{primary-color}}'; }md-tabs.md-THEME_NAME-theme md-ink-bar { color: '{{accent-color}}'; background: '{{accent-color}}'; }md-tabs.md-THEME_NAME-theme .md-tab { color: '{{foreground-2}}'; } md-tabs.md-THEME_NAME-theme .md-tab[disabled] { color: '{{foreground-3}}'; } md-tabs.md-THEME_NAME-theme .md-tab.md-active, md-tabs.md-THEME_NAME-theme .md-tab.md-focused { color: '{{primary-color}}'; } md-tabs.md-THEME_NAME-theme .md-tab.md-focused { background: '{{primary-color-0.1}}'; } md-tabs.md-THEME_NAME-theme .md-tab .md-ripple-container { color: '{{accent-100}}'; }md-tabs.md-THEME_NAME-theme.md-accent > md-tabs-wrapper { background-color: '{{accent-color}}'; } md-tabs.md-THEME_NAME-theme.md-accent > md-tabs-wrapper > md-tabs-canvas > md-pagination-wrapper > md-tab-item:not([disabled]) { color: '{{accent-100}}'; } md-tabs.md-THEME_NAME-theme.md-accent > md-tabs-wrapper > md-tabs-canvas > md-pagination-wrapper > md-tab-item:not([disabled]).md-active, md-tabs.md-THEME_NAME-theme.md-accent > md-tabs-wrapper > md-tabs-canvas > md-pagination-wrapper > md-tab-item:not([disabled]).md-focused { color: '{{accent-contrast}}'; } md-tabs.md-THEME_NAME-theme.md-accent > md-tabs-wrapper > md-tabs-canvas > md-pagination-wrapper > md-tab-item:not([disabled]).md-focused { background: '{{accent-contrast-0.1}}'; } md-tabs.md-THEME_NAME-theme.md-accent > md-tabs-wrapper > md-tabs-canvas > md-pagination-wrapper > md-ink-bar { color: '{{primary-600-1}}'; background: '{{primary-600-1}}'; }md-tabs.md-THEME_NAME-theme.md-primary > md-tabs-wrapper { background-color: '{{primary-color}}'; } md-tabs.md-THEME_NAME-theme.md-primary > md-tabs-wrapper > md-tabs-canvas > md-pagination-wrapper > md-tab-item:not([disabled]) { color: '{{primary-100}}'; } md-tabs.md-THEME_NAME-theme.md-primary > md-tabs-wrapper > md-tabs-canvas > md-pagination-wrapper > md-tab-item:not([disabled]).md-active, md-tabs.md-THEME_NAME-theme.md-primary > md-tabs-wrapper > md-tabs-canvas > md-pagination-wrapper > md-tab-item:not([disabled]).md-focused { color: '{{primary-contrast}}'; } md-tabs.md-THEME_NAME-theme.md-primary > md-tabs-wrapper > md-tabs-canvas > md-pagination-wrapper > md-tab-item:not([disabled]).md-focused { background: '{{primary-contrast-0.1}}'; }md-tabs.md-THEME_NAME-theme.md-warn > md-tabs-wrapper { background-color: '{{warn-color}}'; } md-tabs.md-THEME_NAME-theme.md-warn > md-tabs-wrapper > md-tabs-canvas > md-pagination-wrapper > md-tab-item:not([disabled]) { color: '{{warn-100}}'; } md-tabs.md-THEME_NAME-theme.md-warn > md-tabs-wrapper > md-tabs-canvas > md-pagination-wrapper > md-tab-item:not([disabled]).md-active, md-tabs.md-THEME_NAME-theme.md-warn > md-tabs-wrapper > md-tabs-canvas > md-pagination-wrapper > md-tab-item:not([disabled]).md-focused { color: '{{warn-contrast}}'; } md-tabs.md-THEME_NAME-theme.md-warn > md-tabs-wrapper > md-tabs-canvas > md-pagination-wrapper > md-tab-item:not([disabled]).md-focused { background: '{{warn-contrast-0.1}}'; }md-toolbar > md-tabs.md-THEME_NAME-theme > md-tabs-wrapper { background-color: '{{primary-color}}'; } md-toolbar > md-tabs.md-THEME_NAME-theme > md-tabs-wrapper > md-tabs-canvas > md-pagination-wrapper > md-tab-item:not([disabled]) { color: '{{primary-100}}'; } md-toolbar > md-tabs.md-THEME_NAME-theme > md-tabs-wrapper > md-tabs-canvas > md-pagination-wrapper > md-tab-item:not([disabled]).md-active, md-toolbar > md-tabs.md-THEME_NAME-theme > md-tabs-wrapper > md-tabs-canvas > md-pagination-wrapper > md-tab-item:not([disabled]).md-focused { color: '{{primary-contrast}}'; } md-toolbar > md-tabs.md-THEME_NAME-theme > md-tabs-wrapper > md-tabs-canvas > md-pagination-wrapper > md-tab-item:not([disabled]).md-focused { background: '{{primary-contrast-0.1}}'; }md-toolbar.md-accent > md-tabs.md-THEME_NAME-theme > md-tabs-wrapper { background-color: '{{accent-color}}'; } md-toolbar.md-accent > md-tabs.md-THEME_NAME-theme > md-tabs-wrapper > md-tabs-canvas > md-pagination-wrapper > md-tab-item:not([disabled]) { color: '{{accent-100}}'; } md-toolbar.md-accent > md-tabs.md-THEME_NAME-theme > md-tabs-wrapper > md-tabs-canvas > md-pagination-wrapper > md-tab-item:not([disabled]).md-active, md-toolbar.md-accent > md-tabs.md-THEME_NAME-theme > md-tabs-wrapper > md-tabs-canvas > md-pagination-wrapper > md-tab-item:not([disabled]).md-focused { color: '{{accent-contrast}}'; } md-toolbar.md-accent > md-tabs.md-THEME_NAME-theme > md-tabs-wrapper > md-tabs-canvas > md-pagination-wrapper > md-tab-item:not([disabled]).md-focused { background: '{{accent-contrast-0.1}}'; } md-toolbar.md-accent > md-tabs.md-THEME_NAME-theme > md-tabs-wrapper > md-tabs-canvas > md-pagination-wrapper > md-ink-bar { color: '{{primary-600-1}}'; background: '{{primary-600-1}}'; }md-toolbar.md-warn > md-tabs.md-THEME_NAME-theme > md-tabs-wrapper { background-color: '{{warn-color}}'; } md-toolbar.md-warn > md-tabs.md-THEME_NAME-theme > md-tabs-wrapper > md-tabs-canvas > md-pagination-wrapper > md-tab-item:not([disabled]) { color: '{{warn-100}}'; } md-toolbar.md-warn > md-tabs.md-THEME_NAME-theme > md-tabs-wrapper > md-tabs-canvas > md-pagination-wrapper > md-tab-item:not([disabled]).md-active, md-toolbar.md-warn > md-tabs.md-THEME_NAME-theme > md-tabs-wrapper > md-tabs-canvas > md-pagination-wrapper > md-tab-item:not([disabled]).md-focused { color: '{{warn-contrast}}'; } md-toolbar.md-warn > md-tabs.md-THEME_NAME-theme > md-tabs-wrapper > md-tabs-canvas > md-pagination-wrapper > md-tab-item:not([disabled]).md-focused { background: '{{warn-contrast-0.1}}'; }md-toast.md-THEME_NAME-theme { background-color: #323232; color: '{{background-50}}'; } md-toast.md-THEME_NAME-theme .md-button { color: '{{background-50}}'; } md-toast.md-THEME_NAME-theme .md-button.md-highlight { color: '{{primary-A200}}'; } md-toast.md-THEME_NAME-theme .md-button.md-highlight.md-accent { color: '{{accent-A200}}'; } md-toast.md-THEME_NAME-theme .md-button.md-highlight.md-warn { color: '{{warn-A200}}'; }md-toolbar.md-THEME_NAME-theme { background-color: '{{primary-color}}'; color: '{{primary-contrast}}'; } md-toolbar.md-THEME_NAME-theme md-icon { color: '{{primary-contrast}}'; } md-toolbar.md-THEME_NAME-theme .md-button { color: '{{primary-contrast}}'; } md-toolbar.md-THEME_NAME-theme.md-accent { background-color: '{{accent-color}}'; color: '{{accent-contrast}}'; } md-toolbar.md-THEME_NAME-theme.md-warn { background-color: '{{warn-color}}'; color: '{{warn-contrast}}'; }md-tooltip.md-THEME_NAME-theme { color: '{{background-A100}}'; } md-tooltip.md-THEME_NAME-theme .md-background { background-color: '{{foreground-2}}'; }"); +angular.module("material.core").constant("$MD_THEME_CSS", "md-autocomplete.md-THEME_NAME-theme { background: '{{background-50}}'; } md-autocomplete.md-THEME_NAME-theme[disabled] { background: '{{background-100}}'; } md-autocomplete.md-THEME_NAME-theme button md-icon path { fill: '{{background-600}}'; } md-autocomplete.md-THEME_NAME-theme button:after { background: '{{background-600-0.3}}'; }.md-autocomplete-suggestions.md-THEME_NAME-theme { background: '{{background-50}}'; } .md-autocomplete-suggestions.md-THEME_NAME-theme li { color: '{{background-900}}'; } .md-autocomplete-suggestions.md-THEME_NAME-theme li .highlight { color: '{{background-600}}'; } .md-autocomplete-suggestions.md-THEME_NAME-theme li:hover, .md-autocomplete-suggestions.md-THEME_NAME-theme li.selected { background: '{{background-200}}'; }md-backdrop { background-color: '{{background-900-0.0}}'; } md-backdrop.md-opaque.md-THEME_NAME-theme { background-color: '{{background-900-0.48}}'; } md-backdrop.md-opaque.md-THEME_NAME-theme.ng-enter { background-color: '{{background-900-0.0}}'; } md-backdrop.md-opaque.md-THEME_NAME-theme.ng-enter.md-opaque.md-THEME_NAME-theme.ng-enter-active { background-color: '{{background-900-0.48}}'; } md-backdrop.md-opaque.md-THEME_NAME-theme.ng-leave.md-opaque.md-THEME_NAME-theme.ng-leave-active { background-color: '{{background-900-0.0}}'; }md-bottom-sheet.md-THEME_NAME-theme { background-color: '{{background-50}}'; border-top-color: '{{background-300}}'; } md-bottom-sheet.md-THEME_NAME-theme.md-list md-list-item { color: '{{foreground-1}}'; } md-bottom-sheet.md-THEME_NAME-theme .md-subheader { background-color: '{{background-50}}'; } md-bottom-sheet.md-THEME_NAME-theme .md-subheader { color: '{{foreground-1}}'; }a.md-button.md-THEME_NAME-theme:not([disabled]):hover, .md-button.md-THEME_NAME-theme:not([disabled]):hover { background-color: '{{background-500-0.2}}'; }a.md-button.md-THEME_NAME-theme:not([disabled]).md-focused, .md-button.md-THEME_NAME-theme:not([disabled]).md-focused { background-color: '{{background-500-0.2}}'; }a.md-button.md-THEME_NAME-theme:not([disabled]).md-icon-button:hover, .md-button.md-THEME_NAME-theme:not([disabled]).md-icon-button:hover { background-color: transparent; }a.md-button.md-THEME_NAME-theme.md-fab, .md-button.md-THEME_NAME-theme.md-fab { background-color: '{{accent-color}}'; color: '{{accent-contrast}}'; } a.md-button.md-THEME_NAME-theme.md-fab md-icon, .md-button.md-THEME_NAME-theme.md-fab md-icon { color: '{{accent-contrast}}'; } a.md-button.md-THEME_NAME-theme.md-fab:not([disabled]):hover, .md-button.md-THEME_NAME-theme.md-fab:not([disabled]):hover { background-color: '{{accent-color}}'; } a.md-button.md-THEME_NAME-theme.md-fab:not([disabled]).md-focused, .md-button.md-THEME_NAME-theme.md-fab:not([disabled]).md-focused { background-color: '{{accent-A700}}'; }a.md-button.md-THEME_NAME-theme.md-primary, .md-button.md-THEME_NAME-theme.md-primary { color: '{{primary-color}}'; } a.md-button.md-THEME_NAME-theme.md-primary.md-raised, a.md-button.md-THEME_NAME-theme.md-primary.md-fab, .md-button.md-THEME_NAME-theme.md-primary.md-raised, .md-button.md-THEME_NAME-theme.md-primary.md-fab { color: '{{primary-contrast}}'; background-color: '{{primary-color}}'; } a.md-button.md-THEME_NAME-theme.md-primary.md-raised:not([disabled]) md-icon, a.md-button.md-THEME_NAME-theme.md-primary.md-fab:not([disabled]) md-icon, .md-button.md-THEME_NAME-theme.md-primary.md-raised:not([disabled]) md-icon, .md-button.md-THEME_NAME-theme.md-primary.md-fab:not([disabled]) md-icon { color: '{{primary-contrast}}'; } a.md-button.md-THEME_NAME-theme.md-primary.md-raised:not([disabled]):hover, a.md-button.md-THEME_NAME-theme.md-primary.md-fab:not([disabled]):hover, .md-button.md-THEME_NAME-theme.md-primary.md-raised:not([disabled]):hover, .md-button.md-THEME_NAME-theme.md-primary.md-fab:not([disabled]):hover { background-color: '{{primary-color}}'; } a.md-button.md-THEME_NAME-theme.md-primary.md-raised:not([disabled]).md-focused, a.md-button.md-THEME_NAME-theme.md-primary.md-fab:not([disabled]).md-focused, .md-button.md-THEME_NAME-theme.md-primary.md-raised:not([disabled]).md-focused, .md-button.md-THEME_NAME-theme.md-primary.md-fab:not([disabled]).md-focused { background-color: '{{primary-600}}'; } a.md-button.md-THEME_NAME-theme.md-primary:not([disabled]) md-icon, .md-button.md-THEME_NAME-theme.md-primary:not([disabled]) md-icon { color: '{{primary-color}}'; }a.md-button.md-THEME_NAME-theme.md-fab, .md-button.md-THEME_NAME-theme.md-fab { background-color: '{{accent-color}}'; color: '{{accent-contrast}}'; } a.md-button.md-THEME_NAME-theme.md-fab:not([disabled]) .md-icon, .md-button.md-THEME_NAME-theme.md-fab:not([disabled]) .md-icon { color: '{{accent-contrast}}'; } a.md-button.md-THEME_NAME-theme.md-fab:not([disabled]):hover, .md-button.md-THEME_NAME-theme.md-fab:not([disabled]):hover { background-color: '{{accent-color}}'; } a.md-button.md-THEME_NAME-theme.md-fab:not([disabled]).md-focused, .md-button.md-THEME_NAME-theme.md-fab:not([disabled]).md-focused { background-color: '{{accent-A700}}'; }a.md-button.md-THEME_NAME-theme.md-raised, .md-button.md-THEME_NAME-theme.md-raised { color: '{{background-contrast}}'; background-color: '{{background-50}}'; } a.md-button.md-THEME_NAME-theme.md-raised:not([disabled]) .md-icon, .md-button.md-THEME_NAME-theme.md-raised:not([disabled]) .md-icon { color: '{{background-contrast}}'; } a.md-button.md-THEME_NAME-theme.md-raised:not([disabled]):hover, .md-button.md-THEME_NAME-theme.md-raised:not([disabled]):hover { background-color: '{{background-50}}'; } a.md-button.md-THEME_NAME-theme.md-raised:not([disabled]).md-focused, .md-button.md-THEME_NAME-theme.md-raised:not([disabled]).md-focused { background-color: '{{background-200}}'; }a.md-button.md-THEME_NAME-theme.md-warn, .md-button.md-THEME_NAME-theme.md-warn { color: '{{warn-color}}'; } a.md-button.md-THEME_NAME-theme.md-warn.md-raised, a.md-button.md-THEME_NAME-theme.md-warn.md-fab, .md-button.md-THEME_NAME-theme.md-warn.md-raised, .md-button.md-THEME_NAME-theme.md-warn.md-fab { color: '{{warn-contrast}}'; background-color: '{{warn-color}}'; } a.md-button.md-THEME_NAME-theme.md-warn.md-raised:not([disabled]) md-icon, a.md-button.md-THEME_NAME-theme.md-warn.md-fab:not([disabled]) md-icon, .md-button.md-THEME_NAME-theme.md-warn.md-raised:not([disabled]) md-icon, .md-button.md-THEME_NAME-theme.md-warn.md-fab:not([disabled]) md-icon { color: '{{warn-contrast}}'; } a.md-button.md-THEME_NAME-theme.md-warn.md-raised:not([disabled]):hover, a.md-button.md-THEME_NAME-theme.md-warn.md-fab:not([disabled]):hover, .md-button.md-THEME_NAME-theme.md-warn.md-raised:not([disabled]):hover, .md-button.md-THEME_NAME-theme.md-warn.md-fab:not([disabled]):hover { background-color: '{{warn-color}}'; } a.md-button.md-THEME_NAME-theme.md-warn.md-raised:not([disabled]).md-focused, a.md-button.md-THEME_NAME-theme.md-warn.md-fab:not([disabled]).md-focused, .md-button.md-THEME_NAME-theme.md-warn.md-raised:not([disabled]).md-focused, .md-button.md-THEME_NAME-theme.md-warn.md-fab:not([disabled]).md-focused { background-color: '{{warn-700}}'; } a.md-button.md-THEME_NAME-theme.md-warn:not([disabled]) md-icon, .md-button.md-THEME_NAME-theme.md-warn:not([disabled]) md-icon { color: '{{warn-color}}'; }a.md-button.md-THEME_NAME-theme.md-accent, .md-button.md-THEME_NAME-theme.md-accent { color: '{{accent-color}}'; } a.md-button.md-THEME_NAME-theme.md-accent.md-raised, a.md-button.md-THEME_NAME-theme.md-accent.md-fab, .md-button.md-THEME_NAME-theme.md-accent.md-raised, .md-button.md-THEME_NAME-theme.md-accent.md-fab { color: '{{accent-contrast}}'; background-color: '{{accent-color}}'; } a.md-button.md-THEME_NAME-theme.md-accent.md-raised:not([disabled]) md-icon, a.md-button.md-THEME_NAME-theme.md-accent.md-fab:not([disabled]) md-icon, .md-button.md-THEME_NAME-theme.md-accent.md-raised:not([disabled]) md-icon, .md-button.md-THEME_NAME-theme.md-accent.md-fab:not([disabled]) md-icon { color: '{{accent-contrast}}'; } a.md-button.md-THEME_NAME-theme.md-accent.md-raised:not([disabled]):hover, a.md-button.md-THEME_NAME-theme.md-accent.md-fab:not([disabled]):hover, .md-button.md-THEME_NAME-theme.md-accent.md-raised:not([disabled]):hover, .md-button.md-THEME_NAME-theme.md-accent.md-fab:not([disabled]):hover { background-color: '{{accent-color}}'; } a.md-button.md-THEME_NAME-theme.md-accent.md-raised:not([disabled]).md-focused, a.md-button.md-THEME_NAME-theme.md-accent.md-fab:not([disabled]).md-focused, .md-button.md-THEME_NAME-theme.md-accent.md-raised:not([disabled]).md-focused, .md-button.md-THEME_NAME-theme.md-accent.md-fab:not([disabled]).md-focused { background-color: '{{accent-700}}'; } a.md-button.md-THEME_NAME-theme.md-accent:not([disabled]) md-icon, .md-button.md-THEME_NAME-theme.md-accent:not([disabled]) md-icon { color: '{{accent-color}}'; }a.md-button.md-THEME_NAME-theme[disabled], a.md-button.md-THEME_NAME-theme.md-raised[disabled], a.md-button.md-THEME_NAME-theme.md-fab[disabled], a.md-button.md-THEME_NAME-theme.md-accent[disabled], a.md-button.md-THEME_NAME-theme.md-warn[disabled], .md-button.md-THEME_NAME-theme[disabled], .md-button.md-THEME_NAME-theme.md-raised[disabled], .md-button.md-THEME_NAME-theme.md-fab[disabled], .md-button.md-THEME_NAME-theme.md-accent[disabled], .md-button.md-THEME_NAME-theme.md-warn[disabled] { color: '{{foreground-3}}'; cursor: not-allowed; } a.md-button.md-THEME_NAME-theme[disabled] md-icon, a.md-button.md-THEME_NAME-theme.md-raised[disabled] md-icon, a.md-button.md-THEME_NAME-theme.md-fab[disabled] md-icon, a.md-button.md-THEME_NAME-theme.md-accent[disabled] md-icon, a.md-button.md-THEME_NAME-theme.md-warn[disabled] md-icon, .md-button.md-THEME_NAME-theme[disabled] md-icon, .md-button.md-THEME_NAME-theme.md-raised[disabled] md-icon, .md-button.md-THEME_NAME-theme.md-fab[disabled] md-icon, .md-button.md-THEME_NAME-theme.md-accent[disabled] md-icon, .md-button.md-THEME_NAME-theme.md-warn[disabled] md-icon { color: '{{foreground-3}}'; }a.md-button.md-THEME_NAME-theme.md-raised[disabled], a.md-button.md-THEME_NAME-theme.md-fab[disabled], .md-button.md-THEME_NAME-theme.md-raised[disabled], .md-button.md-THEME_NAME-theme.md-fab[disabled] { background-color: '{{foreground-4}}'; }a.md-button.md-THEME_NAME-theme[disabled], .md-button.md-THEME_NAME-theme[disabled] { background-color: transparent; }md-card.md-THEME_NAME-theme { background-color: '{{background-color}}'; border-radius: 2px; } md-card.md-THEME_NAME-theme .md-card-image { border-radius: 2px 2px 0 0; }md-checkbox.md-THEME_NAME-theme .md-ripple { color: '{{accent-600}}'; }md-checkbox.md-THEME_NAME-theme.md-checked .md-ripple { color: '{{background-600}}'; }md-checkbox.md-THEME_NAME-theme.md-checked.md-focused .md-container:before { background-color: '{{accent-color-0.26}}'; }md-checkbox.md-THEME_NAME-theme .md-icon { border-color: '{{foreground-2}}'; }md-checkbox.md-THEME_NAME-theme.md-checked .md-icon { background-color: '{{accent-color-0.87}}'; }md-checkbox.md-THEME_NAME-theme.md-checked .md-icon:after { border-color: '{{background-200}}'; }md-checkbox.md-THEME_NAME-theme:not([disabled]).md-primary .md-ripple { color: '{{primary-600}}'; }md-checkbox.md-THEME_NAME-theme:not([disabled]).md-primary.md-checked .md-ripple { color: '{{background-600}}'; }md-checkbox.md-THEME_NAME-theme:not([disabled]).md-primary .md-icon { border-color: '{{foreground-2}}'; }md-checkbox.md-THEME_NAME-theme:not([disabled]).md-primary.md-checked .md-icon { background-color: '{{primary-color-0.87}}'; }md-checkbox.md-THEME_NAME-theme:not([disabled]).md-primary.md-checked.md-focused .md-container:before { background-color: '{{primary-color-0.26}}'; }md-checkbox.md-THEME_NAME-theme:not([disabled]).md-primary.md-checked .md-icon:after { border-color: '{{background-200}}'; }md-checkbox.md-THEME_NAME-theme:not([disabled]).md-warn .md-ripple { color: '{{warn-600}}'; }md-checkbox.md-THEME_NAME-theme:not([disabled]).md-warn .md-icon { border-color: '{{foreground-2}}'; }md-checkbox.md-THEME_NAME-theme:not([disabled]).md-warn.md-checked .md-icon { background-color: '{{warn-color-0.87}}'; }md-checkbox.md-THEME_NAME-theme:not([disabled]).md-warn.md-checked.md-focused:not([disabled]) .md-container:before { background-color: '{{warn-color-0.26}}'; }md-checkbox.md-THEME_NAME-theme:not([disabled]).md-warn.md-checked .md-icon:after { border-color: '{{background-200}}'; }md-checkbox.md-THEME_NAME-theme[disabled] .md-icon { border-color: '{{foreground-3}}'; }md-checkbox.md-THEME_NAME-theme[disabled].md-checked .md-icon { background-color: '{{foreground-3}}'; }md-checkbox.md-THEME_NAME-theme[disabled] .md-label { color: '{{foreground-3}}'; }md-chips.md-THEME_NAME-theme .md-chips { box-shadow: 0 1px '{{background-300}}'; } md-chips.md-THEME_NAME-theme .md-chips.md-focused { box-shadow: 0 2px '{{primary-color}}'; }md-chips.md-THEME_NAME-theme .md-chip { background: '{{background-300}}'; color: '{{background-800}}'; } md-chips.md-THEME_NAME-theme .md-chip.md-focused { background: '{{primary-color}}'; color: '{{primary-contrast}}'; } md-chips.md-THEME_NAME-theme .md-chip.md-focused md-icon { color: '{{primary-contrast}}'; }md-chips.md-THEME_NAME-theme md-chip-remove .md-button md-icon path { fill: '{{background-500}}'; }.md-contact-suggestion span.md-contact-email { color: '{{background-400}}'; }md-content.md-THEME_NAME-theme { color: '{{foreground-1}}'; background-color: '{{background-color}}'; }/** Theme styles for mdCalendar. */.md-calendar.md-THEME_NAME-theme { color: '{{foreground-2}}'; } .md-calendar.md-THEME_NAME-theme tr:last-child td { border-bottom-color: '{{background-200}}'; }.md-THEME_NAME-theme .md-calendar-day-header { background: '{{background-200}}'; color: '{{foreground-2}}'; }.md-THEME_NAME-theme .md-calendar-date.md-calendar-date-today { color: '{{primary-500}}'; }.md-THEME_NAME-theme .md-calendar-date.md-focus .md-calendar-date-selection-indicator { background: '{{background-300}}'; }.md-THEME_NAME-theme .md-calendar-date-selection-indicator:hover { background: '{{background-300}}'; }.md-THEME_NAME-theme .md-calendar-date.md-calendar-selected-date .md-calendar-date-selection-indicator, .md-THEME_NAME-theme .md-calendar-date.md-focus.md-calendar-selected-date .md-calendar-date-selection-indicator { background: '{{primary-500}}'; color: '{{primary-500-contrast}}'; }/** Theme styles for mdDatepicker. */md-datepicker.md-THEME_NAME-theme { background: white; }.md-THEME_NAME-theme .md-datepicker-input-container { border-bottom-color: '{{background-300}}'; } .md-THEME_NAME-theme .md-datepicker-input-container.md-datepicker-focused { border-bottom-color: '{{primary-500}}'; } .md-THEME_NAME-theme .md-datepicker-input-container.md-datepicker-invalid { border-bottom-color: '{{warn-500}}'; }.md-THEME_NAME-theme .md-datepicker-calendar-pane { border-color: '{{background-300}}'; }.md-THEME_NAME-theme .md-datepicker-triangle-button:hover .md-datepicker-expand-triangle { border-top-color: '{{foreground-2}}'; }.md-THEME_NAME-theme .md-datepicker-open .md-datepicker-calendar-icon { fill: '{{primary-500}}'; }.md-THEME_NAME-theme .md-datepicker-calendar { background: white; }md-dialog.md-THEME_NAME-theme { border-radius: 4px; background-color: '{{background-color}}'; } md-dialog.md-THEME_NAME-theme.md-content-overflow .md-actions { border-top-color: '{{foreground-4}}'; }md-divider.md-THEME_NAME-theme { border-top-color: '{{foreground-4}}'; }md-icon.md-THEME_NAME-theme { color: '{{foreground-2}}'; } md-icon.md-THEME_NAME-theme.md-primary { color: '{{primary-color}}'; } md-icon.md-THEME_NAME-theme.md-accent { color: '{{accent-color}}'; } md-icon.md-THEME_NAME-theme.md-warn { color: '{{warn-color}}'; }md-input-container.md-THEME_NAME-theme .md-input { color: '{{foreground-1}}'; border-color: '{{foreground-4}}'; text-shadow: '{{foreground-shadow}}'; } md-input-container.md-THEME_NAME-theme .md-input::-webkit-input-placeholder, md-input-container.md-THEME_NAME-theme .md-input::-moz-placeholder, md-input-container.md-THEME_NAME-theme .md-input:-moz-placeholder, md-input-container.md-THEME_NAME-theme .md-input:-ms-input-placeholder { color: '{{foreground-3}}'; }md-input-container.md-THEME_NAME-theme > md-icon { color: '{{foreground-1}}'; }md-input-container.md-THEME_NAME-theme label, md-input-container.md-THEME_NAME-theme .md-placeholder { text-shadow: '{{foreground-shadow}}'; color: '{{foreground-3}}'; }md-input-container.md-THEME_NAME-theme ng-messages, md-input-container.md-THEME_NAME-theme [ng-message], md-input-container.md-THEME_NAME-theme [data-ng-message], md-input-container.md-THEME_NAME-theme [x-ng-message] { color: '{{warn-500}}'; }md-input-container.md-THEME_NAME-theme:not(.md-input-invalid).md-input-has-value label { color: '{{foreground-2}}'; }md-input-container.md-THEME_NAME-theme:not(.md-input-invalid).md-input-focused .md-input { border-color: '{{primary-500}}'; }md-input-container.md-THEME_NAME-theme:not(.md-input-invalid).md-input-focused label { color: '{{primary-500}}'; }md-input-container.md-THEME_NAME-theme:not(.md-input-invalid).md-input-focused md-icon { color: '{{primary-500}}'; }md-input-container.md-THEME_NAME-theme:not(.md-input-invalid).md-input-focused.md-accent .md-input { border-color: '{{accent-500}}'; }md-input-container.md-THEME_NAME-theme:not(.md-input-invalid).md-input-focused.md-accent label { color: '{{accent-500}}'; }md-input-container.md-THEME_NAME-theme:not(.md-input-invalid).md-input-focused.md-warn .md-input { border-color: '{{warn-500}}'; }md-input-container.md-THEME_NAME-theme:not(.md-input-invalid).md-input-focused.md-warn label { color: '{{warn-500}}'; }md-input-container.md-THEME_NAME-theme.md-input-invalid .md-input { border-color: '{{warn-500}}'; }md-input-container.md-THEME_NAME-theme.md-input-invalid.md-input-focused label { color: '{{warn-500}}'; }md-input-container.md-THEME_NAME-theme.md-input-invalid ng-message, md-input-container.md-THEME_NAME-theme.md-input-invalid data-ng-message, md-input-container.md-THEME_NAME-theme.md-input-invalid x-ng-message, md-input-container.md-THEME_NAME-theme.md-input-invalid [ng-message], md-input-container.md-THEME_NAME-theme.md-input-invalid [data-ng-message], md-input-container.md-THEME_NAME-theme.md-input-invalid [x-ng-message], md-input-container.md-THEME_NAME-theme.md-input-invalid .md-char-counter { color: '{{warn-500}}'; }md-input-container.md-THEME_NAME-theme .md-input[disabled], [disabled] md-input-container.md-THEME_NAME-theme .md-input { border-bottom-color: transparent; color: '{{foreground-3}}'; background-image: linear-gradient(to right, '{{foreground-3}}' 0%, '{{foreground-3}}' 33%, transparent 0%); background-image: -ms-linear-gradient(left, transparent 0%, '{{foreground-3}}' 100%); }md-list.md-THEME_NAME-theme md-list-item.md-2-line .md-list-item-text h3, md-list.md-THEME_NAME-theme md-list-item.md-2-line .md-list-item-text h4, md-list.md-THEME_NAME-theme md-list-item.md-3-line .md-list-item-text h3, md-list.md-THEME_NAME-theme md-list-item.md-3-line .md-list-item-text h4 { color: '{{foreground-1}}'; }md-list.md-THEME_NAME-theme md-list-item.md-2-line .md-list-item-text p, md-list.md-THEME_NAME-theme md-list-item.md-3-line .md-list-item-text p { color: '{{foreground-2}}'; }md-list.md-THEME_NAME-theme .md-proxy-focus.md-focused div.md-no-style { background-color: '{{background-100}}'; }md-list.md-THEME_NAME-theme md-list-item > md-icon { color: '{{foreground-2}}'; } md-list.md-THEME_NAME-theme md-list-item > md-icon.md-highlight { color: '{{primary-color}}'; } md-list.md-THEME_NAME-theme md-list-item > md-icon.md-highlight.md-accent { color: '{{accent-color}}'; }md-list.md-THEME_NAME-theme md-list-item button { background-color: '{{background-color}}'; } md-list.md-THEME_NAME-theme md-list-item button.md-button:not([disabled]):hover { background-color: '{{background-color}}'; }md-menu-content.md-THEME_NAME-theme { background-color: '{{background-color}}'; } md-menu-content.md-THEME_NAME-theme md-menu-divider { background-color: '{{foreground-4}}'; }md-progress-circular.md-THEME_NAME-theme { background-color: transparent; } md-progress-circular.md-THEME_NAME-theme .md-inner .md-gap { border-top-color: '{{primary-color}}'; border-bottom-color: '{{primary-color}}'; } md-progress-circular.md-THEME_NAME-theme .md-inner .md-left .md-half-circle, md-progress-circular.md-THEME_NAME-theme .md-inner .md-right .md-half-circle { border-top-color: '{{primary-color}}'; } md-progress-circular.md-THEME_NAME-theme .md-inner .md-right .md-half-circle { border-right-color: '{{primary-color}}'; } md-progress-circular.md-THEME_NAME-theme .md-inner .md-left .md-half-circle { border-left-color: '{{primary-color}}'; } md-progress-circular.md-THEME_NAME-theme.md-warn .md-inner .md-gap { border-top-color: '{{warn-color}}'; border-bottom-color: '{{warn-color}}'; } md-progress-circular.md-THEME_NAME-theme.md-warn .md-inner .md-left .md-half-circle, md-progress-circular.md-THEME_NAME-theme.md-warn .md-inner .md-right .md-half-circle { border-top-color: '{{warn-color}}'; } md-progress-circular.md-THEME_NAME-theme.md-warn .md-inner .md-right .md-half-circle { border-right-color: '{{warn-color}}'; } md-progress-circular.md-THEME_NAME-theme.md-warn .md-inner .md-left .md-half-circle { border-left-color: '{{warn-color}}'; } md-progress-circular.md-THEME_NAME-theme.md-accent .md-inner .md-gap { border-top-color: '{{accent-color}}'; border-bottom-color: '{{accent-color}}'; } md-progress-circular.md-THEME_NAME-theme.md-accent .md-inner .md-left .md-half-circle, md-progress-circular.md-THEME_NAME-theme.md-accent .md-inner .md-right .md-half-circle { border-top-color: '{{accent-color}}'; } md-progress-circular.md-THEME_NAME-theme.md-accent .md-inner .md-right .md-half-circle { border-right-color: '{{accent-color}}'; } md-progress-circular.md-THEME_NAME-theme.md-accent .md-inner .md-left .md-half-circle { border-left-color: '{{accent-color}}'; }md-progress-linear.md-THEME_NAME-theme .md-container { background-color: '{{primary-100}}'; }md-progress-linear.md-THEME_NAME-theme .md-bar { background-color: '{{primary-color}}'; }md-progress-linear.md-THEME_NAME-theme.md-warn .md-container { background-color: '{{warn-100}}'; }md-progress-linear.md-THEME_NAME-theme.md-warn .md-bar { background-color: '{{warn-color}}'; }md-progress-linear.md-THEME_NAME-theme.md-accent .md-container { background-color: '{{accent-100}}'; }md-progress-linear.md-THEME_NAME-theme.md-accent .md-bar { background-color: '{{accent-color}}'; }md-progress-linear.md-THEME_NAME-theme[md-mode=buffer].md-warn .md-bar1 { background-color: '{{warn-100}}'; }md-progress-linear.md-THEME_NAME-theme[md-mode=buffer].md-warn .md-dashed:before { background: radial-gradient('{{warn-100}}' 0%, '{{warn-100}}' 16%, transparent 42%); }md-progress-linear.md-THEME_NAME-theme[md-mode=buffer].md-accent .md-bar1 { background-color: '{{accent-100}}'; }md-progress-linear.md-THEME_NAME-theme[md-mode=buffer].md-accent .md-dashed:before { background: radial-gradient('{{accent-100}}' 0%, '{{accent-100}}' 16%, transparent 42%); }md-radio-button.md-THEME_NAME-theme .md-off { border-color: '{{foreground-2}}'; }md-radio-button.md-THEME_NAME-theme .md-on { background-color: '{{accent-color-0.87}}'; }md-radio-button.md-THEME_NAME-theme.md-checked .md-off { border-color: '{{accent-color-0.87}}'; }md-radio-button.md-THEME_NAME-theme.md-checked .md-ink-ripple { color: '{{accent-color-0.87}}'; }md-radio-button.md-THEME_NAME-theme .md-container .md-ripple { color: '{{accent-600}}'; }md-radio-group.md-THEME_NAME-theme:not([disabled]) .md-primary .md-on, md-radio-group.md-THEME_NAME-theme:not([disabled]).md-primary .md-on, md-radio-button.md-THEME_NAME-theme:not([disabled]) .md-primary .md-on, md-radio-button.md-THEME_NAME-theme:not([disabled]).md-primary .md-on { background-color: '{{primary-color-0.87}}'; }md-radio-group.md-THEME_NAME-theme:not([disabled]) .md-primary .md-checked .md-off, md-radio-group.md-THEME_NAME-theme:not([disabled]) .md-primary.md-checked .md-off, md-radio-group.md-THEME_NAME-theme:not([disabled]).md-primary .md-checked .md-off, md-radio-group.md-THEME_NAME-theme:not([disabled]).md-primary.md-checked .md-off, md-radio-button.md-THEME_NAME-theme:not([disabled]) .md-primary .md-checked .md-off, md-radio-button.md-THEME_NAME-theme:not([disabled]) .md-primary.md-checked .md-off, md-radio-button.md-THEME_NAME-theme:not([disabled]).md-primary .md-checked .md-off, md-radio-button.md-THEME_NAME-theme:not([disabled]).md-primary.md-checked .md-off { border-color: '{{primary-color-0.87}}'; }md-radio-group.md-THEME_NAME-theme:not([disabled]) .md-primary .md-checked .md-ink-ripple, md-radio-group.md-THEME_NAME-theme:not([disabled]) .md-primary.md-checked .md-ink-ripple, md-radio-group.md-THEME_NAME-theme:not([disabled]).md-primary .md-checked .md-ink-ripple, md-radio-group.md-THEME_NAME-theme:not([disabled]).md-primary.md-checked .md-ink-ripple, md-radio-button.md-THEME_NAME-theme:not([disabled]) .md-primary .md-checked .md-ink-ripple, md-radio-button.md-THEME_NAME-theme:not([disabled]) .md-primary.md-checked .md-ink-ripple, md-radio-button.md-THEME_NAME-theme:not([disabled]).md-primary .md-checked .md-ink-ripple, md-radio-button.md-THEME_NAME-theme:not([disabled]).md-primary.md-checked .md-ink-ripple { color: '{{primary-color-0.87}}'; }md-radio-group.md-THEME_NAME-theme:not([disabled]) .md-primary .md-container .md-ripple, md-radio-group.md-THEME_NAME-theme:not([disabled]).md-primary .md-container .md-ripple, md-radio-button.md-THEME_NAME-theme:not([disabled]) .md-primary .md-container .md-ripple, md-radio-button.md-THEME_NAME-theme:not([disabled]).md-primary .md-container .md-ripple { color: '{{primary-600}}'; }md-radio-group.md-THEME_NAME-theme:not([disabled]) .md-warn .md-on, md-radio-group.md-THEME_NAME-theme:not([disabled]).md-warn .md-on, md-radio-button.md-THEME_NAME-theme:not([disabled]) .md-warn .md-on, md-radio-button.md-THEME_NAME-theme:not([disabled]).md-warn .md-on { background-color: '{{warn-color-0.87}}'; }md-radio-group.md-THEME_NAME-theme:not([disabled]) .md-warn .md-checked .md-off, md-radio-group.md-THEME_NAME-theme:not([disabled]) .md-warn.md-checked .md-off, md-radio-group.md-THEME_NAME-theme:not([disabled]).md-warn .md-checked .md-off, md-radio-group.md-THEME_NAME-theme:not([disabled]).md-warn.md-checked .md-off, md-radio-button.md-THEME_NAME-theme:not([disabled]) .md-warn .md-checked .md-off, md-radio-button.md-THEME_NAME-theme:not([disabled]) .md-warn.md-checked .md-off, md-radio-button.md-THEME_NAME-theme:not([disabled]).md-warn .md-checked .md-off, md-radio-button.md-THEME_NAME-theme:not([disabled]).md-warn.md-checked .md-off { border-color: '{{warn-color-0.87}}'; }md-radio-group.md-THEME_NAME-theme:not([disabled]) .md-warn .md-checked .md-ink-ripple, md-radio-group.md-THEME_NAME-theme:not([disabled]) .md-warn.md-checked .md-ink-ripple, md-radio-group.md-THEME_NAME-theme:not([disabled]).md-warn .md-checked .md-ink-ripple, md-radio-group.md-THEME_NAME-theme:not([disabled]).md-warn.md-checked .md-ink-ripple, md-radio-button.md-THEME_NAME-theme:not([disabled]) .md-warn .md-checked .md-ink-ripple, md-radio-button.md-THEME_NAME-theme:not([disabled]) .md-warn.md-checked .md-ink-ripple, md-radio-button.md-THEME_NAME-theme:not([disabled]).md-warn .md-checked .md-ink-ripple, md-radio-button.md-THEME_NAME-theme:not([disabled]).md-warn.md-checked .md-ink-ripple { color: '{{warn-color-0.87}}'; }md-radio-group.md-THEME_NAME-theme:not([disabled]) .md-warn .md-container .md-ripple, md-radio-group.md-THEME_NAME-theme:not([disabled]).md-warn .md-container .md-ripple, md-radio-button.md-THEME_NAME-theme:not([disabled]) .md-warn .md-container .md-ripple, md-radio-button.md-THEME_NAME-theme:not([disabled]).md-warn .md-container .md-ripple { color: '{{warn-600}}'; }md-radio-group.md-THEME_NAME-theme[disabled], md-radio-button.md-THEME_NAME-theme[disabled] { color: '{{foreground-3}}'; } md-radio-group.md-THEME_NAME-theme[disabled] .md-container .md-off, md-radio-button.md-THEME_NAME-theme[disabled] .md-container .md-off { border-color: '{{foreground-3}}'; } md-radio-group.md-THEME_NAME-theme[disabled] .md-container .md-on, md-radio-button.md-THEME_NAME-theme[disabled] .md-container .md-on { border-color: '{{foreground-3}}'; }md-radio-group.md-THEME_NAME-theme.md-focused:not(:empty) .md-checked .md-container:before { background-color: '{{accent-color-0.26}}'; }md-radio-group.md-THEME_NAME-theme.md-focused:not(:empty) .md-checked:not([disabled]).md-primary .md-container:before { background-color: '{{primary-color-0.26}}'; }md-radio-group.md-THEME_NAME-theme.md-focused:not(:empty) .md-checked.md-primary .md-container:before { background-color: '{{warn-color-0.26}}'; }md-select.md-THEME_NAME-theme .md-select-value { border-bottom-color: '{{foreground-4}}'; } md-select.md-THEME_NAME-theme .md-select-value.md-select-placeholder { color: '{{foreground-3}}'; }md-select.md-THEME_NAME-theme.ng-invalid.ng-dirty .md-select-value { color: '{{warn-500}}' !important; border-bottom-color: '{{warn-500}}' !important; }md-select.md-THEME_NAME-theme:not([disabled]):focus .md-select-value { border-bottom-color: '{{primary-color}}'; color: '{{ foreground-1 }}'; } md-select.md-THEME_NAME-theme:not([disabled]):focus .md-select-value.md-select-placeholder { color: '{{ foreground-1 }}'; }md-select.md-THEME_NAME-theme:not([disabled]):focus.md-accent .md-select-value { border-bottom-color: '{{accent-color}}'; }md-select.md-THEME_NAME-theme:not([disabled]):focus.md-warn .md-select-value { border-bottom-color: '{{warn-color}}'; }md-select.md-THEME_NAME-theme[disabled] .md-select-value { color: '{{foreground-3}}'; } md-select.md-THEME_NAME-theme[disabled] .md-select-value.md-select-placeholder { color: '{{foreground-3}}'; }md-select-menu.md-THEME_NAME-theme md-option[disabled] { color: '{{foreground-3}}'; }md-select-menu.md-THEME_NAME-theme md-optgroup { color: '{{foreground-2}}'; } md-select-menu.md-THEME_NAME-theme md-optgroup md-option { color: '{{foreground-1}}'; }md-select-menu.md-THEME_NAME-theme md-option[selected] { color: '{{primary-500}}'; } md-select-menu.md-THEME_NAME-theme md-option[selected]:focus { color: '{{primary-600}}'; } md-select-menu.md-THEME_NAME-theme md-option[selected].md-accent { color: '{{accent-500}}'; } md-select-menu.md-THEME_NAME-theme md-option[selected].md-accent:focus { color: '{{accent-600}}'; }md-select-menu.md-THEME_NAME-theme md-option:focus:not([selected]) { background: '{{background-200}}'; }md-sidenav.md-THEME_NAME-theme { background-color: '{{background-color}}'; }md-slider.md-THEME_NAME-theme .md-track { background-color: '{{foreground-3}}'; }md-slider.md-THEME_NAME-theme .md-track-ticks { background-color: '{{foreground-4}}'; }md-slider.md-THEME_NAME-theme .md-focus-thumb { background-color: '{{foreground-2}}'; }md-slider.md-THEME_NAME-theme .md-focus-ring { background-color: '{{accent-color}}'; }md-slider.md-THEME_NAME-theme .md-disabled-thumb { border-color: '{{background-color}}'; }md-slider.md-THEME_NAME-theme.md-min .md-thumb:after { background-color: '{{background-color}}'; }md-slider.md-THEME_NAME-theme .md-track.md-track-fill { background-color: '{{accent-color}}'; }md-slider.md-THEME_NAME-theme .md-thumb:after { border-color: '{{accent-color}}'; background-color: '{{accent-color}}'; }md-slider.md-THEME_NAME-theme .md-sign { background-color: '{{accent-color}}'; } md-slider.md-THEME_NAME-theme .md-sign:after { border-top-color: '{{accent-color}}'; }md-slider.md-THEME_NAME-theme .md-thumb-text { color: '{{accent-contrast}}'; }md-slider.md-THEME_NAME-theme.md-warn .md-focus-ring { background-color: '{{warn-color}}'; }md-slider.md-THEME_NAME-theme.md-warn .md-track.md-track-fill { background-color: '{{warn-color}}'; }md-slider.md-THEME_NAME-theme.md-warn .md-thumb:after { border-color: '{{warn-color}}'; background-color: '{{warn-color}}'; }md-slider.md-THEME_NAME-theme.md-warn .md-sign { background-color: '{{warn-color}}'; } md-slider.md-THEME_NAME-theme.md-warn .md-sign:after { border-top-color: '{{warn-color}}'; }md-slider.md-THEME_NAME-theme.md-warn .md-thumb-text { color: '{{warn-contrast}}'; }md-slider.md-THEME_NAME-theme.md-primary .md-focus-ring { background-color: '{{primary-color}}'; }md-slider.md-THEME_NAME-theme.md-primary .md-track.md-track-fill { background-color: '{{primary-color}}'; }md-slider.md-THEME_NAME-theme.md-primary .md-thumb:after { border-color: '{{primary-color}}'; background-color: '{{primary-color}}'; }md-slider.md-THEME_NAME-theme.md-primary .md-sign { background-color: '{{primary-color}}'; } md-slider.md-THEME_NAME-theme.md-primary .md-sign:after { border-top-color: '{{primary-color}}'; }md-slider.md-THEME_NAME-theme.md-primary .md-thumb-text { color: '{{primary-contrast}}'; }md-slider.md-THEME_NAME-theme[disabled] .md-thumb:after { border-color: '{{foreground-3}}'; }md-slider.md-THEME_NAME-theme[disabled]:not(.md-min) .md-thumb:after { background-color: '{{foreground-3}}'; }.md-subheader.md-THEME_NAME-theme { color: '{{ foreground-2-0.23 }}'; background-color: '{{background-color}}'; } .md-subheader.md-THEME_NAME-theme.md-primary { color: '{{primary-color}}'; } .md-subheader.md-THEME_NAME-theme.md-accent { color: '{{accent-color}}'; } .md-subheader.md-THEME_NAME-theme.md-warn { color: '{{warn-color}}'; }md-switch.md-THEME_NAME-theme .md-thumb { background-color: '{{background-50}}'; }md-switch.md-THEME_NAME-theme .md-bar { background-color: '{{background-500}}'; }md-switch.md-THEME_NAME-theme.md-checked .md-thumb { background-color: '{{accent-color}}'; }md-switch.md-THEME_NAME-theme.md-checked .md-bar { background-color: '{{accent-color-0.5}}'; }md-switch.md-THEME_NAME-theme.md-checked.md-focused .md-thumb:before { background-color: '{{accent-color-0.26}}'; }md-switch.md-THEME_NAME-theme.md-checked.md-primary .md-thumb { background-color: '{{primary-color}}'; }md-switch.md-THEME_NAME-theme.md-checked.md-primary .md-bar { background-color: '{{primary-color-0.5}}'; }md-switch.md-THEME_NAME-theme.md-checked.md-primary.md-focused .md-thumb:before { background-color: '{{primary-color-0.26}}'; }md-switch.md-THEME_NAME-theme.md-checked.md-warn .md-thumb { background-color: '{{warn-color}}'; }md-switch.md-THEME_NAME-theme.md-checked.md-warn .md-bar { background-color: '{{warn-color-0.5}}'; }md-switch.md-THEME_NAME-theme.md-checked.md-warn.md-focused .md-thumb:before { background-color: '{{warn-color-0.26}}'; }md-switch.md-THEME_NAME-theme[disabled] .md-thumb { background-color: '{{background-400}}'; }md-switch.md-THEME_NAME-theme[disabled] .md-bar { background-color: '{{foreground-4}}'; }md-tabs.md-THEME_NAME-theme md-tabs-wrapper { background-color: transparent; border-color: '{{foreground-4}}'; }md-tabs.md-THEME_NAME-theme .md-paginator md-icon { color: '{{primary-color}}'; }md-tabs.md-THEME_NAME-theme md-ink-bar { color: '{{accent-color}}'; background: '{{accent-color}}'; }md-tabs.md-THEME_NAME-theme .md-tab { color: '{{foreground-2}}'; } md-tabs.md-THEME_NAME-theme .md-tab[disabled] { color: '{{foreground-3}}'; } md-tabs.md-THEME_NAME-theme .md-tab.md-active, md-tabs.md-THEME_NAME-theme .md-tab.md-focused { color: '{{primary-color}}'; } md-tabs.md-THEME_NAME-theme .md-tab.md-focused { background: '{{primary-color-0.1}}'; } md-tabs.md-THEME_NAME-theme .md-tab .md-ripple-container { color: '{{accent-100}}'; }md-tabs.md-THEME_NAME-theme.md-accent > md-tabs-wrapper { background-color: '{{accent-color}}'; } md-tabs.md-THEME_NAME-theme.md-accent > md-tabs-wrapper > md-tabs-canvas > md-pagination-wrapper > md-tab-item:not([disabled]) { color: '{{accent-100}}'; } md-tabs.md-THEME_NAME-theme.md-accent > md-tabs-wrapper > md-tabs-canvas > md-pagination-wrapper > md-tab-item:not([disabled]).md-active, md-tabs.md-THEME_NAME-theme.md-accent > md-tabs-wrapper > md-tabs-canvas > md-pagination-wrapper > md-tab-item:not([disabled]).md-focused { color: '{{accent-contrast}}'; } md-tabs.md-THEME_NAME-theme.md-accent > md-tabs-wrapper > md-tabs-canvas > md-pagination-wrapper > md-tab-item:not([disabled]).md-focused { background: '{{accent-contrast-0.1}}'; } md-tabs.md-THEME_NAME-theme.md-accent > md-tabs-wrapper > md-tabs-canvas > md-pagination-wrapper > md-ink-bar { color: '{{primary-600-1}}'; background: '{{primary-600-1}}'; }md-tabs.md-THEME_NAME-theme.md-primary > md-tabs-wrapper { background-color: '{{primary-color}}'; } md-tabs.md-THEME_NAME-theme.md-primary > md-tabs-wrapper > md-tabs-canvas > md-pagination-wrapper > md-tab-item:not([disabled]) { color: '{{primary-100}}'; } md-tabs.md-THEME_NAME-theme.md-primary > md-tabs-wrapper > md-tabs-canvas > md-pagination-wrapper > md-tab-item:not([disabled]).md-active, md-tabs.md-THEME_NAME-theme.md-primary > md-tabs-wrapper > md-tabs-canvas > md-pagination-wrapper > md-tab-item:not([disabled]).md-focused { color: '{{primary-contrast}}'; } md-tabs.md-THEME_NAME-theme.md-primary > md-tabs-wrapper > md-tabs-canvas > md-pagination-wrapper > md-tab-item:not([disabled]).md-focused { background: '{{primary-contrast-0.1}}'; }md-tabs.md-THEME_NAME-theme.md-warn > md-tabs-wrapper { background-color: '{{warn-color}}'; } md-tabs.md-THEME_NAME-theme.md-warn > md-tabs-wrapper > md-tabs-canvas > md-pagination-wrapper > md-tab-item:not([disabled]) { color: '{{warn-100}}'; } md-tabs.md-THEME_NAME-theme.md-warn > md-tabs-wrapper > md-tabs-canvas > md-pagination-wrapper > md-tab-item:not([disabled]).md-active, md-tabs.md-THEME_NAME-theme.md-warn > md-tabs-wrapper > md-tabs-canvas > md-pagination-wrapper > md-tab-item:not([disabled]).md-focused { color: '{{warn-contrast}}'; } md-tabs.md-THEME_NAME-theme.md-warn > md-tabs-wrapper > md-tabs-canvas > md-pagination-wrapper > md-tab-item:not([disabled]).md-focused { background: '{{warn-contrast-0.1}}'; }md-toolbar > md-tabs.md-THEME_NAME-theme > md-tabs-wrapper { background-color: '{{primary-color}}'; } md-toolbar > md-tabs.md-THEME_NAME-theme > md-tabs-wrapper > md-tabs-canvas > md-pagination-wrapper > md-tab-item:not([disabled]) { color: '{{primary-100}}'; } md-toolbar > md-tabs.md-THEME_NAME-theme > md-tabs-wrapper > md-tabs-canvas > md-pagination-wrapper > md-tab-item:not([disabled]).md-active, md-toolbar > md-tabs.md-THEME_NAME-theme > md-tabs-wrapper > md-tabs-canvas > md-pagination-wrapper > md-tab-item:not([disabled]).md-focused { color: '{{primary-contrast}}'; } md-toolbar > md-tabs.md-THEME_NAME-theme > md-tabs-wrapper > md-tabs-canvas > md-pagination-wrapper > md-tab-item:not([disabled]).md-focused { background: '{{primary-contrast-0.1}}'; }md-toolbar.md-accent > md-tabs.md-THEME_NAME-theme > md-tabs-wrapper { background-color: '{{accent-color}}'; } md-toolbar.md-accent > md-tabs.md-THEME_NAME-theme > md-tabs-wrapper > md-tabs-canvas > md-pagination-wrapper > md-tab-item:not([disabled]) { color: '{{accent-100}}'; } md-toolbar.md-accent > md-tabs.md-THEME_NAME-theme > md-tabs-wrapper > md-tabs-canvas > md-pagination-wrapper > md-tab-item:not([disabled]).md-active, md-toolbar.md-accent > md-tabs.md-THEME_NAME-theme > md-tabs-wrapper > md-tabs-canvas > md-pagination-wrapper > md-tab-item:not([disabled]).md-focused { color: '{{accent-contrast}}'; } md-toolbar.md-accent > md-tabs.md-THEME_NAME-theme > md-tabs-wrapper > md-tabs-canvas > md-pagination-wrapper > md-tab-item:not([disabled]).md-focused { background: '{{accent-contrast-0.1}}'; } md-toolbar.md-accent > md-tabs.md-THEME_NAME-theme > md-tabs-wrapper > md-tabs-canvas > md-pagination-wrapper > md-ink-bar { color: '{{primary-600-1}}'; background: '{{primary-600-1}}'; }md-toolbar.md-warn > md-tabs.md-THEME_NAME-theme > md-tabs-wrapper { background-color: '{{warn-color}}'; } md-toolbar.md-warn > md-tabs.md-THEME_NAME-theme > md-tabs-wrapper > md-tabs-canvas > md-pagination-wrapper > md-tab-item:not([disabled]) { color: '{{warn-100}}'; } md-toolbar.md-warn > md-tabs.md-THEME_NAME-theme > md-tabs-wrapper > md-tabs-canvas > md-pagination-wrapper > md-tab-item:not([disabled]).md-active, md-toolbar.md-warn > md-tabs.md-THEME_NAME-theme > md-tabs-wrapper > md-tabs-canvas > md-pagination-wrapper > md-tab-item:not([disabled]).md-focused { color: '{{warn-contrast}}'; } md-toolbar.md-warn > md-tabs.md-THEME_NAME-theme > md-tabs-wrapper > md-tabs-canvas > md-pagination-wrapper > md-tab-item:not([disabled]).md-focused { background: '{{warn-contrast-0.1}}'; }md-toast.md-THEME_NAME-theme { background-color: #323232; color: '{{background-50}}'; } md-toast.md-THEME_NAME-theme .md-button { color: '{{background-50}}'; } md-toast.md-THEME_NAME-theme .md-button.md-highlight { color: '{{primary-A200}}'; } md-toast.md-THEME_NAME-theme .md-button.md-highlight.md-accent { color: '{{accent-A200}}'; } md-toast.md-THEME_NAME-theme .md-button.md-highlight.md-warn { color: '{{warn-A200}}'; }md-toolbar.md-THEME_NAME-theme { background-color: '{{primary-color}}'; color: '{{primary-contrast}}'; } md-toolbar.md-THEME_NAME-theme md-icon { color: '{{primary-contrast}}'; } md-toolbar.md-THEME_NAME-theme .md-button { color: '{{primary-contrast}}'; } md-toolbar.md-THEME_NAME-theme.md-accent { background-color: '{{accent-color}}'; color: '{{accent-contrast}}'; } md-toolbar.md-THEME_NAME-theme.md-warn { background-color: '{{warn-color}}'; color: '{{warn-contrast}}'; }md-tooltip.md-THEME_NAME-theme { color: '{{background-A100}}'; } md-tooltip.md-THEME_NAME-theme .md-background { background-color: '{{foreground-2}}'; }"); })(); diff --git a/UI/WebServerResources/js/vendor/angular-material.min.js b/UI/WebServerResources/js/vendor/angular-material.min.js index b10372c71..09c23a721 100644 --- a/UI/WebServerResources/js/vendor/angular-material.min.js +++ b/UI/WebServerResources/js/vendor/angular-material.min.js @@ -2,14 +2,16 @@ * Angular Material Design * https://github.com/angular/material * @license MIT - * v0.10.1-master-8c71d0c + * v0.10.1-master-c9f2b9f */ -!function(e,t,n){"use strict";!function(){t.module("ngMaterial",["ng","ngAnimate","ngAria","material.core","material.core.gestures","material.core.theming.palette","material.core.theming","material.animate","material.components.autocomplete","material.components.backdrop","material.components.bottomSheet","material.components.button","material.components.card","material.components.checkbox","material.components.chips","material.components.content","material.components.datepicker","material.components.dialog","material.components.divider","material.components.fabActions","material.components.fabShared","material.components.fabSpeedDial","material.components.fabToolbar","material.components.fabTrigger","material.components.gridList","material.components.icon","material.components.input","material.components.list","material.components.menu","material.components.progressCircular","material.components.progressLinear","material.components.radioButton","material.components.select","material.components.sidenav","material.components.slider","material.components.sticky","material.components.subheader","material.components.swipe","material.components.switch","material.components.tabs","material.components.toast","material.components.toolbar","material.components.tooltip","material.components.virtualRepeat","material.components.whiteframe"])}(),function(){function e(e,t){e.decorator("$$rAF",["$delegate",o]),t.theme("default").primaryPalette("indigo").accentPalette("pink").warnPalette("red").backgroundPalette("grey")}function n(e){return{restrict:"A",scope:{template:"=mdTemplate"},link:function(t,n){function o(o){n.html(o),e(n.contents())(t)}t.$watch("template",o)}}}function o(e){return e.throttle=function(t){var n,o,r,i;return function(){n=arguments,i=this,r=t,o||(o=!0,e(function(){r.apply(i,Array.prototype.slice.call(n)),o=!1}))}},e}t.module("material.core",["ngAnimate","material.animate","material.core.gestures","material.core.theming"]).directive("mdTemplate",n).config(e),e.$inject=["$provide","$mdThemingProvider"],n.$inject=["$compile"]}(),function(){function e(e){function t(e){return n?"webkit"+e.charAt(0).toUpperCase()+e.substring(1):e}var n=/webkit/i.test(e.vendorPrefix);return{KEY_CODE:{ENTER:13,ESCAPE:27,SPACE:32,PAGE_UP:33,PAGE_DOWN:34,END:35,HOME:36,LEFT_ARROW:37,UP_ARROW:38,RIGHT_ARROW:39,DOWN_ARROW:40,TAB:9,BACKSPACE:8,DELETE:46},CSS:{TRANSITIONEND:"transitionend"+(n?" webkitTransitionEnd":""),ANIMATIONEND:"animationend"+(n?" webkitAnimationEnd":""),TRANSFORM:t("transform"),TRANSFORM_ORIGIN:t("transformOrigin"),TRANSITION:t("transition"),TRANSITION_DURATION:t("transitionDuration"),ANIMATION_PLAY_STATE:t("animationPlayState"),ANIMATION_DURATION:t("animationDuration"),ANIMATION_NAME:t("animationName"),ANIMATION_TIMING:t("animationTimingFunction"),ANIMATION_DIRECTION:t("animationDirection")},MEDIA:{sm:"(max-width: 599px)","gt-sm":"(min-width: 600px)",md:"(min-width: 600px) and (max-width: 959px)","gt-md":"(min-width: 960px)",lg:"(min-width: 960px) and (max-width: 1199px)","gt-lg":"(min-width: 1200px)"},MEDIA_PRIORITY:["gt-lg","lg","gt-md","md","gt-sm","sm"]}}t.module("material.core").factory("$mdConstant",e),e.$inject=["$sniffer"]}(),function(){function e(e,n){function o(){return[].concat(E)}function r(){return E.length}function i(e){return E.length&&e>-1&&e-1}function p(){return E.length?E[0]:null}function f(){return E.length?E[E.length-1]:null}function g(e,o,r,a){r=r||b;for(var d=u(o);;){if(!i(d))return null;var c=d+(e?-1:1),l=null;if(i(c)?l=E[c]:n&&(l=e?f():p(),c=u(l)),null===l||c===a)return null;if(r(l))return l;t.isUndefined(a)&&(a=c),d=c}}var b=function(){return!0};e&&!t.isArray(e)&&(e=Array.prototype.slice.call(e)),n=!!n;var E=e||[];return{items:o,count:r,inRange:i,contains:h,indexOf:u,itemAt:c,findBy:l,add:s,remove:m,first:p,last:f,next:t.bind(null,g,!1),previous:t.bind(null,g,!0),hasPrevious:d,hasNext:a}}t.module("material.core").config(["$provide",function(t){t.decorator("$mdUtil",["$delegate",function(t){return t.iterator=e,t}])}])}(),function(){function e(e,n,o){function r(e){var n=u[e];t.isUndefined(n)&&(n=u[e]=i(e));var o=p[n];return t.isUndefined(o)&&(o=a(n)),o}function i(t){return e.MEDIA[t]||("("!==t.charAt(0)?"("+t+")":t)}function a(e){var t=h[e]=o.matchMedia(e);return t.addListener(d),p[t.media]=!!t.matches}function d(e){n.$evalAsync(function(){p[e.media]=!!e.matches})}function c(e){return h[e]}function l(t,n){for(var o=0;o
');return e.appendChild(a[0]),a.on("wheel",r),a.on("touchmove",r),o.on("keydown",n),function(){a.off("wheel"),a.off("touchmove"),a[0].parentNode.removeChild(a[0]),o.off("keydown",n),delete p.disableScrollAround._enableScrolling}}function i(){var e=d.parentNode,t=e.getAttribute("style")||"",n=d.getAttribute("style")||"",o=p.scrollTop(d),r=d.clientWidth;return d.scrollHeight>d.clientHeight&&(a(d,{position:"fixed",width:"100%",top:-o+"px"}),a(e,{overflowY:"scroll"})),d.clientWidth
');o[0].body.appendChild(e[0]),this.floatingScrollbars.cached=e[0].offsetWidth==e[0].childNodes[0].offsetWidth,e.remove()}return this.floatingScrollbars.cached},forceFocus:function(t){var n=t[0]||t;document.addEventListener("click",function r(e){e.target===n&&e.$focus&&(n.focus(),e.stopImmediatePropagation(),e.preventDefault(),n.removeEventListener("click",r))},!0);var o=document.createEvent("MouseEvents");o.initMouseEvent("click",!1,!0,e,{},0,0,0,0,!1,!1,!1,!1,0,null),o.$material=!0,o.$focus=!0,n.dispatchEvent(o)},createBackdrop:function(e,t){return a(p.supplant('',[t]))(e)},supplant:function(e,t,n){return n=n||/\{([^\{\}]*)\}/g,e.replace(n,function(e,n){var o=n.split("."),r=t;try{for(var i in o)r=r[o[i]]}catch(a){r=e}return"string"==typeof r||"number"==typeof r?r:e})},fakeNgModel:function(){return{$fake:!0,$setTouched:t.noop,$setViewValue:function(e){this.$viewValue=e,this.$render(e),this.$viewChangeListeners.forEach(function(e){e()})},$isEmpty:function(e){return 0===(""+e).length},$parsers:[],$formatters:[],$viewChangeListeners:[],$render:t.noop}},debounce:function(e,t,o,r){var a;return function(){var d=o,c=Array.prototype.slice.call(arguments);i.cancel(a),a=i(function(){a=n,e.apply(d,c)},t||10,r)}},throttle:function(e,t){var n;return function(){var o=this,r=arguments,i=p.now();(!n||i-n>t)&&(e.apply(o,r),n=i)}},time:function(e){var t=p.now();return e(),p.now()-t},nextUid:function(){return""+r++},disconnectScope:function(e){if(e&&e.$root!==e&&!e.$$destroyed){var t=e.$parent;e.$$disconnected=!0,t.$$childHead===e&&(t.$$childHead=e.$$nextSibling),t.$$childTail===e&&(t.$$childTail=e.$$prevSibling),e.$$prevSibling&&(e.$$prevSibling.$$nextSibling=e.$$nextSibling),e.$$nextSibling&&(e.$$nextSibling.$$prevSibling=e.$$prevSibling),e.$$nextSibling=e.$$prevSibling=null}},reconnectScope:function(e){if(e&&e.$root!==e&&e.$$disconnected){var t=e,n=t.$parent;t.$$disconnected=!1,t.$$prevSibling=n.$$childTail,n.$$childHead?(n.$$childTail.$$nextSibling=t,n.$$childTail=t):n.$$childHead=n.$$childTail=t}},getClosest:function(e,n,o){if(e instanceof t.element&&(e=e[0]),n=n.toUpperCase(),o&&(e=e.parentNode),!e)return null;do if(e.nodeName===n)return e;while(e=e.parentNode);return null},elementContains:function(n,o){var r=e.Node&&e.Node.prototype&&Node.prototype.contains,i=r?t.bind(n,n.contains):t.bind(n,function(e){return n===o||!!(16&this.compareDocumentPosition(e))});return i(o)},extractElementByName:function(e,n){for(var o=0,r=e.length;r>o;o++)if(e[o].nodeName.toLowerCase()===n)return t.element(e[o]);return e},initOptionalProperties:function(e,n,o){o=o||{},t.forEach(e.$$isolateBindings,function(r,i){if(r.optional&&t.isUndefined(e[i])){var a=t.isDefined(n[r.attrName]);e[i]=t.isDefined(o[i])?o[i]:a}})},nextTick:function(e,t){function n(){var e=o.queue,t=o.digest;o.queue=[],o.timeout=null,o.digest=!1,e.forEach(function(e){e()}),t&&d.$digest()}var o=p.nextTick,r=o.timeout,a=o.queue||[];return a.push(e),null==t&&(t=!0),o.digest=o.digest||t,o.queue=a,r||(o.timeout=i(n,0,!1))},processTemplate:function(e){return h?e:e&&t.isString(e)?e.replace(/\{\{/g,m).replace(/}}/g,u):e}};return p.dom.animator=c(p),p}var r=0;t.module("material.core").factory("$mdUtil",o),o.$inject=["$document","$timeout","$compile","$rootScope","$$mdAnimate","$interpolate"],t.element.prototype.focus=t.element.prototype.focus||function(){return this.length&&this[0].focus(),this},t.element.prototype.blur=t.element.prototype.blur||function(){return this.length&&this[0].blur(),this}}(),function(){function e(e,n,o){function r(e,o,r){var i=e[0]||e;!i||i.hasAttribute(o)&&0!==i.getAttribute(o).length||c(i,o)||(r=t.isString(r)?r.trim():"",r.length?e.attr(o,r):n.warn('ARIA: Attribute "',o,'", required for accessibility, is missing on node:',i))}function i(t,n,o){e(function(){r(t,n,o())})}function a(e,t){i(e,t,function(){return d(e)})}function d(e){return e.text().trim()}function c(e,t){function n(e){var t=e.currentStyle?e.currentStyle:o.getComputedStyle(e);return"none"===t.display}var r=e.hasChildNodes(),i=!1;if(r)for(var a=e.childNodes,d=0;d").html(o.trim()).contents(),c=r(a);return n={locals:e,element:a,link:function(o){if(e.$scope=o,s){var r=i(s,e,!0);f&&t.extend(r.instance,e);var d=r();a.data("$ngControllerController",d),a.children().data("$ngControllerController",d),m&&(o[m]=d),n.controller=d}return c(o)}}})}}t.module("material.core").service("$mdCompiler",e),e.$inject=["$q","$http","$injector","$compile","$controller","$templateCache"]}(),function(){function n(){}function o(n,o,r){function i(e,t,n){var o=h[t.replace(/^\$md./,"")];if(!o)throw new Error("Failed to register element with handler "+t+". Available handlers: "+Object.keys(h).join(", "));return o.registerElement(e,n)}function a(e,o){var r=new n(e);return t.extend(r,o),h[e]=r,f}var c=navigator.userAgent||navigator.vendor||e.opera,s=c.match(/ipad|iphone|ipod/i),m=c.match(/android/i),u="undefined"!=typeof e.jQuery&&t.element===e.jQuery,f={handler:a,register:i,isHijackingClicks:(s||m)&&!u&&!p};return f.isHijackingClicks&&f.handler("click",{options:{maxDistance:6},onEnd:function(e,t){t.distancethis.options.maxDistance&&this.cancel()},onEnd:function(){this.onCancel()}}).handler("drag",{options:{minDistance:6,horizontal:!0,cancelMultiplier:1.5},onStart:function(e){this.state.registeredParent||this.cancel()},onMove:function(e,t){var n,o;e.preventDefault(),this.state.dragPointer?this.dispatchDragMove(e):(this.state.options.horizontal?(n=Math.abs(t.distanceX)>this.state.options.minDistance,o=Math.abs(t.distanceY)>this.state.options.minDistance*this.state.options.cancelMultiplier):(n=Math.abs(t.distanceY)>this.state.options.minDistance,o=Math.abs(t.distanceX)>this.state.options.minDistance*this.state.options.cancelMultiplier),n?(this.state.dragPointer=d(e),l(e,this.state.dragPointer),this.dispatchEvent(e,"$md.dragstart",this.state.dragPointer)):o&&this.cancel())},dispatchDragMove:o.throttle(function(e){this.state.isRunning&&(l(e,this.state.dragPointer),this.dispatchEvent(e,"$md.drag",this.state.dragPointer))}),onEnd:function(e,t){this.state.dragPointer&&(l(e,this.state.dragPointer),this.dispatchEvent(e,"$md.dragend",this.state.dragPointer))}}).handler("swipe",{options:{minVelocity:.65,minDistance:10},onEnd:function(e,t){if(Math.abs(t.velocityX)>this.state.options.minVelocity&&Math.abs(t.distanceX)>this.state.options.minDistance){var n="left"==t.directionX?"$md.swipeleft":"$md.swiperight";this.dispatchEvent(e,n)}}})}function r(e){this.name=e,this.state={}}function i(){function n(e,n,o){o=o||m;var r=new t.element.Event(n);r.$material=!0,r.pointer=o,r.srcEvent=e,t.extend(r,{clientX:o.x,clientY:o.y,screenX:o.x,screenY:o.y,pageX:o.x,pageY:o.y,ctrlKey:e.ctrlKey,altKey:e.altKey,shiftKey:e.shiftKey,metaKey:e.metaKey}),t.element(o.target).trigger(r)}function o(t,n,o){o=o||m;var r;"click"===n?(r=document.createEvent("MouseEvents"),r.initMouseEvent("click",!0,!0,e,t.detail,o.x,o.y,o.x,o.y,t.ctrlKey,t.altKey,t.shiftKey,t.metaKey,t.button,t.relatedTarget||null)):(r=document.createEvent("CustomEvent"),r.initCustomEvent(n,!0,!0,{})),r.$material=!0,r.pointer=o,r.srcEvent=t,o.target.dispatchEvent(r)}var i="undefined"!=typeof e.jQuery&&t.element===e.jQuery;return r.prototype={options:{},dispatchEvent:i?n:o,onStart:t.noop,onMove:t.noop,onEnd:t.noop,onCancel:t.noop,start:function(e,n){if(!this.state.isRunning){var o=this.getNearestParent(e.target),r=o&&o.$mdGesture[this.name]||{};this.state={isRunning:!0,options:t.extend({},this.options,r),registeredParent:o},this.onStart(e,n)}},move:function(e,t){this.state.isRunning&&this.onMove(e,t)},end:function(e,t){this.state.isRunning&&(this.onEnd(e,t),this.state.isRunning=!1)},cancel:function(e,t){this.onCancel(e,t),this.state={}},getNearestParent:function(e){for(var t=e;t;){if((t.$mdGesture||{})[this.name])return t;t=t.parentNode}return null},registerElement:function(e,t){function n(){delete e[0].$mdGesture[o.name],e.off("$destroy",n)}var o=this;return e[0].$mdGesture=e[0].$mdGesture||{},e[0].$mdGesture[this.name]=t||{},e.on("$destroy",n),n}},r}function a(e,n){function o(e,t){var o;for(var r in h)o=h[r],o instanceof n&&("start"===e&&o.cancel(),o[e](t,m))}function r(e){if(!m){var t=+Date.now();u&&!c(e,u)&&t-u.endTime<1500||(m=d(e),o("start",e))}}function i(e){m&&c(e,m)&&(l(e,m),o("move",e))}function a(e){m&&c(e,m)&&(l(e,m),m.endTime=+Date.now(),o("end",e),u=m,m=null)}document.contains||(document.contains=function(e){return document.body.contains(e)}),!f&&e.isHijackingClicks&&(document.addEventListener("click",function(e){var t=0===e.clientX&&0===e.clientY;t||e.$material||e.isIonicTap||(e.preventDefault(),e.stopPropagation())},!0),f=!0);var s="mousedown touchstart pointerdown",p="mousemove touchmove pointermove",g="mouseup mouseleave touchend touchcancel pointerup pointercancel";t.element(document).on(s,r).on(p,i).on(g,a).on("$$mdGestureReset",function(){u=m=null})}function d(e){var t=s(e),n={startTime:+Date.now(),target:e.target,type:e.type.charAt(0)};return n.startX=n.x=t.pageX,n.startY=n.y=t.pageY,n}function c(e,t){return e&&t&&e.type.charAt(0)===t.type}function l(e,t){var n=s(e),o=t.x=n.pageX,r=t.y=n.pageY;t.distanceX=o-t.startX,t.distanceY=r-t.startY,t.distance=Math.sqrt(t.distanceX*t.distanceX+t.distanceY*t.distanceY),t.directionX=t.distanceX>0?"right":t.distanceX<0?"left":"",t.directionY=t.distanceY>0?"up":t.distanceY<0?"down":"",t.duration=+Date.now()-t.startTime,t.velocityX=t.distanceX/t.duration,t.velocityY=t.distanceY/t.duration}function s(e){return e=e.originalEvent||e,e.touches&&e.touches[0]||e.changedTouches&&e.changedTouches[0]||e}var m,u,h={},p=!1,f=!1;t.module("material.core.gestures",[]).provider("$mdGesture",n).factory("$$MdGestureHandler",i).run(a),n.prototype={skipClickHijack:function(){return p=!0},$get:["$$MdGestureHandler","$$rAF","$timeout",function(e,t,n){return new o(e,t,n)}]},o.$inject=["$$MdGestureHandler","$$rAF","$timeout"],a.$inject=["$mdGesture","$$MdGestureHandler"]}(),function(){function e(){function e(e){function n(e){return c.optionsFactory=e.options,c.methods=(e.methods||[]).concat(a),l}function o(e,t){return d[e]=t,l}function r(t,n){if(n=n||{},n.methods=n.methods||[],n.options=n.options||function(){return{}},/^cancel|hide|show$/.test(t))throw new Error("Preset '"+t+"' in "+e+" is reserved!");if(n.methods.indexOf("_options")>-1)throw new Error("Method '_options' in "+e+" is reserved!");return c.presets[t]={methods:n.methods.concat(a),optionsFactory:n.options,argOption:n.argOption},l}function i(n,o){function r(e){return e=e||{},e._options&&(e=e._options),s.show(t.extend({},l,e))}function i(t,n){var r={};return r[e]=m,o.invoke(t||function(){return n},{},r)}var a,l,s=n(),m={hide:s.hide,cancel:s.cancel,show:r};return a=c.methods||[],l=i(c.optionsFactory,{}),t.forEach(d,function(e,t){m[t]=e}),t.forEach(c.presets,function(e,n){function o(e){this._options=t.extend({},r,e)}var r=i(e.optionsFactory,{}),d=(e.methods||[]).concat(a);if(t.extend(r,{$type:n}),t.forEach(d,function(e){o.prototype[e]=function(t){return this._options[e]=t,this}}),e.argOption){var c="show"+n.charAt(0).toUpperCase()+n.slice(1);m[c]=function(e){var t=m[n](e);return m.show(t)}}m[n]=function(n){return arguments.length&&e.argOption&&!t.isObject(n)&&!t.isArray(n)?(new o)[e.argOption](n):new o(n)}}),m}var a=["onHide","onShow","onRemove"],d={},c={presets:{}},l={setDefaults:n,addPreset:r,addMethod:o,$get:i};return l.addPreset("build",{methods:["controller","controllerAs","resolve","template","templateUrl","themable","transformTemplate","parent"]}),i.$inject=["$$interimElement","$injector"],l}function o(e,o,r,i,a,d,c,l,s,m){return function(){function m(e){var t=new p(e),n=E.length?f.hide():o.when(!0);return n["finally"](function(){E.push(t),t.show()["catch"](function(e){})}),t.deferred.promise}function u(e){var t=E.shift();return t?(t.remove(e||b,!1)["catch"](function(e){}),t.deferred.promise):o.when(e)}function h(e){var t=E.shift();return t?(t.remove(e||g,!0)["catch"](function(e){}),t.deferred.promise):o.when(e)}function p(m){function u(){return o(function(e,t){function n(e){y.deferred.reject(e),t(e)}g(m).then(function(t){A=b(t,m),C=$(A,m,t.controller).then(e,n)})})}function h(e,t){return m.cancelAutoHide&&m.cancelAutoHide(),o(function(n,r){function i(){y.deferred.resolve(e),n(e)}function a(e){y.deferred.reject(e),r(e)}o.when(C)["finally"](function(){M(m.element,m).then(function(){t&&a(e)||i()},a)})})}function p(e){return e=e||{},e.template&&(e.template=c.processTemplate(e.template)),t.extend({preserveScope:!1,cancelAutoHide:t.noop,scope:e.scope||r.$new(e.isolateScope),onShow:function(e,t,n){return d.enter(t,n.parent)},onRemove:function(e,t){return t&&d.leave(t)||o.when()}},e)}function g(e){var t=e.skipCompile?null:l.compile(e);return t||o(function(t){t({locals:{},link:function(){return e.element}})})}function b(e,n){t.extend(e.locals,n);var o=e.link(n.scope);return n.element=o,n.parent=E(o,n),n.themable&&s(o),o}function E(n,o){var r=o.parent;if(r=t.isFunction(r)?r(o.scope,n,o):t.element(t.isString(r)?e[0].querySelector(r):r),!(r||{}).length){var i;return a[0]&&a[0].querySelector&&(i=a[0].querySelector(":not(svg) > body")),i||(i=a[0]),"#comment"==i.nodeName&&(i=e[0].body),t.element(i)}return r}function v(){var e,o=t.noop;m.hideDelay&&(e=i(f.hide,m.hideDelay),o=function(){i.cancel(e)}),m.cancelAutoHide=function(){o(),m.cancelAutoHide=n}}function $(e,n,r){var i=n.onComplete||t.noop;return o(function(t,a){try{o.when(n.onShow(n.scope,e,n,r)).then(function(){i(n.scope,e,n),v(),t(e)},a)}catch(d){a(d.message)}})}function M(e,n){var r=n.onRemoving||t.noop;return o(function(t,i){try{var a=o.when(e?n.onRemove(n.scope,e,n):!0);r(e,a),a.then(function(){!n.preserveScope&&n.scope.$destroy(),t(e)},i)}catch(d){i(d.message)}})}var y,A,C=o.when(!0);return m=p(m),y={options:m,deferred:o.defer(),show:u,remove:h}}var f,g=!1,b=!0,E=[];return f={show:m,hide:u,cancel:h}}}return e.$get=o,o.$inject=["$document","$q","$rootScope","$timeout","$rootElement","$animate","$mdUtil","$mdCompiler","$mdTheming","$log"],e}t.module("material.core").provider("$$interimElement",e)}(),function(){function e(e,n){function o(e){return e&&""!==e}var r,i=[],a={};return r={notFoundError:function(t){e.error("No instance found for handle",t)},getInstances:function(){return i},get:function(e){if(!o(e))return null;var t,n,r;for(t=0,n=i.length;n>t;t++)if(r=i[t],r.$$mdHandle===e)return r;return null},register:function(e,n){function o(){var t=i.indexOf(e);-1!==t&&i.splice(t,1)}function r(){var t=a[n];t&&(t.resolve(e),delete a[n])}return n?(e.$$mdHandle=n,i.push(e),r(),o):t.noop},when:function(e){if(o(e)){var t=n.defer(),i=r.get(e);return i?t.resolve(i):a[e]=t,t.promise}return n.reject("Invalid `md-component-id` value.")}}}t.module("material.core").factory("$mdComponentRegistry",e),e.$inject=["$log","$q"]}(),function(){!function(){function e(e){function n(n,r,i){var a=o(r);return e.attach(n,r,t.extend(a,i))}function o(e){return e.hasClass("md-icon-button")?{isMenuItem:e.hasClass("md-menu-item"),fitRipple:!0,center:!0}:{isMenuItem:e.hasClass("md-menu-item"),dimBackground:!0}}return{attach:n}}t.module("material.core").factory("$mdButtonInkRipple",e),e.$inject=["$mdInkRipple"]}()}(),function(){!function(){function e(e){function n(n,o,r){return e.attach(n,o,t.extend({center:!0,dimBackground:!1,fitRipple:!0},r))}return{attach:n}}t.module("material.core").factory("$mdCheckboxInkRipple",e),e.$inject=["$mdInkRipple"]}()}(),function(){!function(){function e(e){function n(n,o,r){return e.attach(n,o,t.extend({center:!1,dimBackground:!0,outline:!1,rippleSize:"full"},r))}return{attach:n}}t.module("material.core").factory("$mdListInkRipple",e),e.$inject=["$mdInkRipple"]}()}(),function(){function e(e,n){return{controller:t.noop,link:function(t,o,r){r.hasOwnProperty("mdInkRippleCheckbox")?n.attach(t,o):e.attach(t,o)}}}function n(e){function n(n,r,i){return r.controller("mdNoInk")?t.noop:e.instantiate(o,{$scope:n,$element:r,rippleOptions:i})}return{attach:n}}function o(e,n,o,r,i,a){this.$window=r,this.$timeout=i,this.$mdUtil=a,this.$scope=e,this.$element=n,this.options=o,this.mousedown=!1,this.ripples=[],this.container=null,this.color=null,this.background=null,this.timeout=null,this.lastRipple=null,(n.controller("mdInkRipple")||{}).createRipple=t.bind(this,this.createRipple),this.bindEvents()}function r(){return{controller:t.noop}}t.module("material.core").factory("$mdInkRipple",n).directive("mdInkRipple",e).directive("mdNoInk",r).directive("mdNoBar",r).directive("mdNoStretch",r);var i=450;e.$inject=["$mdButtonInkRipple","$mdCheckboxInkRipple"],n.$inject=["$injector"],o.$inject=["$scope","$element","rippleOptions","$window","$timeout","$mdUtil"],o.prototype.getColor=function(e){function t(){var e=this.options.colorElement&&this.options.colorElement[0];return e=e||this.$element[0],e?this.$window.getComputedStyle(e).color:"rgb(0,0,0)"}function n(t){function n(e){var t="#"===e[0]?e.substr(1):e,n=t.length/3,o=t.substr(0,n),r=t.substr(n,n),i=t.substr(2*n);return 1===n&&(o+=o,r+=r,i+=i),"rgba("+parseInt(o,16)+","+parseInt(r,16)+","+parseInt(i,16)+",0.1)"}function o(e){return e.replace(")",", 0.1)").replace("(","a(")}if(t)return 0===t.indexOf("rgba")?t.replace(/\d?\.?\d*\s*\)\s*$/,(.1*e).toString()+")"):0===t.indexOf("rgb")?o(t):0===t.indexOf("#")?n(t):void 0}return e=e||1,n(this.$element.attr("md-ink-ripple"))||n(t.call(this))},o.prototype.bindEvents=function(){this.$element.on("mousedown",t.bind(this,this.handleMousedown)),this.$element.on("mouseup",t.bind(this,this.handleMouseup)),this.$element.on("mouseleave",t.bind(this,this.handleMouseup))},o.prototype.handleMousedown=function(e){this.mousedown=!0,this.options.center?this.createRipple(this.container.prop("clientWidth")/2,this.container.prop("clientWidth")/2):this.createRipple(e.layerX,e.layerY)},o.prototype.handleMouseup=function(){var e=this;this.mousedown=!1,this.$mdUtil.nextTick(function(){e.clearRipples()},!1)},o.prototype.clearRipples=function(){for(var e=0;e');return this.$element.append(e),e},o.prototype.clearTimeout=function(){this.timeout&&(this.$timeout.cancel(this.timeout),this.timeout=null)},o.prototype.createRipple=function(e,n){function o(e){return e?e.replace("rgba","rgb").replace(/,[^\),]+\)/,")"):"rgb(0,0,0)"}function r(e,t,n){return e?Math.max(t,n):Math.sqrt(Math.pow(t,2)+Math.pow(n,2))}this.container||(this.container=this.createContainer()),this.color||(this.color=this.getColor()),this.background||(this.background=this.getColor(.5));var a=this,d=t.element('
'),c=this.$element.prop("clientWidth"),l=this.$element.prop("clientHeight"),s=2*Math.max(Math.abs(c-e),e),m=2*Math.max(Math.abs(l-n),n),u=r(this.options.fitRipple,s,m);d.css({left:e+"px",top:n+"px",background:"black",width:u+"px",height:u+"px",backgroundColor:o(this.color),borderColor:o(this.color)}),this.lastRipple=d,this.clearTimeout(),this.timeout=this.$timeout(function(){a.clearTimeout(),a.mousedown||a.fadeInComplete(d)},.35*i,!1),this.options.dimBackground&&this.container.css({backgroundColor:this.background}),this.container.append(d),this.ripples.push(d),d.addClass("md-ripple-placed"),this.$mdUtil.nextTick(function(){d.addClass("md-ripple-scaled md-ripple-active"),a.$timeout(function(){a.clearRipples()},i,!1)},!1)},o.prototype.fadeInComplete=function(e){this.lastRipple===e?this.timeout||this.mousedown||this.removeRipple(e):this.removeRipple(e)},o.prototype.removeRipple=function(e){var t=this,n=this.ripples.indexOf(e);0>n||(this.ripples.splice(this.ripples.indexOf(e),1),e.removeClass("md-ripple-active"),0===this.ripples.length&&this.container.css({backgroundColor:""}),this.$timeout(function(){t.fadeOutComplete(e)},i,!1))},o.prototype.fadeOutComplete=function(e){e.remove()}}(),function(){!function(){function e(e){function n(n,o,r){return e.attach(n,o,t.extend({center:!1,dimBackground:!0,outline:!1,rippleSize:"full"},r))}return{attach:n}}t.module("material.core").factory("$mdTabInkRipple",e),e.$inject=["$mdInkRipple"]}()}(),function(){t.module("material.core.theming.palette",[]).constant("$mdColorPalette",{red:{50:"#ffebee",100:"#ffcdd2",200:"#ef9a9a",300:"#e57373",400:"#ef5350",500:"#f44336",600:"#e53935",700:"#d32f2f",800:"#c62828",900:"#b71c1c",A100:"#ff8a80",A200:"#ff5252",A400:"#ff1744",A700:"#d50000",contrastDefaultColor:"light",contrastDarkColors:"50 100 200 300 400 A100",contrastStrongLightColors:"500 600 700 A200 A400 A700"},pink:{50:"#fce4ec",100:"#f8bbd0",200:"#f48fb1",300:"#f06292",400:"#ec407a",500:"#e91e63",600:"#d81b60",700:"#c2185b",800:"#ad1457",900:"#880e4f",A100:"#ff80ab",A200:"#ff4081",A400:"#f50057",A700:"#c51162",contrastDefaultColor:"light",contrastDarkColors:"50 100 200 300 400 A100",contrastStrongLightColors:"500 600 A200 A400 A700"},purple:{50:"#f3e5f5",100:"#e1bee7",200:"#ce93d8",300:"#ba68c8",400:"#ab47bc",500:"#9c27b0",600:"#8e24aa",700:"#7b1fa2",800:"#6a1b9a",900:"#4a148c",A100:"#ea80fc",A200:"#e040fb",A400:"#d500f9",A700:"#aa00ff",contrastDefaultColor:"light",contrastDarkColors:"50 100 200 A100",contrastStrongLightColors:"300 400 A200 A400 A700"},"deep-purple":{50:"#ede7f6",100:"#d1c4e9",200:"#b39ddb",300:"#9575cd",400:"#7e57c2",500:"#673ab7",600:"#5e35b1",700:"#512da8",800:"#4527a0",900:"#311b92",A100:"#b388ff",A200:"#7c4dff",A400:"#651fff",A700:"#6200ea",contrastDefaultColor:"light",contrastDarkColors:"50 100 200 A100",contrastStrongLightColors:"300 400 A200"},indigo:{50:"#e8eaf6",100:"#c5cae9",200:"#9fa8da",300:"#7986cb",400:"#5c6bc0",500:"#3f51b5",600:"#3949ab",700:"#303f9f",800:"#283593",900:"#1a237e",A100:"#8c9eff",A200:"#536dfe",A400:"#3d5afe",A700:"#304ffe",contrastDefaultColor:"light",contrastDarkColors:"50 100 200 A100",contrastStrongLightColors:"300 400 A200 A400"},blue:{50:"#e3f2fd",100:"#bbdefb",200:"#90caf9",300:"#64b5f6",400:"#42a5f5",500:"#2196f3",600:"#1e88e5",700:"#1976d2",800:"#1565c0",900:"#0d47a1",A100:"#82b1ff",A200:"#448aff",A400:"#2979ff",A700:"#2962ff",contrastDefaultColor:"light",contrastDarkColors:"100 200 300 400 A100",contrastStrongLightColors:"500 600 700 A200 A400 A700"},"light-blue":{50:"#e1f5fe",100:"#b3e5fc",200:"#81d4fa",300:"#4fc3f7",400:"#29b6f6",500:"#03a9f4",600:"#039be5",700:"#0288d1",800:"#0277bd",900:"#01579b",A100:"#80d8ff",A200:"#40c4ff",A400:"#00b0ff",A700:"#0091ea",contrastDefaultColor:"dark",contrastLightColors:"500 600 700 800 900 A700",contrastStrongLightColors:"500 600 700 800 A700"},cyan:{50:"#e0f7fa",100:"#b2ebf2",200:"#80deea",300:"#4dd0e1",400:"#26c6da",500:"#00bcd4",600:"#00acc1",700:"#0097a7",800:"#00838f",900:"#006064",A100:"#84ffff",A200:"#18ffff",A400:"#00e5ff",A700:"#00b8d4", -contrastDefaultColor:"dark",contrastLightColors:"500 600 700 800 900",contrastStrongLightColors:"500 600 700 800"},teal:{50:"#e0f2f1",100:"#b2dfdb",200:"#80cbc4",300:"#4db6ac",400:"#26a69a",500:"#009688",600:"#00897b",700:"#00796b",800:"#00695c",900:"#004d40",A100:"#a7ffeb",A200:"#64ffda",A400:"#1de9b6",A700:"#00bfa5",contrastDefaultColor:"dark",contrastLightColors:"500 600 700 800 900",contrastStrongLightColors:"500 600 700"},green:{50:"#e8f5e9",100:"#c8e6c9",200:"#a5d6a7",300:"#81c784",400:"#66bb6a",500:"#4caf50",600:"#43a047",700:"#388e3c",800:"#2e7d32",900:"#1b5e20",A100:"#b9f6ca",A200:"#69f0ae",A400:"#00e676",A700:"#00c853",contrastDefaultColor:"dark",contrastLightColors:"500 600 700 800 900",contrastStrongLightColors:"500 600 700"},"light-green":{50:"#f1f8e9",100:"#dcedc8",200:"#c5e1a5",300:"#aed581",400:"#9ccc65",500:"#8bc34a",600:"#7cb342",700:"#689f38",800:"#558b2f",900:"#33691e",A100:"#ccff90",A200:"#b2ff59",A400:"#76ff03",A700:"#64dd17",contrastDefaultColor:"dark",contrastLightColors:"800 900",contrastStrongLightColors:"800 900"},lime:{50:"#f9fbe7",100:"#f0f4c3",200:"#e6ee9c",300:"#dce775",400:"#d4e157",500:"#cddc39",600:"#c0ca33",700:"#afb42b",800:"#9e9d24",900:"#827717",A100:"#f4ff81",A200:"#eeff41",A400:"#c6ff00",A700:"#aeea00",contrastDefaultColor:"dark",contrastLightColors:"900",contrastStrongLightColors:"900"},yellow:{50:"#fffde7",100:"#fff9c4",200:"#fff59d",300:"#fff176",400:"#ffee58",500:"#ffeb3b",600:"#fdd835",700:"#fbc02d",800:"#f9a825",900:"#f57f17",A100:"#ffff8d",A200:"#ffff00",A400:"#ffea00",A700:"#ffd600",contrastDefaultColor:"dark"},amber:{50:"#fff8e1",100:"#ffecb3",200:"#ffe082",300:"#ffd54f",400:"#ffca28",500:"#ffc107",600:"#ffb300",700:"#ffa000",800:"#ff8f00",900:"#ff6f00",A100:"#ffe57f",A200:"#ffd740",A400:"#ffc400",A700:"#ffab00",contrastDefaultColor:"dark"},orange:{50:"#fff3e0",100:"#ffe0b2",200:"#ffcc80",300:"#ffb74d",400:"#ffa726",500:"#ff9800",600:"#fb8c00",700:"#f57c00",800:"#ef6c00",900:"#e65100",A100:"#ffd180",A200:"#ffab40",A400:"#ff9100",A700:"#ff6d00",contrastDefaultColor:"dark",contrastLightColors:"800 900",contrastStrongLightColors:"800 900"},"deep-orange":{50:"#fbe9e7",100:"#ffccbc",200:"#ffab91",300:"#ff8a65",400:"#ff7043",500:"#ff5722",600:"#f4511e",700:"#e64a19",800:"#d84315",900:"#bf360c",A100:"#ff9e80",A200:"#ff6e40",A400:"#ff3d00",A700:"#dd2c00",contrastDefaultColor:"light",contrastDarkColors:"50 100 200 300 400 A100 A200",contrastStrongLightColors:"500 600 700 800 900 A400 A700"},brown:{50:"#efebe9",100:"#d7ccc8",200:"#bcaaa4",300:"#a1887f",400:"#8d6e63",500:"#795548",600:"#6d4c41",700:"#5d4037",800:"#4e342e",900:"#3e2723",A100:"#d7ccc8",A200:"#bcaaa4",A400:"#8d6e63",A700:"#5d4037",contrastDefaultColor:"light",contrastDarkColors:"50 100 200",contrastStrongLightColors:"300 400"},grey:{50:"#fafafa",100:"#f5f5f5",200:"#eeeeee",300:"#e0e0e0",400:"#bdbdbd",500:"#9e9e9e",600:"#757575",700:"#616161",800:"#424242",900:"#212121",1000:"#000000",A100:"#ffffff",A200:"#eeeeee",A400:"#bdbdbd",A700:"#616161",contrastDefaultColor:"dark",contrastLightColors:"600 700 800 900"},"blue-grey":{50:"#eceff1",100:"#cfd8dc",200:"#b0bec5",300:"#90a4ae",400:"#78909c",500:"#607d8b",600:"#546e7a",700:"#455a64",800:"#37474f",900:"#263238",A100:"#cfd8dc",A200:"#b0bec5",A400:"#78909c",A700:"#455a64",contrastDefaultColor:"light",contrastDarkColors:"50 100 200 300",contrastStrongLightColors:"400 500"}})}(),function(){function e(e){function o(e,t){return t=t||{},s[e]=a(e,t),b}function r(e,n){return a(e,t.extend({},s[e]||{},n))}function a(e,t){var n=C.filter(function(e){return!t[e]});if(n.length)throw new Error("Missing colors %1 in palette %2!".replace("%1",n.join(", ")).replace("%2",e));return t}function d(e,n){if(m[e])return m[e];n=n||"default";var o="string"==typeof n?m[n]:n,r=new c(e);return o&&t.forEach(o.colors,function(e,n){r.colors[n]={name:e.name,hues:t.extend({},e.hues)}}),m[e]=r,r}function c(e){function n(e){if(e=0===arguments.length?!0:!!e,e!==o.isDark){o.isDark=e,o.foregroundPalette=o.isDark?p:h,o.foregroundShadow=o.isDark?f:g;var n=o.isDark?A:y,r=o.isDark?y:A;return t.forEach(n,function(e,t){var n=o.colors[t],i=r[t];if(n)for(var a in n.hues)n.hues[a]===i[a]&&(n.hues[a]=e[a])}),o}}var o=this;o.name=e,o.colors={},o.dark=n,n(!1),$.forEach(function(e){var n=(o.isDark?A:y)[e];o[e+"Palette"]=function(r,i){var a=o.colors[e]={name:r,hues:t.extend({},n,i)};return Object.keys(a.hues).forEach(function(e){if(!n[e])throw new Error("Invalid hue name '%1' in theme %2's %3 color %4. Available hue names: %4".replace("%1",e).replace("%2",o.name).replace("%3",r).replace("%4",Object.keys(n).join(", ")))}),Object.keys(a.hues).map(function(e){return a.hues[e]}).forEach(function(t){if(-1==C.indexOf(t))throw new Error("Invalid hue value '%1' in theme %2's %3 color %4. Available hue values: %5".replace("%1",t).replace("%2",o.name).replace("%3",e).replace("%4",r).replace("%5",C.join(", ")))}),o},o[e+"Color"]=function(){var t=Array.prototype.slice.call(arguments);return console.warn("$mdThemingProviderTheme."+e+"Color() has been deprecated. Use $mdThemingProviderTheme."+e+"Palette() instead."),o[e+"Palette"].apply(o,t)}})}function u(e,o){function r(e){return e===n||""===e?!0:i.THEMES[e]!==n}function i(t,o){o===n&&(o=t,t=n),t===n&&(t=e),i.inherit(o,o)}return i.inherit=function(n,i){function a(e){r(e)||o.warn("Attempted to use unregistered theme '"+e+"'. Register it with $mdThemingProvider.theme().");var t=n.data("$mdThemeName");t&&n.removeClass("md-"+t+"-theme"),n.addClass("md-"+e+"-theme"),n.data("$mdThemeName",e),d&&n.data("$mdThemeController",d)}var d=i.controller("mdTheme"),c=n.attr("md-theme-watch");if((v||t.isDefined(c))&&"false"!=c){var l=e.$watch(function(){return d&&d.$mdTheme||E},a);n.on("$destroy",l)}else{var s=d&&d.$mdTheme||E;a(s)}},i.THEMES=t.extend({},m),i.defaultTheme=function(){return E},i.registered=r,i}s={},m={};var b,E="default",v=!1;return t.extend(s,e),u.$inject=["$rootScope","$log"],b={definePalette:o,extendPalette:r,theme:d,setDefaultTheme:function(e){E=e},alwaysWatchTheme:function(e){v=e},$get:u,_LIGHT_DEFAULT_HUES:y,_DARK_DEFAULT_HUES:A,_PALETTES:s,_THEMES:m,_parseRules:i,_rgba:l}}function o(e,t,n){return{priority:100,link:{pre:function(o,r,i){var a={$setTheme:function(t){e.registered(t)||n.warn("attempted to use unregistered theme '"+t+"'"),a.$mdTheme=t}};r.data("$mdThemeController",a),a.$setTheme(t(i.mdTheme)(o)),i.$observe("mdTheme",a.$setTheme)}}}}function r(e){return e}function i(e,n,o){d(e,n),o=o.replace(/THEME_NAME/g,e.name);var r=[],i=e.colors[n],a=new RegExp(".md-"+e.name+"-theme","g"),c=new RegExp("('|\")?{{\\s*("+n+")-(color|contrast)-?(\\d\\.?\\d*)?\\s*}}(\"|')?","g"),m=/'?"?\{\{\s*([a-zA-Z]+)-(A?\d+|hue\-[0-3]|shadow)-?(\d\.?\d*)?(contrast)?\s*\}\}'?"?/g,u=s[i.name];return o=o.replace(m,function(t,n,o,r,i){return"foreground"===n?"shadow"==o?e.foregroundShadow:e.foregroundPalette[o]||e.foregroundPalette[1]:(0===o.indexOf("hue")&&(o=e.colors[n].hues[o]),l((s[e.colors[n].name][o]||"")[i?"contrast":"value"],r))}),t.forEach(i.hues,function(t,n){var i=o.replace(c,function(e,n,o,r,i){return l(u[t]["color"===r?"value":"contrast"],i)});"default"!==n&&(i=i.replace(a,".md-"+e.name+"-theme.md-"+n)),"default"==e.name&&(i=i.replace(/\.md-default-theme/g,"")),r.push(i)}),r}function a(e){function n(e){var n=e.contrastDefaultColor,o=e.contrastLightColors||[],r=e.contrastStrongLightColors||[],i=e.contrastDarkColors||[];"string"==typeof o&&(o=o.split(" ")),"string"==typeof r&&(r=r.split(" ")),"string"==typeof i&&(i=i.split(" ")),delete e.contrastDefaultColor,delete e.contrastLightColors,delete e.contrastStrongLightColors,delete e.contrastDarkColors,t.forEach(e,function(a,d){function l(){return"light"===n?i.indexOf(d)>-1?b:r.indexOf(d)>-1?v:E:o.indexOf(d)>-1?r.indexOf(d)>-1?v:E:b}if(!t.isObject(a)){var s=c(a);if(!s)throw new Error("Color %1, in palette %2's hue %3, is invalid. Hex or rgb(a) color expected.".replace("%1",a).replace("%2",e.name).replace("%3",d));e[d]={value:s,contrast:l()}}})}var o=document.getElementsByTagName("head")[0],r=o?o.firstElementChild:null,a=e.has("$MD_THEME_CSS")?e.get("$MD_THEME_CSS"):"";if(r&&0!==a.length){t.forEach(s,n);var d={},l=a.split(/\}(?!(\}|'|"|;))/).filter(function(e){return e&&e.length}).map(function(e){return e.trim()+"}"}),h=new RegExp("md-("+$.join("|")+")","g");$.forEach(function(e){d[e]=""}),l.forEach(function(e){for(var t,n=(e.match(h),0);t=$[n];n++)if(e.indexOf(".md-"+t)>-1)return d[t]+=e;for(n=0;t=$[n];n++)if(e.indexOf(t)>-1)return d[t]+=e;return d[M]+=e}),t.forEach(m,function(e){u[e.name]||($.forEach(function(t){for(var n=i(e,t,d[t]);n.length;){var a=document.createElement("style");a.setAttribute("type","text/css"),a.appendChild(document.createTextNode(n.shift())),o.insertBefore(a,r)}}),e.colors.primary.name==e.colors.accent.name&&console.warn("$mdThemingProvider: Using the same palette for primary and accent. This violates the material design spec."),u[e.name]=!0)})}}function d(e,t){if(!s[(e.colors[t]||{}).name])throw new Error("You supplied an invalid color palette for theme %1's %2 palette. Available palettes: %3".replace("%1",e.name).replace("%2",t).replace("%3",Object.keys(s).join(", ")))}function c(e){if(t.isArray(e)&&3==e.length)return e;if(/^rgb/.test(e))return e.replace(/(^\s*rgba?\(|\)\s*$)/g,"").split(",").map(function(e,t){return 3==t?parseFloat(e,10):parseInt(e,10)});if("#"==e.charAt(0)&&(e=e.substring(1)),/^([a-fA-F0-9]{3}){1,2}$/g.test(e)){var n=e.length/3,o=e.substr(0,n),r=e.substr(n,n),i=e.substr(2*n);return 1===n&&(o+=o,r+=r,i+=i),[parseInt(o,16),parseInt(r,16),parseInt(i,16)]}}function l(e,n){return e?(4==e.length&&(e=t.copy(e),n?e.pop():n=e.pop()),n&&("number"==typeof n||"string"==typeof n&&n.length)?"rgba("+e.join(",")+","+n+")":"rgb("+e.join(",")+")"):"rgb('0,0,0')"}t.module("material.core.theming",["material.core.theming.palette"]).directive("mdTheme",o).directive("mdThemable",r).provider("$mdTheming",e).run(a);var s,m,u={},h={name:"dark",1:"rgba(0,0,0,0.87)",2:"rgba(0,0,0,0.54)",3:"rgba(0,0,0,0.26)",4:"rgba(0,0,0,0.12)"},p={name:"light",1:"rgba(255,255,255,1.0)",2:"rgba(255,255,255,0.7)",3:"rgba(255,255,255,0.3)",4:"rgba(255,255,255,0.12)"},f="1px 1px 0px rgba(0,0,0,0.4), -1px -1px 0px rgba(0,0,0,0.4)",g="",b=c("rgba(0,0,0,0.87)"),E=c("rgba(255,255,255,0.87"),v=c("rgb(255,255,255)"),$=["primary","accent","warn","background"],M="primary",y={accent:{"default":"A200","hue-1":"A100","hue-2":"A400","hue-3":"A700"},background:{"default":"A100","hue-1":"300","hue-2":"800","hue-3":"900"}},A={background:{"default":"800","hue-1":"300","hue-2":"600","hue-3":"900"}};$.forEach(function(e){var t={"default":"500","hue-1":"300","hue-2":"800","hue-3":"A100"};y[e]||(y[e]=t),A[e]||(A[e]=t)});var C=["50","100","200","300","400","500","600","700","800","900","A100","A200","A400","A700"];e.$inject=["$mdColorPalette"],o.$inject=["$mdTheming","$interpolate","$log"],r.$inject=["$mdTheming"],a.$inject=["$injector"]}(),function(){function e(e,n,o,r,i){var a;return a={translate3d:function(e,t,n,o){function r(n){return i(e,{to:n||t,addClass:o.transitionOutClass,removeClass:o.transitionInClass}).start()}return i(e,{from:t,to:n,addClass:o.transitionInClass}).start().then(function(){return r})},waitTransitionEnd:function(e,t){var i=3e3;return n(function(n,a){function d(t){t&&t.target!==e[0]||(t&&o.cancel(c),e.off(r.CSS.TRANSITIONEND,d),n())}t=t||{};var c=o(d,t.timeout||i);e.on(r.CSS.TRANSITIONEND,d)})},calculateZoomToOrigin:function(n,o){var r=o.element,i="translate3d( {centerX}px, {centerY}px, 0 ) scale( {scaleX}, {scaleY} )",d=t.bind(null,e.supplant,i),c=d({centerX:0,centerY:0,scaleX:.5,scaleY:.5});if(r){var l=a.clientRect(r)||a.copyRect(o.bounds),s=a.copyRect(n[0].getBoundingClientRect()),m=a.centerPointFor(s),u=a.centerPointFor(l);c=d({centerX:u.x-m.x,centerY:u.y-m.y,scaleX:Math.round(100*Math.min(.5,l.width/s.width))/100,scaleY:Math.round(100*Math.min(.5,l.height/s.height))/100})}return c},toCss:function(e){function n(e,n,r){t.forEach(n.split(" "),function(e){o[e]=r})}var o={},i="left top right bottom width height x y min-width min-height max-width max-height";return t.forEach(e,function(e,a){if(!t.isUndefined(e))if(i.indexOf(a)>=0)o[a]=e+"px";else switch(a){case"transform":n(a,r.CSS.TRANSFORM,e);break;case"transformOrigin":n(a,r.CSS.TRANSFORM_ORIGIN,e)}}),o},toTransformCss:function(e,n,o){var i={};return t.forEach(r.CSS.TRANSFORM.split(" "),function(t){i[t]=e}),n&&(o=o||"all 0.4s cubic-bezier(0.25, 0.8, 0.25, 1) !important",i.transition=o),i},copyRect:function(e,n){return e?(n=n||{},t.forEach("left top right bottom width height".split(" "),function(t){n[t]=Math.round(e[t])}),n.width=n.width||n.right-n.left,n.height=n.height||n.bottom-n.top,n):null},clientRect:function(e){var n=t.element(e)[0].getBoundingClientRect(),o=function(e){return e&&e.width>0&&e.height>0};return o(n)?a.copyRect(n):null},centerPointFor:function(e){return{x:Math.round(e.left+e.width/2),y:Math.round(e.top+e.height/2)}}}}t.module("material.core").factory("$$mdAnimate",["$q","$timeout","$mdConstant","$animateCss",function(t,n,o,r){return function(i){return e(i,t,n,o,r)}}])}(),function(){t.version.minor>=4?t.module("material.animate",[]):!function(){function o(e){return e.replace(/-[a-z]/g,function(e){return e.charAt(1).toUpperCase()})}var r=t.forEach,i=e.ontransitionend===n&&e.onwebkittransitionend!==n,a=i?"-webkit-":"",d=(i?"webkitTransitionEnd ":"")+"transitionend",c=(i?"webkitAnimationEnd ":"")+"animationend",l=["$document",function(e){return function(){return e[0].body.clientWidth+1}}],s=["$$rAF",function(e){return function(){var t=!1;return e(function(){t=!0}),function(n){t?n():e(n)}}}],m=["$q","$$rAFMutex",function(e,n){function o(e){this.setHost(e),this._doneCallbacks=[],this._runInAnimationFrame=n(),this._state=0}var i=0,a=1,d=2;return o.prototype={setHost:function(e){this.host=e||{}},done:function(e){this._state===d?e():this._doneCallbacks.push(e)},progress:t.noop,getPromise:function(){if(!this.promise){var t=this;this.promise=e(function(e,n){t.done(function(t){t===!1?n():e()})})}return this.promise},then:function(e,t){return this.getPromise().then(e,t)},"catch":function(e){return this.getPromise()["catch"](e)},"finally":function(e){return this.getPromise()["finally"](e)},pause:function(){this.host.pause&&this.host.pause()},resume:function(){this.host.resume&&this.host.resume()},end:function(){this.host.end&&this.host.end(),this._resolve(!0)},cancel:function(){this.host.cancel&&this.host.cancel(),this._resolve(!1)},complete:function(e){var t=this;t._state===i&&(t._state=a,t._runInAnimationFrame(function(){t._resolve(e)}))},_resolve:function(e){this._state!==d&&(r(this._doneCallbacks,function(t){t(e)}),this._doneCallbacks.length=0,this._state=d)}},o}];t.module("material.animate",[]).factory("$$forceReflow",l).factory("$$AnimateRunner",m).factory("$$rAFMutex",s).factory("$animateCss",["$window","$$rAF","$$AnimateRunner","$$forceReflow","$$jqLite","$timeout",function(e,t,n,l,s,m){function u(e,t){var i=[],l=$(e);t.transitionStyle&&i.push([a+"transition",t.transitionStyle]),t.keyframeStyle&&i.push([a+"animation",t.keyframeStyle]),t.delay&&i.push([a+"transition-delay",t.delay+"s"]),t.duration&&i.push([a+"transition-duration",t.duration+"s"]);var s=t.keyframeStyle||t.to&&(t.duration>0||t.transitionStyle),u=!!t.addClass||!!t.removeClass,f=s||u;M(e,!0),E(e,t);var y,A,C=!1;return{close:close,start:function(){function s(){return C?void 0:(C=!0,y&&A&&e.off(y,A),h(e,t),b(e,t),r(i,function(e){l.style[o(e[0])]=""}),u.complete(!0),u)}var u=new n;return g(function(){if(M(e,!1),!f)return s();r(i,function(e){var t=e[0],n=e[1];l.style[o(t)]=n}),h(e,t);var n=p(e);if(0===n.duration)return s();var u=[];t.easing&&(n.transitionDuration&&u.push([a+"transition-timing-function",t.easing]),n.animationDuration&&u.push([a+"animation-timing-function",t.easing])),t.delay&&n.animationDelay&&u.push([a+"animation-delay",t.delay+"s"]),t.duration&&n.animationDuration&&u.push([a+"animation-duration",t.duration+"s"]),r(u,function(e){var t=e[0],n=e[1];l.style[o(t)]=n,i.push(e)});var g=n.delay,b=1e3*g,E=n.duration,$=1e3*E,C=Date.now();y=[],n.transitionDuration&&y.push(d),n.animationDuration&&y.push(c),y=y.join(" "),A=function(e){e.stopPropagation();var t=e.originalEvent||e,n=t.timeStamp||Date.now(),o=parseFloat(t.elapsedTime.toFixed(3));Math.max(n-C,0)>=b&&o>=E&&s()},e.on(y,A),v(e,t),m(s,b+1.5*$,!1)}),u}}}function h(e,t){t.addClass&&(s.addClass(e,t.addClass),t.addClass=null),t.removeClass&&(s.removeClass(e,t.removeClass),t.removeClass=null)}function p(t){function n(e){return i?"Webkit"+e.charAt(0).toUpperCase()+e.substr(1):e}var o=$(t),r=e.getComputedStyle(o),a=f(r[n("transitionDuration")]),d=f(r[n("animationDuration")]),c=f(r[n("transitionDelay")]),l=f(r[n("animationDelay")]);d*=parseInt(r[n("animationIterationCount")],10)||1;var s=Math.max(d,a),m=Math.max(l,c);return{duration:s,delay:m,animationDuration:d,transitionDuration:a,animationDelay:l,transitionDelay:c}}function f(e){var t=0,n=e.split(/\s*,\s*/);return r(n,function(e){"s"==e.charAt(e.length-1)&&(e=e.substring(0,e.length-1)),e=parseFloat(e)||0,t=t?Math.max(e,t):e}),t}function g(e){y&&y(),A.push(e),y=t(function(){y=null;for(var e=l(),t=0;to&&(o=Math.max(-r,o/2)),e.css(n.CSS.TRANSFORM,"translate3d(0,"+(r+o)+"px,0)")}function s(t){if(t.pointer.distanceY>0&&(t.pointer.distanceY>20||Math.abs(t.pointer.velocityY)>o)){var r=e.prop("offsetHeight")-t.pointer.distanceY,a=Math.min(r/t.pointer.velocityY*.75,500);e.css(n.CSS.TRANSITION_DURATION,a+"ms"),i.nextTick(d.cancel,!0)}else e.css(n.CSS.TRANSITION_DURATION,""),e.css(n.CSS.TRANSFORM,"")}var m=l.register(t,"drag",{horizontal:!1});return t.on("$md.dragstart",a).on("$md.drag",c).on("$md.dragend",s),{element:e,cleanup:function(){m(),t.off("$md.dragstart",a),t.off("$md.drag",c),t.off("$md.dragend",s)}}}var h;return{themable:!0,targetEvent:null,onShow:s,onRemove:m,escapeToClose:!0,disableParentScroll:!0}}var o=.5,r=80;return n.$inject=["$animate","$mdConstant","$mdUtil","$mdTheming","$mdBottomSheet","$rootElement","$mdGesture"],e("$mdBottomSheet").setDefaults({methods:["disableParentScroll","escapeToClose","targetEvent"],options:n})}t.module("material.components.bottomSheet",["material.core","material.components.backdrop"]).directive("mdBottomSheet",e).provider("$mdBottomSheet",n),n.$inject=["$$interimElementProvider"]}(),function(){function e(e,n,o,r){function i(e){return t.isDefined(e.href)||t.isDefined(e.ngHref)||t.isDefined(e.ngLink)||t.isDefined(e.uiSref)}function a(e,t){return i(t)?'':''}function d(a,d,c){var l=d[0];n(d),e.attach(a,d);var s=l.textContent.trim();s||o.expect(d,"aria-label"),i(c)&&t.isDefined(c.ngDisabled)&&a.$watch(c.ngDisabled,function(e){d.attr("tabindex",e?-1:0)}),d.on("click",function(e){c.disabled===!0&&(e.preventDefault(),e.stopImmediatePropagation())}),a.mouseActive=!1,d.on("mousedown",function(){a.mouseActive=!0,r(function(){a.mouseActive=!1},100)}).on("focus",function(){a.mouseActive===!1&&d.addClass("md-focused")}).on("blur",function(){d.removeClass("md-focused")})}return{restrict:"EA",replace:!0,transclude:!0,template:a,link:d}}t.module("material.components.button",["material.core"]).directive("mdButton",e),e.$inject=["$mdButtonInkRipple","$mdTheming","$mdAria","$timeout"]}(),function(){function e(e){return{restrict:"E",link:function(t,n,o){e(n)}}}t.module("material.components.card",["material.core"]).directive("mdCard",e),e.$inject=["$mdTheming"]}(),function(){function e(e,n,o,r,i,a,d){function c(n,c){return c.type="checkbox",c.tabindex=c.tabindex||"0",n.attr("role",c.type),function(n,c,s,m){function u(e,t,o){s[e]&&n.$watch(s[e],function(e){o[e]&&c.attr(t,o[e])})}function h(e){var t=e.which||e.keyCode;(t===r.KEY_CODE.SPACE||t===r.KEY_CODE.ENTER)&&(e.preventDefault(),c.hasClass("md-focused")||c.addClass("md-focused"),p(e))}function p(e){c[0].hasAttribute("disabled")||n.$apply(function(){var t=s.ngChecked?s.checked:!m.$viewValue;m.$setViewValue(t,e&&e.type),m.$render()})}function f(){m.$viewValue?c.addClass(l):c.removeClass(l)}m=m||a.fakeNgModel(),i(c),s.ngChecked&&n.$watch(n.$eval.bind(n,s.ngChecked),m.$setViewValue.bind(m)),u("ngDisabled","tabindex",{"true":"-1","false":s.tabindex}),o.expectWithText(c,"aria-label"),e.link.pre(n,{on:t.noop,0:{}},s,[m]),n.mouseActive=!1,c.on("click",p).on("keypress",h).on("mousedown",function(){n.mouseActive=!0,d(function(){n.mouseActive=!1},100)}).on("focus",function(){n.mouseActive===!1&&c.addClass("md-focused")}).on("blur",function(){c.removeClass("md-focused")}),m.$render=f}}e=e[0];var l="md-checked";return{restrict:"E",transclude:!0,require:"?ngModel",priority:210,template:'
',compile:c}}t.module("material.components.checkbox",["material.core"]).directive("mdCheckbox",e),e.$inject=["inputDirective","$mdInkRipple","$mdAria","$mdConstant","$mdTheming","$mdUtil","$timeout"]}(),function(){t.module("material.components.chips",["material.core","material.components.autocomplete"])}(),function(){function e(e){function t(e,t){this.$scope=e,this.$element=t}return{restrict:"E",controller:["$scope","$element",t],link:function(t,o,r){o[0];e(o),t.$broadcast("$mdContentLoaded",o),n(o[0])}}}function n(e){t.element(e).on("$md.pressdown",function(t){"t"===t.pointer.type&&(t.$materialScrollFixed||(t.$materialScrollFixed=!0,0===e.scrollTop?e.scrollTop=1:e.scrollHeight===e.scrollTop+e.offsetHeight&&(e.scrollTop-=1)))})}t.module("material.components.content",["material.core"]).directive("mdContent",e),e.$inject=["$mdTheming"]}(),function(){!function(){function e(){return{template:'
',scope:{},require:["ngModel","mdCalendar"],controller:n,controllerAs:"ctrl",bindToController:!0,link:function(e,t,n,o){var r=o[0],i=o[1];i.configureNgModel(r)}}}function n(e,t,n,o,r,i,c,l,s,m,u){c(e),this.items={length:2e3},this.$animate=o,this.$q=r,this.$mdInkRipple=m,this.$mdUtil=u,this.keyCode=i.KEY_CODE,this.dateUtil=l,this.dateLocale=s,this.$element=e,this.$scope=n,this.calendarElement=e[0].querySelector(".md-calendar"),this.calendarScroller=e[0].querySelector(".md-virtual-repeat-scroller"),this.today=this.dateUtil.createDateAtMidnight(),d=d||this.dateUtil.incrementMonths(this.today,-this.items.length/2),this.id=a++,this.ngModelCtrl=null,this.selectedDate=null,this.displayDate=null,this.focusDate=null,this.isInitialized=!1,this.isMonthTransitionInProgress=!1,t.tabindex||e.attr("tabindex","-1");var h=this;this.cellClickHandler=function(){var e=this;this.hasAttribute("data-timestamp")&&n.$apply(function(){var t=Number(e.getAttribute("data-timestamp"));h.setNgModelValue(h.dateUtil.createDateAtMidnight(t))})},this.attachCalendarEventListeners()}t.module("material.components.datepicker",["material.core","material.components.icon","material.components.virtualRepeat"]).directive("mdCalendar",e);var o=265,r="md-calendar-selected-date",i="md-focus",a=0,d=null;n.$inject=["$element","$attrs","$scope","$animate","$q","$mdConstant","$mdTheming","$$mdDateUtil","$mdDateLocale","$mdInkRipple","$mdUtil"],n.prototype.configureNgModel=function(e){this.ngModelCtrl=e;var t=this;e.$render=function(){t.changeSelectedDate(t.ngModelCtrl.$viewValue)}},n.prototype.buildInitialCalendarDisplay=function(){this.buildWeekHeader(),this.hideVerticalScrollbar(),this.displayDate=this.selectedDate||this.today,this.isInitialized=!0},n.prototype.hideVerticalScrollbar=function(){var e=this.$element[0],t=e.querySelector(".md-calendar-scroll-mask"),n=this.calendarScroller,o=e.querySelector(".md-calendar-day-header").clientWidth,r=n.offsetWidth-n.clientWidth;t.style.width=o+"px",n.style.width=o+r+"px",n.style.paddingRight=r+"px"},n.prototype.attachCalendarEventListeners=function(){this.$element.on("keydown",t.bind(this,this.handleKeyEvent))},n.prototype.handleKeyEvent=function(e){var t=this;this.$scope.$apply(function(){if(e.which==t.keyCode.ESCAPE||e.which==t.keyCode.TAB)return t.$scope.$emit("md-calendar-close"),void(e.which==t.keyCode.TAB&&e.preventDefault());if(e.which===t.keyCode.ENTER)return t.setNgModelValue(t.displayDate),void e.preventDefault();var n=t.getFocusDateFromKeyEvent(e);n&&(e.preventDefault(),e.stopPropagation(),t.changeDisplayDate(n).then(function(){t.focus(n)}))})},n.prototype.getFocusDateFromKeyEvent=function(e){var t=this.dateUtil,n=this.keyCode;switch(e.which){case n.RIGHT_ARROW:return t.incrementDays(this.displayDate,1);case n.LEFT_ARROW:return t.incrementDays(this.displayDate,-1);case n.DOWN_ARROW:return e.metaKey?t.incrementMonths(this.displayDate,1):t.incrementDays(this.displayDate,7);case n.UP_ARROW:return e.metaKey?t.incrementMonths(this.displayDate,-1):t.incrementDays(this.displayDate,-7);case n.PAGE_DOWN:return t.incrementMonths(this.displayDate,1);case n.PAGE_UP:return t.incrementMonths(this.displayDate,-1);case n.HOME:return t.getFirstDateOfMonth(this.displayDate);case n.END:return t.getLastDateOfMonth(this.displayDate);default:return null}},n.prototype.getSelectedMonthIndex=function(){return this.dateUtil.getMonthDistance(d,this.selectedDate||this.today)},n.prototype.scrollToMonth=function(e){if(this.dateUtil.isValidDate(e)){var t=this.dateUtil.getMonthDistance(d,e);this.calendarScroller.scrollTop=t*o}},n.prototype.setNgModelValue=function(e){this.$scope.$emit("md-calendar-change",e),this.ngModelCtrl.$setViewValue(e),this.ngModelCtrl.$render()},n.prototype.focus=function(e){var t=e||this.selectedDate,n=this.calendarElement.querySelector(".md-focus");n&&n.classList.remove(i);var o=this.getDateId(t),r=document.getElementById(o);r?(r.classList.add(i),r.focus()):this.focusDate=t},n.prototype.changeSelectedDate=function(e){var t=this,n=this.selectedDate;this.selectedDate=e,this.changeDisplayDate(e).then(function(){if(n){var o=document.getElementById(t.getDateId(n));o&&(o.classList.remove(r),o.setAttribute("aria-selected","false"))}if(e){var i=document.getElementById(t.getDateId(e));i&&(i.classList.add(r),i.setAttribute("aria-selected","true"))}})},n.prototype.changeDisplayDate=function(e){if(!this.isInitialized)return this.buildInitialCalendarDisplay(),this.$q.when();if(!this.dateUtil.isValidDate(e)||this.isMonthTransitionInProgress)return this.$q.when();this.isMonthTransitionInProgress=!0;var t=this.animateDateChange(e);this.displayDate=e;var n=this;return t.then(function(){n.isMonthTransitionInProgress=!1}),t},n.prototype.animateDateChange=function(e){return this.scrollToMonth(e),this.$q.when()},n.prototype.buildWeekHeader=function(){for(var e=document.createElement("tr"),t=0;7>t;t++){var n=document.createElement("th");n.textContent=this.dateLocale.shortDays[t],e.appendChild(n)}this.$element.find("thead").append(e)},n.prototype.getDateId=function(e){return["md",this.id,e.getFullYear(),e.getMonth(),e.getDate()].join("-")}}()}(),function(){!function(){function e(){return{require:["^^mdCalendar","mdCalendarMonth"],scope:{offset:"=mdMonthOffset"},controller:n,controllerAs:"mdMonthCtrl",bindToController:!0,link:function(e,t,n,o){var r=o[0],i=o[1];i.calendarCtrl=r,i.generateContent(),e.$watch(function(){return i.offset},function(e,t){e!=t&&i.generateContent()})}}}function n(e,t,n){this.dateUtil=t,this.dateLocale=n,this.$element=e,this.calendarCtrl=null,this.offset=0,this.focusAfterAppend=null}t.module("material.components.datepicker").directive("mdCalendarMonth",e);var o="md-calendar-date-today",r="md-calendar-selected-date",i="md-focus";n.$inject=["$element","$$mdDateUtil","$mdDateLocale"],n.prototype.generateContent=function(){var e=this.calendarCtrl,t=-e.items.length/2+this.offset,n=this.dateUtil.incrementMonths(e.today,t);this.$element.empty(),this.$element.append(this.buildCalendarForMonth(n)),this.focusAfterAppend&&(this.focusAfterAppend.classList.add(i),this.focusAfterAppend.focus(),this.focusAfterAppend=null)},n.prototype.buildDateCell=function(e){var t=this.calendarCtrl,n=document.createElement("td");if(n.tabIndex=-1,n.classList.add("md-calendar-date"),n.setAttribute("role","gridcell"),e){var i=document.createElement("span");n.appendChild(i),i.classList.add("md-calendar-date-selection-indicator"),i.textContent=this.dateLocale.dates[e.getDate()],n.setAttribute("tabindex","-1"),n.setAttribute("aria-label",this.dateLocale.longDateFormatter(e)),n.id=t.getDateId(e),n.addEventListener("click",t.cellClickHandler),n.setAttribute("data-timestamp",e.getTime()),this.dateUtil.isSameDay(e,t.today)&&n.classList.add(o),this.dateUtil.isValidDate(t.selectedDate)&&this.dateUtil.isSameDay(e,t.selectedDate)&&(n.classList.add(r),n.setAttribute("aria-selected","true")),t.focusDate&&this.dateUtil.isSameDay(e,t.focusDate)&&(this.focusAfterAppend=n)}return n},n.prototype.buildDateRow=function(e){var t=document.createElement("tr");return t.setAttribute("role","row"),t.setAttribute("aria-label",this.dateLocale.weekNumberFormatter(e)),t},n.prototype.buildCalendarForMonth=function(e){var t=this.dateUtil.isValidDate(e)?e:new Date,n=this.dateUtil.getFirstDateOfMonth(t),o=n.getDay(),r=this.dateUtil.getNumberOfDaysInMonth(t),i=document.createDocumentFragment(),a=1,d=this.buildDateRow(a);i.appendChild(d);var c=0,l=document.createElement("td");if(l.classList.add("md-calendar-month-label"),2>=o){l.setAttribute("colspan","7");var s=this.buildDateRow();s.appendChild(l), -i.insertBefore(s,d)}else c=2,l.setAttribute("colspan","2"),d.appendChild(l);l.textContent=this.dateLocale.monthHeaderFormatter(t);for(var m=c;o>m;m++)d.appendChild(this.buildDateCell());for(var u=o,h=n,p=1;r>=p;p++){7===u&&(u=0,a++,d=this.buildDateRow(a),i.appendChild(d)),h.setDate(p);var f=this.buildDateCell(h);d.appendChild(f),u++}for(;d.childNodes.length<7;)d.appendChild(this.buildDateCell());for(;i.childNodes.length<6;){for(var g=this.buildDateRow(),m=0;7>m;m++)g.appendChild(this.buildDateCell());i.appendChild(g)}return i}}()}(),function(){!function(){t.module("material.components.datepicker").config(["$provide",function(e){function t(){this.months=null,this.shortMonths=null,this.days=null,this.shortDays=null,this.dates=null,this.formatDate=null,this.parseDate=null,this.monthHeaderFormatter=null,this.weekNumberFormatter=null,this.longDateFormatter=null,this.msgCalendar="",this.msgOpenCalendar=""}t.prototype.$get=function(e){function t(e){return e.toLocaleDateString()}function n(e){return new Date(e)}function o(e){e=e.trim();var t=/^(([a-zA-Z]{3,}|[0-9]{1,4})([ \.,]+|[\/\-])){2}([a-zA-Z]{3,}|[0-9]{1,4})$/;return t.test(e)}function r(e){return u.shortMonths[e.getMonth()]+" "+e.getFullYear()}function i(e){return"Week "+e}function a(e){return[u.days[e.getDay()],u.months[e.getMonth()],u.dates[e.getDate()],e.getFullYear()].join(" ")}for(var d=e.DATETIME_FORMATS.DAY.map(function(e){return e[0]}),c=Array(32),l=1;31>=l;l++)c[l]=l;var s="Calendar",m="Open calendar",u={months:this.months||e.DATETIME_FORMATS.MONTH,shortMonths:this.shortMonths||e.DATETIME_FORMATS.SHORTMONTH,days:this.days||e.DATETIME_FORMATS.DAY,shortDays:this.shortDays||d,dates:this.dates||c,formatDate:this.formatDate||t,parseDate:this.parseDate||n,isDateComplete:this.isDateComplete||o,monthHeaderFormatter:this.monthHeaderFormatter||r,weekNumberFormatter:this.weekNumberFormatter||i,longDateFormatter:this.longDateFormatter||a,msgCalendar:this.msgCalendar||s,msgOpenCalendar:this.msgOpenCalendar||m};return u},t.prototype.$get.$inject=["$locale"],e.provider("$mdDateLocale",new t)}])}()}(),function(){!function(){function e(){return{template:'
',require:["ngModel","mdDatepicker"],scope:{placeholder:"@mdPlaceholder"},controller:n,controllerAs:"ctrl",bindToController:!0,link:function(e,t,n,o){var r=o[0],i=o[1];i.configureNgModel(r)}}}function n(e,n,o,r,i,a,d,c,l,s,m){this.$compile=r,this.$timeout=i,this.dateLocale=l,this.dateUtil=s,this.$mdConstant=a,this.$mdUtil=c,this.$$rAF=m,this.ngModelCtrl=null,this.inputElement=n[0].querySelector("input"),this.inputContainer=n[0].querySelector(".md-datepicker-input-container"),this.calendarPane=n[0].querySelector(".md-datepicker-calendar-pane"),this.calendarButton=n[0].querySelector(".md-datepicker-button"),this.$element=n,this.$attrs=o,this.$scope=e,this.date=null,this.isFocused=!1,this.isDisabled,this.setDisabled(n[0].disabled||t.isString(o.disabled)),this.isCalendarOpen=!1,this.calendarPaneOpenedFrom=null,this.calendarPane.id="md-date-pane"+c.nextUid(),d(n),this.bodyClickHandler=t.bind(this,this.handleBodyClick),o.tabindex||n.attr("tabindex","-1"),this.installPropertyInterceptors(),this.attachChangeListeners(),this.attachInterationListeners();var u=this;e.$on("$destroy",function(){u.detachCalendarPane()})}t.module("material.components.datepicker").directive("mdDatepicker",e);var o=3,r="md-datepicker-invalid",i=500;n.$inject=["$scope","$element","$attrs","$compile","$timeout","$mdConstant","$mdTheming","$mdUtil","$mdDateLocale","$$mdDateUtil","$$rAF"],n.prototype.configureNgModel=function(e){this.ngModelCtrl=e;var t=this;e.$render=function(){t.date=t.ngModelCtrl.$viewValue,t.inputElement.value=t.dateLocale.formatDate(t.date),t.resizeInputElement()}},n.prototype.attachChangeListeners=function(){var e=this;e.$scope.$on("md-calendar-change",function(t,n){e.ngModelCtrl.$setViewValue(n),e.inputElement.value=e.dateLocale.formatDate(n),e.closeCalendarPane()}),e.inputElement.addEventListener("input",t.bind(e,e.resizeInputElement)),e.inputElement.addEventListener("input",e.$mdUtil.debounce(e.handleInputEvent,i,e))},n.prototype.attachInterationListeners=function(){var e=this,n=this.$scope,o=this.$mdConstant.KEY_CODE;t.element(e.inputElement).on("keydown",function(t){t.altKey&&t.keyCode==o.DOWN_ARROW&&(e.openCalendarPane(t),n.$digest())}),n.$on("md-calendar-close",function(){e.closeCalendarPane()})},n.prototype.installPropertyInterceptors=function(){var e=this;this.$attrs.ngDisabled&&this.$element.scope().$watch(this.$attrs.ngDisabled,function(t){e.setDisabled(t)}),Object.defineProperty(this,"placeholder",{get:function(){return e.inputElement.placeholder},set:function(t){e.inputElement.placeholder=t}})},n.prototype.setDisabled=function(e){this.isDisabled=e,this.inputElement.disabled=e,this.calendarButton.disabled=e},n.prototype.resizeInputElement=function(){this.inputElement.size=this.inputElement.value.length+o},n.prototype.handleInputEvent=function(){var e=this.inputElement.value,t=this.dateLocale.parseDate(e);this.dateUtil.isValidDate(t)&&this.dateLocale.isDateComplete(e)?(this.ngModelCtrl.$setViewValue(t),this.date=t,this.inputContainer.classList.remove(r),this.$scope.$apply()):this.inputContainer.classList.toggle(r,e)},n.prototype.attachCalendarPane=function(){var e=this.calendarPane;this.$element.addClass("md-datepicker-open");var t=this.inputContainer.getBoundingClientRect(),n=document.body.getBoundingClientRect();e.style.left=t.left-n.left+"px",e.style.top=t.top-n.top+"px",document.body.appendChild(this.calendarPane),this.$$rAF(function(){e.classList.add("md-pane-open")})},n.prototype.detachCalendarPane=function(){this.$element.removeClass("md-datepicker-open"),this.calendarPane.classList.remove("md-pane-open"),this.calendarPane.parentNode.removeChild(this.calendarPane)},n.prototype.openCalendarPane=function(e){if(!this.isCalendarOpen&&!this.isDisabled){this.isCalendarOpen=!0,this.calendarPaneOpenedFrom=e.target,this.attachCalendarPane(),this.focusCalendar(),this.$mdUtil.disableScrollAround(this.calendarPane);var t=this;this.$mdUtil.nextTick(function(){document.body.addEventListener("click",t.bodyClickHandler)},!1)}},n.prototype.closeCalendarPane=function(){this.isCalendarOpen=!1,this.detachCalendarPane(),this.calendarPaneOpenedFrom.focus(),this.calendarPaneOpenedFrom=null,this.$mdUtil.enableScrolling(),document.body.removeEventListener("click",this.bodyClickHandler)},n.prototype.getCalendarCtrl=function(){return t.element(this.calendarPane.querySelector("md-calendar")).controller("mdCalendar")},n.prototype.focusCalendar=function(){var e=this;this.$mdUtil.nextTick(function(){e.getCalendarCtrl().focus()},!1)},n.prototype.setFocused=function(e){this.isFocused=e},n.prototype.handleBodyClick=function(e){if(this.isCalendarOpen){var t=this.$mdUtil.getClosest(e.target,"md-calendar");t||this.closeCalendarPane(),this.$scope.$digest()}}}()}(),function(){!function(){t.module("material.components.datepicker").factory("$$mdDateUtil",function(){function e(e){return new Date(e.getFullYear(),e.getMonth(),1)}function n(e){return new Date(e.getFullYear(),e.getMonth()+1,0).getDate()}function o(e){return new Date(e.getFullYear(),e.getMonth()+1,1)}function r(e){return new Date(e.getFullYear(),e.getMonth()-1,1)}function i(e,t){return e.getFullYear()===t.getFullYear()&&e.getMonth()===t.getMonth()}function a(e,t){return e.getDate()==t.getDate()&&i(e,t)}function d(e,t){var n=o(e);return i(n,t)}function c(e,t){var n=r(e);return i(t,n)}function l(e,t){return g((e.getTime()+t.getTime())/2)}function s(t){var n=e(t);return Math.floor((n.getDay()+t.getDate()-1)/7)}function m(e,t){return new Date(e.getFullYear(),e.getMonth(),e.getDate()+t)}function u(e,t){var o=new Date(e.getFullYear(),e.getMonth()+t,1),r=n(o);return o.setDate(ro.clientHeight)}var n,o=r[0].querySelector("md-dialog-content");o&&(n=o.getElementsByTagName("img"),e(),t.element(n).on("load",e))})}}}function n(e){function n(e,t){return{template:['',' ','

{{ dialog.title }}

','
',"
",'
',' '," {{ dialog.cancel }}"," ",' '," {{ dialog.ok }}"," ","
","
"].join("").replace(/\s\s+/g,""),controller:function(){this.hide=function(){e.hide(!0)},this.abort=function(){e.cancel()}},controllerAs:"dialog",bindToController:!0,theme:t.defaultTheme()}}function o(e,n,o,r,i,a,d,c){function l(e,n,r,i){function d(){function e(){var e=n[0].querySelector(".dialog-close");if(!e){var o=n[0].querySelectorAll(".md-actions button");e=o[o.length-1]}return t.element(e)}if(r.focusOnOpen){var i=o.findFocusTarget(n)||e();i.focus()}}function c(){if(i){var e=/<\/[\w-]*>/gm,t=i.content,n=e.test(t);n||(t=o.supplant("

{0}

",[t])),i.content=t}}return n=o.extractElementByName(n,"md-dialog"),t.element(a[0].body).addClass("md-dialog-is-showing"),c(),m(n,r),p(n.find("md-dialog"),r),h(e,n,r),b(n,r).then(function(){u(n,r),f(n,r),d()})}function s(e,n,o){return o.deactivateListeners(),o.unlockScreenReader(),o.hideBackdrop(),E(n,o)["finally"](function(){t.element(a[0].body).removeClass("md-dialog-is-showing"),n.remove(),o.origin.focus()})}function m(e,n){var o={element:null,bounds:null,focus:t.noop};n.origin=t.extend({},o,n.origin||{});var r=t.element((n.targetEvent||{}).target);r&&r.length&&(n.origin.element=r,n.origin.bounds=r[0].getBoundingClientRect(),n.origin.focus=function(){r.focus()}),n.parent=t.element(n.parent||c)}function u(t,n){var i=[],a=function(){var t="alert"==n.$type?e.hide:e.cancel;o.nextTick(t,!0)};if(n.escapeToClose){var d=n.parent,c=function(e){e.keyCode===r.KEY_CODE.ESCAPE&&(e.stopPropagation(),e.preventDefault(),a())};t.on("keyup",c),d.on("keyup",c),i.push(function(){t.off("keyup",c),d.off("keyup",c)})}if(n.clickOutsideToClose){var d=t,l=function(e){e.target===d[0]&&(e.stopPropagation(),e.preventDefault(),a())};d.on("click",l),i.push(function(){d.off("click",l)})}n.deactivateListeners=function(){i.forEach(function(e){e()}),n.deactivateListeners=null}}function h(e,t,n){n.disableParentScroll&&(n.restoreScroll=o.disableScrollAround(t,n.parent)),n.hasBackdrop&&(n.backdrop=o.createBackdrop(e,"md-dialog-backdrop md-opaque"),i.enter(n.backdrop,n.parent)),n.hideBackdrop=function(){n.backdrop&&i.leave(n.backdrop),n.disableParentScroll&&(n.restoreScroll(),delete n.restoreScroll),n.hideBackdrop=null}}function p(e,t){var r="alert"===t.$type?"alertdialog":"dialog",i=e.find("md-dialog-content"),a=e.attr("id")||"dialog_"+o.nextUid();e.attr({role:r,tabIndex:"-1"}),0===i.length&&(i=e),i.attr("id",a),e.attr("aria-describedby",a),t.ariaLabel?n.expect(e,"aria-label",t.ariaLabel):n.expectAsync(e,"aria-label",function(){var e=i.text().split(/\s+/);return e.length>3&&(e=e.slice(0,3).concat("...")),e.join(" ")})}function f(e,t){function n(e){for(;e.parentNode;){if(e===document.body)return;for(var t=e.parentNode.children,r=0;r'+e+""}}}return n.$inject=["$mdDialog","$mdTheming"],o.$inject=["$mdDialog","$mdAria","$mdUtil","$mdConstant","$animate","$document","$window","$rootElement"],e("$mdDialog").setDefaults({methods:["disableParentScroll","hasBackdrop","clickOutsideToClose","escapeToClose","targetEvent","parent"],options:o}).addPreset("alert",{methods:["title","content","ariaLabel","ok","theme"],options:n}).addPreset("confirm",{methods:["title","content","ariaLabel","ok","cancel","theme"],options:n})}t.module("material.components.dialog",["material.core","material.components.backdrop"]).directive("mdDialog",e).provider("$mdDialog",n),e.$inject=["$$rAF","$mdTheming"],n.$inject=["$$interimElementProvider"]}(),function(){function e(e){return{restrict:"E",link:e}}t.module("material.components.divider",["material.core"]).directive("mdDivider",e),e.$inject=["$mdTheming"]}(),function(){!function(){function e(){return{restrict:"E",require:["^?mdFabSpeedDial","^?mdFabToolbar"],compile:function(e,n){var o=e.children(),r=!1;t.forEach(["","data-","x-"],function(e){r=r||(o.attr(e+"ng-repeat")?!0:!1)}),r?o.addClass("md-fab-action-item"):o.wrap('
')}}}t.module("material.components.fabActions",["material.core"]).directive("mdFabActions",e)}()}(),function(){!function(){function n(n,o,r,i,a){function d(){H.direction=H.direction||"down",H.isOpen=H.isOpen||!1,p()}function c(){var e=["mousedown","mouseup","click","touchstart","touchend","focusin","focusout"];t.forEach(e,function(e){o.on(e,u)}),n.$on("$destroy",function(){t.forEach(e,function(e){o.off(e,u)})})}function l(){I=[]}function s(e){var n,o,r,i=0;do o=e.map(function(e){return e.replace("?","")}),n=t.equals(I,o),n||(e=m(e),r=e.length>=I.length&&e.length!==o.length);while(10>i&&!n&&r);return n}function m(e){var t=!1;return e.filter(function(e){return t||-1===e.indexOf("?")?!0:(t=!0,!1)})}function u(e){return I.push(e.type),s(["mousedown","focusout?","focusin?","mouseup","click"])?(N(e),void l()):s(["touchstart?","touchend?","click"])?(N(e),void l()):s(["focusin"])?(H.open(),void l()):s(["focusout"])?(H.close(),void l()):void h()}function h(){D&&e.clearTimeout(D),D=e.setTimeout(function(){l()},250)}function p(){H.currentActionIndex=-1}function f(){n.$watch("vm.direction",function(e,t){r.removeClass(o,"md-"+t),r.addClass(o,"md-"+e),p()});var e,t;n.$watch("vm.isOpen",function(n){p(),e&&t||(e=_(),t=S()),n?b():E();var i=n?"md-is-open":"",a=n?"":"md-is-open";e.attr("aria-haspopup",!0),e.attr("aria-expanded",n),t.attr("aria-hidden",!n),r.setClass(o,i,a)})}function g(){i.nextTick(function(){r.addClass(o,"md-noop")})}function b(){t.element(document).on("keydown",v)}function E(){t.element(document).off("keydown",v)}function v(e){switch(e.which){case a.KEY_CODE.SPACE:return e.preventDefault(),!1;case a.KEY_CODE.ESCAPE:return H.close(),e.preventDefault(),!1;case a.KEY_CODE.LEFT_ARROW:return A(e),!1;case a.KEY_CODE.UP_ARROW:return C(e),!1;case a.KEY_CODE.RIGHT_ARROW:return T(e),!1;case a.KEY_CODE.DOWN_ARROW:return k(e),!1}}function $(e){y(e,-1)}function M(e){y(e,1)}function y(e,n){var o=S()[0].querySelectorAll(".md-fab-action-item");t.forEach(o,function(e){t.element(t.element(e).children()[0]).attr("tabindex",-1)}),H.currentActionIndex=H.currentActionIndex+n,H.currentActionIndex=Math.min(o.length-1,H.currentActionIndex),H.currentActionIndex=Math.max(0,H.currentActionIndex);var r=t.element(o[H.currentActionIndex]).children()[0];t.element(r).attr("tabindex",0),r.focus(),e.preventDefault(),e.stopImmediatePropagation()}function A(e){"left"===H.direction?M(e):$(e)}function C(e){"down"===H.direction?$(e):M(e)}function T(e){"left"===H.direction?$(e):M(e)}function k(e){"up"===H.direction?$(e):M(e)}function w(e){return i.getClosest(e,"md-fab-trigger")}function x(e){return i.getClosest(e,"md-fab-actions")}function N(e){w(e.target)&&H.toggle(),x(e.target)&&H.close()}function _(){return o.find("md-fab-trigger")}function S(){return o.find("md-fab-actions")}var H=this;H.open=function(){n.$evalAsync("vm.isOpen = true")},H.close=function(){n.$evalAsync("vm.isOpen = false"),o.find("md-fab-trigger")[0].focus()},H.toggle=function(){n.$evalAsync("vm.isOpen = !vm.isOpen")},d(),c(),f(),g();var D,I=[]}t.module("material.components.fabShared",["material.core"]).controller("FabController",n),n.$inject=["$scope","$element","$animate","$mdUtil","$mdConstant"]}()}(),function(){!function(){function n(){function e(e,t){t.prepend('
')}return{restrict:"E",scope:{direction:"@?mdDirection",isOpen:"=?mdOpen"},bindToController:!0,controller:"FabController",controllerAs:"vm",link:e}}function o(){function n(n){var o=n[0],r=n.controller("mdFabSpeedDial"),i=o.querySelectorAll(".md-fab-action-item"),a=o.querySelector("md-fab-trigger"),d=o.querySelector(".md-css-variables"),c=parseInt(e.getComputedStyle(d).zIndex);t.forEach(i,function(e,t){var n=e.style;n.transform=n.webkitTransform="",n.transitionDelay="",n.opacity=1,n.zIndex=i.length-t+c}),a.style.zIndex=c+i.length+1,r.isOpen||t.forEach(i,function(e,t){var n,o,i=e.style;switch(r.direction){case"up":n=e.scrollHeight*(t+1),o="Y";break;case"down":n=-e.scrollHeight*(t+1),o="Y";break;case"left":n=e.scrollWidth*(t+1),o="X";break;case"right":n=-e.scrollWidth*(t+1),o="X"}var a="translate"+o+"("+n+"px)";i.transform=i.webkitTransform=a})}return{addClass:function(e,t,o){e.hasClass("md-fling")&&(n(e),o())},removeClass:function(e,t,o){n(e),o()}}}function r(){function e(e){var o=e[0],r=e.controller("mdFabSpeedDial"),i=o.querySelectorAll(".md-fab-action-item");t.forEach(i,function(e,t){var o=e.style,a=t*n;o.opacity=r.isOpen?1:0,o.transform=o.webkitTransform=r.isOpen?"scale(1)":"scale(0)",o.transitionDelay=(r.isOpen?a:i.length-a)+"ms"})}var n=65;return{addClass:function(t,n,o){e(t),o()},removeClass:function(t,n,o){e(t),o()}}}t.module("material.components.fabSpeedDial",["material.core","material.components.fabShared","material.components.fabTrigger","material.components.fabActions"]).directive("mdFabSpeedDial",n).animation(".md-fling",o).animation(".md-scale",r).service("mdFabSpeedDialFlingAnimation",o).service("mdFabSpeedDialScaleAnimation",r)}()}(),function(){!function(){function n(){function e(e,t,n){t.addClass("md-fab-toolbar"),t.find("md-fab-trigger").find("button").prepend('
')}return{restrict:"E",transclude:!0,template:'
',scope:{direction:"=?mdDirection",isOpen:"=?mdOpen"},bindToController:!0,controller:"FabController",controllerAs:"vm",link:e}}function o(){function n(n,o,r){if(o){var i=n[0],a=n.controller("mdFabToolbar"),d=i.querySelector(".md-fab-toolbar-background"),c=i.querySelector("md-fab-trigger button"),l=i.querySelector("md-toolbar"),s=i.querySelector("md-fab-trigger button md-icon"),m=n.find("md-fab-actions").children();if(c&&d){var u=e.getComputedStyle(c).getPropertyValue("background-color"),h=i.offsetWidth,p=(i.offsetHeight,2*h);d.style.backgroundColor=u,d.style.borderRadius=h+"px",a.isOpen?(l.style.pointerEvents="initial",d.style.width=p+"px",d.style.height=p+"px",d.style.top=-(p/2)+"px",n.hasClass("md-right")&&(d.style.left=-(p/2)+"px",d.style.right=null),n.hasClass("md-left")&&(d.style.right=-(p/2)+"px",d.style.left=null),d.style.transitionDelay="0ms",s&&(s.style.transitionDelay=".3s"),t.forEach(m,function(e,t){e.style.transitionDelay=25*(m.length-t)+"ms"})):(l.style.pointerEvents="none",d.style.width=c.offsetWidth+"px",d.style.height=c.offsetHeight+"px",d.style.top="0px",n.hasClass("md-right")&&(d.style.left="0px",d.style.right=null),n.hasClass("md-left")&&(d.style.right="0px",d.style.left=null),d.style.transitionDelay="200ms",s&&(s.style.transitionDelay="0ms"),t.forEach(m,function(e,t){e.style.transitionDelay=200+25*t+"ms"}))}}}return{addClass:function(e,t,o){n(e,t,o),o()},removeClass:function(e,t,o){n(e,t,o),o()}}}t.module("material.components.fabToolbar",["material.core","material.components.fabShared","material.components.fabTrigger","material.components.fabActions"]).directive("mdFabToolbar",n).animation(".md-fab-toolbar",o).service("mdFabToolbarAnimation",o)}()}(),function(){!function(){function e(){return{restrict:"E",require:["^?mdFabSpeedDial","^?mdFabToolbar"]}}t.module("material.components.fabTrigger",["material.core"]).directive("mdFabTrigger",e)}()}(),function(){function e(e,o,r,i){function a(n,a,d,c){function l(){for(var e in o.MEDIA)i(e),i.getQuery(o.MEDIA[e]).addListener(A);return i.watchResponsiveAttributes(["md-cols","md-row-height"],d,m)}function s(){c.layoutDelegate=t.noop,C();for(var e in o.MEDIA)i.getQuery(o.MEDIA[e]).removeListener(A)}function m(e){null==e?c.invalidateLayout():i(e)&&c.invalidateLayout()}function u(e){var o=g(),i={tileSpans:b(o),colCount:E(),rowMode:M(),rowHeight:$(),gutter:v()};if(e||!t.equals(i,T)){var d=r(i.colCount,i.tileSpans,o).map(function(e,n){return{grid:{element:a,style:f(i.colCount,n,i.gutter,i.rowMode,i.rowHeight)},tiles:e.map(function(e,n){return{element:t.element(o[n]),style:p(e.position,e.spans,i.colCount,i.rowCount,i.gutter,i.rowMode,i.rowHeight)}})}}).reflow().performance();n.mdOnLayout({$event:{performance:d}}),T=i}}function h(e){return k+e+w}function p(e,t,n,o,r,i,a){var d=1/n*100,c=(n-1)/n,l=x({share:d,gutterShare:c,gutter:r}),s={left:N({unit:l,offset:e.col,gutter:r}),width:_({unit:l,span:t.col,gutter:r}),paddingTop:"",marginTop:"",top:"",height:""};switch(i){case"fixed":s.top=N({unit:a,offset:e.row,gutter:r}),s.height=_({unit:a,span:t.row,gutter:r});break;case"ratio":var m=d/a,u=x({share:m,gutterShare:c,gutter:r});s.paddingTop=_({unit:u,span:t.row,gutter:r}),s.marginTop=N({unit:u,offset:e.row,gutter:r});break;case"fit":var h=(o-1)/o,m=1/o*100,u=x({share:m,gutterShare:h,gutter:r});s.top=N({unit:u,offset:e.row,gutter:r}),s.height=_({unit:u,span:t.row,gutter:r})}return s}function f(e,t,n,o,r){var i={height:"",paddingBottom:""};switch(o){case"fixed":i.height=_({unit:r,span:t,gutter:n});break;case"ratio":var a=1===e?0:(e-1)/e,d=1/e*100,c=d*(1/r),l=x({share:c,gutterShare:a,gutter:n});i.paddingBottom=_({unit:l,span:t,gutter:n});break;case"fit":}return i}function g(){return[].filter.call(a.children(),function(e){return"MD-GRID-TILE"==e.tagName})}function b(e){return[].map.call(e,function(e){var n=t.element(e).controller("mdGridTile");return{row:parseInt(i.getResponsiveAttribute(n.$attrs,"md-rowspan"),10)||1,col:parseInt(i.getResponsiveAttribute(n.$attrs,"md-colspan"),10)||1}})}function E(){var e=parseInt(i.getResponsiveAttribute(d,"md-cols"),10);if(isNaN(e))throw"md-grid-list: md-cols attribute was not found, or contained a non-numeric value";return e}function v(){return y(i.getResponsiveAttribute(d,"md-gutter")||1)}function $(){var e=i.getResponsiveAttribute(d,"md-row-height");switch(M()){case"fixed":return y(e);case"ratio":var t=e.split(":");return parseFloat(t[0])/parseFloat(t[1]);case"fit":return 0}}function M(){var e=i.getResponsiveAttribute(d,"md-row-height");return"fit"==e?"fit":-1!==e.indexOf(":")?"ratio":"fixed"}function y(e){return/\D$/.test(e)?e:e+"px"}a.attr("role","list"),c.layoutDelegate=u;var A=t.bind(c,c.invalidateLayout),C=l();n.$on("$destroy",s);var T,k=e.startSymbol(),w=e.endSymbol(),x=e(h("share")+"% - ("+h("gutter")+" * "+h("gutterShare")+")"),N=e("calc(("+h("unit")+" + "+h("gutter")+") * "+h("offset")+")"),_=e("calc(("+h("unit")+") * "+h("span")+" + ("+h("span")+" - 1) * "+h("gutter")+")")}return{restrict:"E",controller:n,scope:{mdOnLayout:"&"},link:a}}function n(e){this.layoutInvalidated=!1,this.tilesInvalidated=!1,this.$timeout_=e.nextTick,this.layoutDelegate=t.noop}function o(e){function n(t,n){var o,a,d,c,l,s;return c=e.time(function(){a=r(t,n)}),o={layoutInfo:function(){return a},map:function(t){return l=e.time(function(){var e=o.layoutInfo();d=t(e.positioning,e.rowCount)}),o},reflow:function(t){return s=e.time(function(){var e=t||i;e(d.grid,d.tiles)}),o},performance:function(){return{tileCount:n.length,layoutTime:c,mapTime:l,reflowTime:s,totalTime:c+l+s}}}}function o(e,t){e.element.css(e.style),t.forEach(function(e){e.element.css(e.style)})}function r(e,t){function n(t,n){if(t.col>e)throw"md-grid-list: Tile at position "+n+" has a colspan ("+t.col+") that exceeds the column count ("+e+")";for(var a=0,s=0;s-a=e?o():(a=l.indexOf(0,d),-1!==a&&-1!==(s=i(a+1))?d=s+1:(a=s=0,o()));return r(a,t.col,t.row),d=a+t.col,{col:a,row:c}}function o(){d=0,c++,r(0,e,-1)}function r(e,t,n){for(var o=e;e+t>o;o++)l[o]=Math.max(l[o]+n,0)}function i(e){var t;for(t=e;tn;n++)t.push(0);return t}var d=0,c=0,l=a();return{positioning:t.map(function(e,t){return{spans:e,position:n(e,t)}}),rowCount:c+Math.max.apply(Math,l)}}var i=o;return n.animateWith=function(e){i=t.isFunction(e)?e:o},n}function r(e){function n(n,o,r,i){o.attr("role","listitem");var a=e.watchResponsiveAttributes(["md-colspan","md-rowspan"],r,t.bind(i,i.invalidateLayout));i.invalidateTiles(),n.$on("$destroy",function(){a(),i.invalidateLayout()}),t.isDefined(n.$parent.$index)&&n.$watch(function(){return n.$parent.$index},function(e,t){e!==t&&i.invalidateTiles()})}return{restrict:"E",require:"^mdGridList",template:"
",transclude:!0,scope:{},controller:["$attrs",function(e){this.$attrs=e}],link:n}}function i(){return{template:"
",transclude:!0}}t.module("material.components.gridList",["material.core"]).directive("mdGridList",e).directive("mdGridTile",r).directive("mdGridTileFooter",i).directive("mdGridTileHeader",i).factory("$mdGridLayout",o),e.$inject=["$interpolate","$mdConstant","$mdGridLayout","$mdMedia"],n.$inject=["$mdUtil"],n.prototype={invalidateTiles:function(){this.tilesInvalidated=!0,this.invalidateLayout()},invalidateLayout:function(){this.layoutInvalidated||(this.layoutInvalidated=!0,this.$timeout_(t.bind(this,this.layout)))},layout:function(){try{this.layoutDelegate(this.tilesInvalidated)}finally{this.layoutInvalidated=!1,this.tilesInvalidated=!1}}},o.$inject=["$mdUtil"],r.$inject=["$mdMedia"]}(),function(){function e(e,t,n){function o(o,r,i){function a(){var e=r.parent();return e.attr("aria-label")||e.text()?!0:e.parent().attr("aria-label")||e.parent().text()?!0:!1}function d(){function t(){return!o.fontIcon&&!o.fontSet}o.svgIcon||o.svgSrc||(o.fontIcon&&r.addClass("md-font "+o.fontIcon),o.fontSet&&r.addClass(e.fontSet(o.fontSet)),t()&&r.addClass(e.fontSet()))}t(r),d();var c=i.alt||o.fontIcon||o.svgIcon||r.text(),l=i.$normalize(i.$attr.mdSvgIcon||i.$attr.mdSvgSrc||"");i["aria-label"]||(""==c||a()?r.text()||n.expect(r,"aria-hidden","true"):(n.expect(r,"aria-label",c),n.expect(r,"role","img"))),l&&i.$observe(l,function(t){r.empty(),t&&e(t).then(function(e){r.append(e)})})}return{scope:{fontSet:"@mdFontSet",fontIcon:"@mdFontIcon",svgIcon:"@mdSvgIcon",svgSrc:"@mdSvgSrc"},restrict:"E",link:o}}t.module("material.components.icon",["material.core"]).directive("mdIcon",e),e.$inject=["$mdIcon","$mdTheming","$mdAria"]}(),function(){function e(){}function n(e,t){this.url=e,this.viewBoxSize=t||r.defaultViewBoxSize}function o(e,n,o,r,i){function a(t){if(t=t||"",b[t])return o.when(b[t].clone());if(E.test(t))return m(t).then(c(t));-1==t.indexOf(":")&&(t="$default:"+t);var n=e[t]?l:s;return n(t).then(c(t))}function d(n){var o=t.isUndefined(n)||!(n&&n.length);if(o)return e.defaultFontSet;var r=n;return t.forEach(e.fontSets,function(e){e.alias==n&&(r=e.fontSet||r)}),r}function c(t){return function(n){return b[t]=h(n)?n:new p(n,e[t]),b[t].clone()}}function l(t){var n=e[t];return m(n.url).then(function(e){return new p(e,n)})}function s(t){function n(e){var n=t.slice(t.lastIndexOf(":")+1),o=e.querySelector("#"+n);return o?new p(o,d):i(t)}function i(e){var t="icon "+e+" not found";return r.warn(t),o.reject(t||e)}var a=t.substring(0,t.lastIndexOf(":"))||"$default",d=e[a];return d?m(d.url).then(n):i(t)}function m(e){return n.get(e,{cache:i}).then(function(e){return t.element("
").append(e.data).find("svg")[0]})["catch"](u)}function u(e){var n=t.isString(e)?e:e.message||e.data||e.statusText;return r.warn(n),o.reject(n)}function h(e){return t.isDefined(e.element)&&t.isDefined(e.config)}function p(e,n){"svg"!=e.tagName&&(e=t.element('').append(e)[0]),e.getAttribute("xmlns")||e.setAttribute("xmlns","http://www.w3.org/2000/svg"),this.element=e,this.config=n,this.prepare()}function f(){var n=this.config?this.config.viewBoxSize:e.defaultViewBoxSize;t.forEach({fit:"",height:"100%",width:"100%",preserveAspectRatio:"xMidYMid meet",viewBox:this.element.getAttribute("viewBox")||"0 0 "+n+" "+n},function(e,t){this.element.setAttribute(t,e)},this),t.forEach({"pointer-events":"none",display:"block"},function(e,t){this.element.style[t]=e},this)}function g(){return this.element.cloneNode(!0)}var b={},E=/[-a-zA-Z0-9@:%_\+.~#?&//=]{2,256}\.[a-z]{2,4}\b(\/[-a-zA-Z0-9@:%_\+.~#?&//=]*)?/i;return p.prototype={clone:g,prepare:f},a.fontSet=d,a}t.module("material.components.icon").provider("$mdIcon",e);var r={defaultViewBoxSize:24,defaultFontSet:"material-icons",fontSets:[]};e.prototype={icon:function(e,t,o){return-1==e.indexOf(":")&&(e="$default:"+e),r[e]=new n(t,o),this},iconSet:function(e,t,o){return r[e]=new n(t,o),this},defaultIconSet:function(e,t){var o="$default";return r[o]||(r[o]=new n(e,t)),r[o].viewBoxSize=t||r.defaultViewBoxSize,this},defaultViewBoxSize:function(e){return r.defaultViewBoxSize=e,this},fontSet:function(e,t){return r.fontSets.push({alias:e,fontSet:t||e}),this},defaultFontSet:function(e){return r.defaultFontSet=e?e:"",this},defaultIconSize:function(e){return r.defaultIconSize=e,this},preloadIcons:function(e){var t=this,n=[{id:"md-tabs-arrow",url:"md-tabs-arrow.svg",svg:'' -},{id:"md-close",url:"md-close.svg",svg:''},{id:"md-cancel",url:"md-cancel.svg",svg:''},{id:"md-menu",url:"md-menu.svg",svg:''},{id:"md-toggle-arrow",url:"md-toggle-arrow-svg",svg:''},{id:"md-calendar",url:"md-calendar.svg",svg:''}];n.forEach(function(n){t.icon(n.id,n.url),e.put(n.url,n.svg)})},$get:["$http","$q","$log","$templateCache",function(e,t,n,i){return this.preloadIcons(i),o(r,e,t,n,i)}]}}(),function(){function e(e,t){function n(t,n,o){e(n)}function o(e,n,o){var r=this;r.isErrorGetter=o.mdIsError&&t(o.mdIsError),r.delegateClick=function(){r.input.focus()},r.element=n,r.setFocused=function(e){n.toggleClass("md-input-focused",!!e)},r.setHasValue=function(e){n.toggleClass("md-input-has-value",!!e)},r.setInvalid=function(e){n.toggleClass("md-input-invalid",!!e)},e.$watch(function(){return r.label&&r.input},function(e){e&&!r.label.attr("for")&&r.label.attr("for",r.input.attr("id"))})}return o.$inject=["$scope","$element","$attrs"],{restrict:"E",link:n,controller:o}}function n(){return{restrict:"E",require:"^?mdInputContainer",link:function(e,t,n,o){o&&!n.mdNoFloat&&(o.label=t,e.$on("$destroy",function(){o.label=null}))}}}function o(e,n,o){function r(r,i,a,d){function c(e){return m.setHasValue(!u.$isEmpty(e)),e}function l(){m.setHasValue(i.val().length>0||(i[0].validity||{}).badInput)}function s(){function o(e){return f(),e}function a(){if(s.style.height=s.offsetHeight+"px",i.addClass("md-no-flex"),isNaN(h)){l.style.height="auto",l.scrollTop=0;var e=d();e&&(l.style.height=e+"px")}else{l.setAttribute("rows",1),p||(l.style.minHeight="0",p=i.prop("clientHeight"),l.style.minHeight=null);var t=Math.max(h,Math.round(l.scrollHeight/p));l.setAttribute("rows",t)}i.removeClass("md-no-flex"),s.style.height="auto"}function d(){var e=l.scrollHeight-l.offsetHeight;return l.offsetHeight+(e>0?e:0)}function c(e){l.scrollTop=0;var t=l.scrollHeight-l.offsetHeight,n=l.offsetHeight+t;l.style.height=n+"px"}if(!t.isDefined(i.attr("md-no-autogrow"))){var l=i[0],s=m.element[0],h=0/0,p=null;l.hasAttribute("rows")&&(h=parseInt(l.getAttribute("rows")));var f=e.debounce(a,1);u?(u.$formatters.push(o),u.$viewChangeListeners.push(o)):f(),i.on("keydown input",f),isNaN(h)&&(i.attr("rows","1"),i.on("scroll",c)),t.element(n).on("resize",f),r.$on("$destroy",function(){t.element(n).off("resize",f)})}}var m=d[0],u=d[1]||e.fakeNgModel(),h=t.isDefined(a.readonly);if(m){if(m.input)throw new Error(" can only have *one*
');r.$set("ngTrim","false"),l.element.append(s),c.$formatters.push(a),c.$viewChangeListeners.push(a),o.on("input keydown",function(){a()}),n.$watch(r.mdMaxlength,function(n){d=n,t.isNumber(n)&&n>0?(s.parent().length||e.enter(s,l.element,t.element(l.element[0].lastElementChild)),a()):e.leave(s)}),c.$validators["md-maxlength"]=function(e,n){return!t.isNumber(d)||0>d?!0:(e||o.val()||n||"").length<=d}}return{restrict:"A",require:["ngModel","^mdInputContainer"],link:n}}function i(e){function n(n,o,r,i){if(i&&!t.isDefined(i.element.attr("md-no-float"))){var a=r.placeholder;if(o.removeAttr("placeholder"),0==i.element.find("label").length){if(i.input&&"MD-SELECT"!=i.input[0].nodeName){var d='";i.element.addClass("md-icon-float"),i.element.prepend(d)}}else"MD-SELECT"!=o[0].nodeName&&e.warn("The placeholder='"+a+"' will be ignored since this md-input-container has a child label element.")}}return{restrict:"A",require:"^^?mdInputContainer",priority:200,link:n}}t.module("material.components.input",["material.core"]).directive("mdInputContainer",e).directive("label",n).directive("input",o).directive("textarea",o).directive("mdMaxlength",r).directive("placeholder",i),e.$inject=["$mdTheming","$parse"],o.$inject=["$mdUtil","$window","$mdAria"],r.$inject=["$animate"],i.$inject=["$log"]}(),function(){function e(e){return{restrict:"E",compile:function(t){return t[0].setAttribute("role","list"),e}}}function n(e,n,o){var r=["md-checkbox","md-switch"];return{restrict:"E",controller:"MdListController",compile:function(i,a){function d(){for(var e,t,n=["md-switch","md-checkbox"],o=0;t=n[o];++o)if((e=i.find(t)[0])&&!e.hasAttribute("aria-label")){var r=i.find("p")[0];if(!r)return;e.setAttribute("aria-label","Toggle "+r.textContent)}}function c(n){var o;if("div"==n)o=t.element('
'),o.append(i.contents()),i.addClass("md-proxy-focus");else{o=t.element('
');var r=["ng-click","aria-label","ng-disabled"];t.forEach(r,function(e){i[0].hasAttribute(e)&&(o[0].setAttribute(e,i[0].getAttribute(e)),i[0].removeAttribute(e))}),o.children().eq(0).append(i.contents())}if(i[0].setAttribute("tabindex","-1"),i.append(o),h&&h.hasAttribute("ng-click")){e.expect(h,"aria-label");var d=t.element('');d.attr("ng-click",h.getAttribute("ng-click")),h.removeAttribute("ng-click"),h.setAttribute("tabindex","-1"),h.classList.remove("md-secondary"),d.append(h),h=d[0]}h&&(h.hasAttribute("ng-click")||a.ngClick&&l(h))&&(i.addClass("md-with-secondary"),i.append(h))}function l(e){return-1!=r.indexOf(e.nodeName.toLowerCase())}function s(e,i,a,d){function c(){var e=i.children();e.length&&!e[0].hasAttribute("ng-click")&&t.forEach(r,function(e){t.forEach(m.querySelectorAll(e),function(e){s.push(e)})})}function l(){(s.length||u)&&(i.addClass("md-clickable"),d.attachRipple(e,t.element(i[0].querySelector(".md-no-style"))))}var s=[],m=i[0].firstElementChild,u=m&&m.hasAttribute("ng-click");c(),l(),i.hasClass("md-proxy-focus")&&s.length&&t.forEach(s,function(n){n=t.element(n),e.mouseActive=!1,n.on("mousedown",function(){e.mouseActive=!0,o(function(){e.mouseActive=!1},100)}).on("focus",function(){e.mouseActive===!1&&i.addClass("md-focused"),n.on("blur",function t(){i.removeClass("md-focused"),n.off("blur",t)})})}),u||s.length||m&&m.addEventListener("keypress",function(e){if("INPUT"!=e.target.nodeName&&"TEXTAREA"!=e.target.nodeName){var t=e.which||e.keyCode;t==n.KEY_CODE.SPACE&&m&&(m.click(),e.preventDefault(),e.stopPropagation())}}),i.off("click"),i.off("keypress"),s.length&&m&&i.children().eq(0).on("click",function(e){m.contains(e.target)&&t.forEach(s,function(n){e.target===n||n.contains(e.target)||t.element(n).triggerHandler("click")})})}var m,u,h=i[0].querySelector(".md-secondary");if(i[0].setAttribute("role","listitem"),a.ngClick)c("button");else{for(var p,f=0;p=r[f];++f)if(u=i[0].querySelector(p)){m=!0;break}m?c("div"):i[0].querySelector("md-button")||i.addClass("md-no-proxy")}return d(),s}}}function o(e,t,n){function o(e,t){var o={};n.attach(e,t,o)}var r=this;r.attachRipple=o}t.module("material.components.list",["material.core"]).controller("MdListController",o).directive("mdList",e).directive("mdListItem",n),e.$inject=["$mdTheming"],n.$inject=["$mdAria","$mdConstant","$timeout"],o.$inject=["$scope","$element","$mdListInkRipple"]}(),function(){function e(e){function n(e){e.addClass("md-menu");var t=e.children()[0];if(t.hasAttribute("ng-click")||(t=t.querySelector("[ng-click],[ng-mouseenter]")),2!=e.children().length)throw Error(r+"Expected two children elements.");return t&&t.setAttribute("aria-haspopup","true"),o}function o(e,n,o,r){var i=t.element('
'),a=n.children()[1];i.append(a),r.init(i),e.$on("$destroy",function(){i.remove(),r.close()})}var r="Invalid HTML for md-menu: ";return{restrict:"E",require:"mdMenu",controller:"mdMenuCtrl",scope:!0,compile:n}}function n(e,n,o,r){function i(e){s=e,m=o[0].querySelector("[ng-click],[ng-mouseenter]")}function a(t){t&&t.stopPropagation(),m=m||(t?t.target:o[0]),m.setAttribute("aria-expanded","true"),u.isOpen=!0,e.show({scope:r,mdMenuCtrl:u,element:s,target:m})}function d(t){u.isOpen&&(u.isOpen=!1,m&&m.setAttribute("aria-expanded","false"),e.hide(),t||o.children()[0].focus())}function c(){var e=(n.mdPositionMode||"target").split(" ");return 1==e.length&&e.push(e[0]),{left:e[0],top:e[1]}}function l(){var e=(n.mdOffset||"0 0").split(" ").map(parseFloat);if(2==e.length)return{left:e[0],top:e[1]};if(1==e.length)return{top:e[0],left:e[0]};throw Error("Invalid offsets specified. Please follow format or ")}var s,m,u=this;this.init=t.bind(this,i),this.open=t.bind(this,a),this.close=t.bind(this,d),this.positionMode=t.bind(this,c),this.offsets=t.bind(this,l),r.$mdOpenMenu=this.open}t.module("material.components.menu",["material.core","material.components.backdrop"]).directive("mdMenu",e).controller("mdMenuCtrl",n),e.$inject=["$mdMenu"],n.$inject=["$mdMenu","$attrs","$element","$scope"]}(),function(){function e(e){function o(e,o,i,a,d,c,l,s,m){function u(t,n,o){return o.disableParentScroll&&!e.getClosest(o.target,"MD-DIALOG")?o.restoreScroll=e.disableScrollAround(o.element,o.parent):o.disableParentScroll=!1,o.hasBackdrop&&(o.backdrop=e.createBackdrop(t,"md-menu-backdrop md-click-catcher"),m.enter(o.backdrop,o.parent)),function(){o.backdrop&&m.leave(o.backdrop,{duration:0}),o.disableParentScroll&&o.restoreScroll()}}function h(e,t,n){return n.cleanupInteraction(),n.cleanupResizing(),n.hideBackdrop(),s(t,{addClass:"md-leave"}).start().then(function(){t.removeClass("md-active"),b(t,n),n.alreadyOpen=!1})}function p(e,n,r){function a(){return r.parent.append(n),c(function(e){var t=E(n,r);n.removeClass("md-leave"),s(n,{addClass:"md-active",from:v.toCss(t),to:v.toCss({transform:"scale(1.0,1.0)"})}).start().then(e)})}function m(){if(!r.target)throw Error("$mdMenu.show() expected a target to animate from in options.target");t.extend(r,{alreadyOpen:!1,isRemoved:!1,target:t.element(r.target),parent:t.element(r.parent),menuContentEl:t.element(n[0].querySelector("md-menu-content"))})}function h(){var e=function(e,t){return l.throttle(function(){if(!r.isRemoved){var n=E(e,t);e.css(v.toCss(n))}})}(n,r);return d.addEventListener("resize",e),d.addEventListener("orientationchange",e),function(){d.removeEventListener("resize",e),d.removeEventListener("orientationchange",e)}}function p(){function t(t){e.$apply(function(){var e=i.KEY_CODE;switch(t.keyCode){case e.ESCAPE:r.mdMenuCtrl.close(),t.stopPropagation();break;case e.UP_ARROW:f(t,r.menuContentEl,r,-1),t.stopPropagation();break;case e.DOWN_ARROW:f(t,r.menuContentEl,r,1),t.stopPropagation()}})}function o(t){t.preventDefault(),t.stopPropagation(),e.$apply(function(){r.mdMenuCtrl.close(!0)})}function a(t){function n(){e.$apply(function(){r.mdMenuCtrl.close()})}function o(e,t){if(!e)return!1;for(var n,o=0;n=t[o];++o)for(var r,i=[n,"data-"+n,"x-"+n],a=0;r=i[a];++a)if(e.hasAttribute(r))return!0;return!1}var i=t.target;do{if(i==r.menuContentEl[0])return;if(o(i,["ng-click","ng-href","ui-sref"])){i.hasAttribute("disabled")||n();break}}while(i=i.parentNode)}n.addClass("md-clickable"),r.backdrop&&r.backdrop.on("click",o),r.menuContentEl.on("keydown",t),r.menuContentEl[0].addEventListener("click",a,!0);var d=r.menuContentEl[0].querySelector("[md-menu-focus-target]")||r.menuContentEl[0].firstElementChild.firstElementChild;return d.focus(),function(){n.removeClass("md-clickable"),r.backdrop&&r.backdrop.off("click",o),r.menuContentEl.off("keydown",t),r.menuContentEl[0].removeEventListener("click",a,!0)}}return m(r),o.inherit(r.menuContentEl,r.target),r.cleanupResizing=h(),r.hideBackdrop=u(e,n,r),a().then(function(e){return r.alreadyOpen=!0,r.cleanupInteraction=p(),e})}function f(t,n,o,r){for(var i=e.getClosest(t.target,"MD-MENU-ITEM"),a=e.nodesToArray(n[0].children),d=a.indexOf(i),c=d+r;c>=0&&c
',compile:n}}t.module("material.components.progressCircular",["material.core"]).directive("mdProgressCircular",e),e.$inject=["$mdConstant","$mdTheming"]}(),function(){function e(e,o,r){function i(e,t,n){return e.attr("aria-valuemin",0),e.attr("aria-valuemax",100),e.attr("role","progressbar"),a}function a(i,a,c){r(a);var l=a[0].querySelector(".md-bar1").style,s=a[0].querySelector(".md-bar2").style,m=t.element(a[0].querySelector(".md-container"));c.$observe("value",function(e){if("query"!=c.mdMode){var t=d(e);a.attr("aria-valuenow",t),s[o.CSS.TRANSFORM]=n[t]}}),c.$observe("mdBufferValue",function(e){l[o.CSS.TRANSFORM]=n[d(e)]}),e(function(){m.addClass("md-ready")})}function d(e){return e>100?100:0>e?0:Math.ceil(e||0)}return{restrict:"E",template:'
',compile:i}}t.module("material.components.progressLinear",["material.core"]).directive("mdProgressLinear",e),e.$inject=["$$rAF","$mdConstant","$mdTheming"];var n=function(){function e(e){var t=e/100,n=(e-100)/2;return"translateX("+n.toString()+"%) scale("+t.toString()+", 1)"}for(var t=new Array(101),n=0;101>n;n++)t[n]=e(n);return t}()}(),function(){function e(e,n,o,r){function i(i,a,d,c){function l(){a.hasClass("md-focused")||a.addClass("md-focused")}function s(o){var r=o.which||o.keyCode;switch(r){case n.KEY_CODE.LEFT_ARROW:case n.KEY_CODE.UP_ARROW:o.preventDefault(),m.selectPrevious(),l();break;case n.KEY_CODE.RIGHT_ARROW:case n.KEY_CODE.DOWN_ARROW:o.preventDefault(),m.selectNext(),l();break;case n.KEY_CODE.ENTER:var i=t.element(e.getClosest(a[0],"form"));i.length>0&&i.triggerHandler("submit")}}o(a);var m=c[0],u=c[1]||e.fakeNgModel();m.init(u),i.mouseActive=!1,a.attr({role:"radiogroup",tabIndex:a.attr("tabindex")||"0"}).on("keydown",s).on("mousedown",function(e){i.mouseActive=!0,r(function(){i.mouseActive=!1},100)}).on("focus",function(){i.mouseActive===!1&&m.$element.addClass("md-focused")}).on("blur",function(){m.$element.removeClass("md-focused")})}function a(e){this._radioButtonRenderFns=[],this.$element=e}function d(){return{init:function(e){this._ngModelCtrl=e,this._ngModelCtrl.$render=t.bind(this,this.render)},add:function(e){this._radioButtonRenderFns.push(e)},remove:function(e){var t=this._radioButtonRenderFns.indexOf(e);-1!==t&&this._radioButtonRenderFns.splice(t,1)},render:function(){this._radioButtonRenderFns.forEach(function(e){e()})},setViewValue:function(e,t){this._ngModelCtrl.$setViewValue(e,t),this.render()},getViewValue:function(){return this._ngModelCtrl.$viewValue},selectNext:function(){return c(this.$element,1)},selectPrevious:function(){return c(this.$element,-1)},setActiveDescendant:function(e){this.$element.attr("aria-activedescendant",e)}}}function c(n,o){var r=e.iterator(n[0].querySelectorAll("md-radio-button"),!0);if(r.count()){var i=function(e){return!t.element(e).attr("disabled")},a=n[0].querySelector("md-radio-button.md-checked"),d=r[0>o?"previous":"next"](a,i)||r.first();t.element(d).triggerHandler("click")}}return a.prototype=d(),{restrict:"E",controller:["$element",a],require:["mdRadioGroup","?ngModel"],link:{pre:i}}}function n(e,t,n){function o(o,i,a,d){function c(e){i[0].hasAttribute("disabled")||o.$apply(function(){d.setViewValue(a.value,e&&e.type)})}function l(){var e=d.getViewValue()==a.value;e!==m&&(m=e,i.attr("aria-checked",e),e?(i.addClass(r),d.setActiveDescendant(i.attr("id"))):i.removeClass(r))}function s(n,o){function r(){return a.id||"radio_"+t.nextUid()}o.ariaId=r(),n.attr({id:o.ariaId,role:"radio","aria-checked":"false"}),e.expectWithText(n,"aria-label")}var m;n(i),s(i,o),d.add(l),a.$observe("value",l),i.on("click",c).on("$destroy",function(){d.remove(l)})}var r="md-checked";return{restrict:"E",require:"^mdRadioGroup",transclude:!0,template:'
',link:o}}t.module("material.components.radioButton",["material.core"]).directive("mdRadioGroup",e).directive("mdRadioButton",n),e.$inject=["$mdUtil","$mdConstant","$mdTheming","$timeout"],n.$inject=["$mdAria","$mdUtil","$mdTheming"]}(),function(){function e(e,o,r,i,a,d,c){function l(a,l){var s=t.element("");if(s.append(''),s.addClass("md-select-value"),s[0].hasAttribute("id")||s.attr("id","select_value_label_"+o.nextUid()),a.find("md-content").length||a.append(t.element("").append(a.contents())),l.mdOnOpen&&(a.find("md-content").prepend(t.element('
')),a.find("md-option").attr("ng-show","$$loadingAsyncDone")),l.name){var m=t.element(',