--- /dev/null
+<md-dialog class="schedule-dialog" aria-label="New Schedule">
+ <form name="scheduleForm" class="md-inline-form" novalidate>
+ <md-toolbar class="md-accent md-hue-2">
+ <div
+ class="md-toolbar-tools"
+ layout="row"
+ layout-align="space-between center"
+ >
+ <span class="title">{{ vm.title | translate }}</span>
+ <md-button class="md-icon-button" ng-click="vm.closeDialog()">
+ <md-icon
+ md-font-icon="icon-close"
+ aria-label="Close dialog"
+ ></md-icon>
+ </md-button>
+ </div>
+ </md-toolbar>
+
+ <md-dialog-content ms-scroll>
+ <div class="error-list">
+ <div
+ ng-repeat="error in vm.errors"
+ class="error"
+ layout="row"
+ layout-align="space-between center"
+ >
+ <div>
+ <span class="message">{{error.message}}</span>
+ <span class="type">({{error.type}})</span>
+ </div>
+ <md-button class="md-icon-button">
+ <md-icon
+ md-font-icon="icon-alert-box"
+ aria-label="alert error"
+ class="s16"
+ ></md-icon>
+ </md-button>
+ </div>
+ </div>
+ <md-input-container class="md-block">
+ <label translate="APP.NAME">Name</label>
+ <input
+ type="text"
+ name="name"
+ ng-model="vm.schedule.name"
+ ng-required="true"
+ autofocus
+ />
+
+ <div
+ ng-messages="scheduleForm['name'].$error"
+ ng-show="scheduleForm['name'].$touched"
+ role="alert"
+ >
+ <div ng-message="required">
+ <span translate="APP.ERRORS.NAME_REQUIRED"
+ >Name field is required</span
+ >
+ </div>
+ </div>
+ </md-input-container>
+ <md-input-container class="md-block">
+ <label translate="APP.REPORT">Report</label>
+ <input
+ type="search"
+ name="report"
+ ng-model="vm.schedule.report"
+ ng-required="true"
+ autocomplete="off"
+ ng-click="vm.searchReport()"
+ />
+ <md-icon
+ md-font-icon="icon-magnify"
+ ng-click="vm.searchReport()"
+ aria-label="Search Report"
+ ></md-icon>
+ <div
+ ng-messages="scheduleForm['report'].$error"
+ ng-show="scheduleForm['report'].$touched"
+ role="alert"
+ >
+ <div ng-message="required">
+ <span translate="TOOLS.ERRORS.REPORT_REQUIRED"
+ >Report field is required</span
+ >
+ </div>
+ </div>
+ </md-input-container>
+ <md-input-container class="md-block">
+ <label translate="APP.OUTPUT">Output</label>
+ <md-select name="output" ng-model="vm.schedule.output" required>
+ <md-option ng-value="'csv'">CSV</md-option>
+ <md-option ng-value="'pdf'">PDF</md-option>
+ <md-option ng-value="'xlsx'">Excel</md-option>
+ </md-select>
+ <div
+ ng-messages="scheduleForm['output'].$error"
+ ng-show="scheduleForm['output'].$touched"
+ role="alert"
+ >
+ <div ng-message="required">
+ <span translate="TOOLS.ERRORS.OUTPUT_REQUIRED"
+ >Output field is required</span
+ >
+ </div>
+ </div>
+ </md-input-container>
+ <md-input-container class="md-block">
+ <md-switch ng-model="vm.schedule.active" aria-label="Active"
+ ><span translate="APP.ACTIVE">Active</span>
+ </md-switch>
+ </md-input-container>
+ <div class="md-block">
+ <label translate="TOOLS.VALIDITYSTART">ValidityStart</label>
+ <md-content layout="row" class="md-padding">
+ <div flex class="md-block">
+ <mdp-date-picker
+ mdp-open-on-click
+ required
+ name="startAtDate"
+ mdp-placeholder="Date"
+ mdp-format="YYYY-MM-DD"
+ ng-model="vm.schedule.startAt"
+ ng-init="vm.schedule.startAt = vm.getDateFromString(vm.schedule.startAt)"
+ >
+ <div
+ ng-messages="scheduleForm.dateRangeFrom.$error"
+ ng-show="scheduleForm.dateRangeFrom.$touched"
+ role="alert"
+ >
+ <div ng-message="required">
+ <span translate="TOOLS.ERRORS.DATE_REQUIRED"
+ >Date is required</span
+ >
+ </div>
+ <div ng-message="format">
+ <span translate="TOOLS.ERRORS.DATE_INVALID"
+ >Date is invalid</span
+ >
+ </div>
+ </div>
+ </mdp-date-picker>
+ </div>
+ <div flex class="md-block">
+ <mdp-time-picker
+ mdp-open-on-click
+ required
+ name="startAtTime"
+ mdp-placeholder="Time"
+ mdp-format="HH:mm:ss"
+ mdp-auto-switch="true"
+ ng-model="vm.schedule.startAt"
+ ng-init="vm.schedule.startAt = vm.getDateFromString(vm.schedule.startAt)"
+ >
+ <div
+ ng-messages="scheduleForm.timeRangeFrom.$error"
+ ng-show="scheduleForm.timeRangeFrom.$touched"
+ role="alert"
+ >
+ <div ng-message="required">
+ <span translate="TOOLS.ERRORS.TIME_REQUIRED"
+ >Time is required</span
+ >
+ </div>
+ <div ng-message="format">
+ <span translate="TOOLS.ERRORS.TIME_INVALID"
+ >Time is invalid</span
+ >
+ </div>
+ </div>
+ </mdp-time-picker>
+ </div>
+ </md-content>
+ </div>
+ <div class="md-block">
+ <label translate="TOOLS.VALIDITYEND">ValidityEnd</label>
+ <md-content layout="row" class="md-padding">
+ <div flex class="md-block">
+ <mdp-date-picker
+ mdp-open-on-click
+ required
+ name="endAtDate"
+ mdp-placeholder="Date"
+ mdp-format="YYYY-MM-DD"
+ ng-model="vm.schedule.endAt"
+ ng-init="vm.schedule.endAt = vm.getDateFromString(vm.schedule.endAt)"
+ >
+ <div
+ ng-messages="scheduleForm.dateRangeFrom.$error"
+ ng-show="scheduleForm.dateRangeFrom.$touched"
+ role="alert"
+ >
+ <div ng-message="required">
+ <span translate="TOOLS.ERRORS.DATE_REQUIRED"
+ >Date is required</span
+ >
+ </div>
+ <div ng-message="format">
+ <span translate="TOOLS.ERRORS.DATE_INVALID"
+ >Date is invalid</span
+ >
+ </div>
+ </div>
+ </mdp-date-picker>
+ </div>
+ <div flex class="md-block">
+ <mdp-time-picker
+ mdp-open-on-click
+ required
+ name="endAtTime"
+ mdp-placeholder="Time"
+ mdp-format="HH:mm:ss"
+ mdp-auto-switch="true"
+ ng-model="vm.schedule.endAt"
+ ng-init="vm.schedule.endAt = vm.getDateFromString(vm.schedule.endAt)"
+ >
+ <div
+ ng-messages="scheduleForm.timeRangeFrom.$error"
+ ng-show="scheduleForm.timeRangeFrom.$touched"
+ role="alert"
+ >
+ <div ng-message="required">
+ <span translate="TOOLS.ERRORS.TIME_REQUIRED"
+ >Time is required</span
+ >
+ </div>
+ <div ng-message="format">
+ <span translate="TOOLS.ERRORS.TIME_INVALID"
+ >Time is invalid</span
+ >
+ </div>
+ </div>
+ </mdp-time-picker>
+ </div>
+ </md-content>
+ </div>
+ <div flex class="md-block">
+ <label> {{ 'TOOLS.CRON' | translate }} ({{vm.schedule.cron}})</label>
+ <cron-selection
+ name="cron"
+ ng-model="vm.schedule.cron"
+ template="assets/angular-cron-jobs/template.html"
+ required
+ ></cron-selection>
+ </div>
+ <md-input-container class="md-block">
+ <label translate="TOOLS.LAST">Last</label>
+ <input
+ type="number"
+ name="subtractNumber"
+ ng-model="vm.schedule.subtractNumber"
+ value="1"
+ ng-required="true"
+ />
+
+ <div
+ ng-messages="scheduleForm['subtractNumber'].$error"
+ ng-show="scheduleForm['subtractNumber'].$touched"
+ role="alert"
+ >
+ <div ng-message="required">
+ <span translate="TOOLS.ERRORS.LAST_REQUIRED"
+ >Last field is required</span
+ >
+ </div>
+ </div>
+ </md-input-container>
+ <md-input-container class="md-block">
+ <label translate="TOOLS.LASTUNIT">LastUnit</label>
+ <md-select
+ name="subtractUnit"
+ ng-model="vm.schedule.subtractUnit"
+ required
+ >
+ <md-option ng-value="'minutes'">Minutes</md-option>
+ <md-option ng-value="'hours'">Hours</md-option>
+ <md-option ng-value="'days'">Days</md-option>
+ <md-option ng-value="'weeks'">Weeks</md-option>
+ <md-option ng-value="'months'">Months</md-option>
+ <md-option ng-value="'quarters'">Quarters</md-option>
+ <md-option ng-value="'years'">Years</md-option>
+ </md-select>
+ <div
+ ng-messages="scheduleForm['subtractUnit'].$error"
+ ng-show="scheduleForm['subtractUnit'].$touched"
+ role="alert"
+ >
+ <div ng-message="required">
+ <span translate="TOOLS.ERRORS.LASTUNIT_REQUIRED"
+ >LastUnit field is required</span
+ >
+ </div>
+ </div>
+ </md-input-container>
+ <md-input-container class="md-block">
+ <md-switch ng-model="vm.schedule.sendMail" aria-label="SendMail"
+ ><span translate="APP.SENDMAIL">SendMail</span>
+ </md-switch>
+ </md-input-container>
+ <md-input-container ng-if="vm.schedule.sendMail" class="md-block">
+ <label translate="TOOLS.MAILACCOUNT">MailAccount</label>
+ <md-select
+ name="MailAccountId"
+ ng-model="vm.schedule.MailAccountId"
+ required
+ >
+ <md-option
+ ng-value="MailAccountId.id"
+ ng-repeat="MailAccountId in vm.mailAccounts"
+ ng-disabled="MailAccountId.canSelect === false"
+ >{{ MailAccountId.name }}</md-option
+ >
+ </md-select>
+ <div
+ ng-messages="scheduleForm['MailAccountId'].$error"
+ ng-show="scheduleForm['MailAccountId'].$touched"
+ role="alert"
+ >
+ <div ng-message="required">
+ <span translate="TOOLS.ERRORS.MAILACCOUNT_REQUIRED"
+ >MailAccount field is required</span
+ >
+ </div>
+ </div>
+ </md-input-container>
+ <md-input-container ng-if="vm.schedule.sendMail" class="md-block">
+ <label translate="APP.EMAILADDRESS">EmailAddress</label>
+ <input
+ type="text"
+ name="email"
+ ng-model="vm.schedule.email"
+ ng-required="true"
+ />
+
+ <div class="hint">
+ <span translate="TOOLS.HELP.EMAILADDRESS"></span>
+ </div>
+ <div
+ ng-messages="scheduleForm['email'].$error"
+ ng-show="scheduleForm['email'].$touched"
+ role="alert"
+ >
+ <div ng-message="required">
+ <span translate="TOOLS.ERRORS.EMAILADDRESS_REQUIRED"
+ >EmailAddress field is required</span
+ >
+ </div>
+ </div>
+ </md-input-container>
+ <md-input-container ng-if="vm.schedule.sendMail" class="md-block">
+ <label translate="TOOLS.EMAILCCADDRESS">EmailCcAddress</label>
+ <input type="text" name="cc" ng-model="vm.schedule.cc" />
+
+ <div class="hint">
+ <span translate="TOOLS.HELP.EMAILCCADDRESS"></span>
+ </div>
+ <div
+ ng-messages="scheduleForm['cc'].$error"
+ ng-show="scheduleForm['cc'].$touched"
+ role="alert"
+ >
+ <div ng-message="required">
+ <span translate="TOOLS.ERRORS.EMAILCCADDRESS_REQUIRED"
+ >EmailCcAddress field is required</span
+ >
+ </div>
+ </div>
+ </md-input-container>
+ <md-input-container ng-if="vm.schedule.sendMail" class="md-block">
+ <label translate="TOOLS.EMAILBCCADDRESS">EmailBccAddress</label>
+ <input type="text" name="bcc" ng-model="vm.schedule.bcc" />
+
+ <div class="hint">
+ <span translate="TOOLS.HELP.EMAILBCCADDRESS"></span>
+ </div>
+ <div
+ ng-messages="scheduleForm['bcc'].$error"
+ ng-show="scheduleForm['bcc'].$touched"
+ role="alert"
+ >
+ <div ng-message="required">
+ <span translate="TOOLS.ERRORS.EMAILBCCADDRESS_REQUIRED"
+ >EmailBccAddress field is required</span
+ >
+ </div>
+ </div>
+ </md-input-container>
+ <md-input-container ng-if="vm.schedule.sendMail" class="md-block">
+ <md-switch ng-model="vm.schedule.sendIfEmpty" aria-label="SendIfEmpty"
+ ><span translate="TOOLS.SENDIFEMPTY">SendIfEmpty</span></md-switch
+ >
+ </md-input-container>
+ <md-input-container class="md-block">
+ <label translate="APP.DESCRIPTION">Description</label>
+ <input type="" name="description" ng-model="vm.schedule.description" />
+
+ <div
+ ng-messages="scheduleForm['description'].$error"
+ ng-show="scheduleForm['description'].$touched"
+ role="alert"
+ >
+ <div ng-message="required">
+ <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED"
+ >Description field is required</span
+ >
+ </div>
+ </div>
+ </md-input-container>
+
+ <div class="error-list">
+ <div
+ ng-repeat="error in vm.errors"
+ class="error"
+ layout="row"
+ layout-align="space-between center"
+ >
+ <div>
+ <span class="message">{{error.message}}</span>
+ <span class="type">({{error.type}})</span>
+ </div>
+ <md-button class="md-icon-button">
+ <md-icon
+ md-font-icon="icon-alert-box"
+ aria-label="alert error"
+ class="s16"
+ ></md-icon>
+ </md-button>
+ </div>
+ </div>
+ </md-dialog-content>
+
+ <md-dialog-actions
+ layout="row"
+ layout-align="space-between center"
+ ng-if="!vm.crudPermissions.readOnly"
+ >
+ <div layout="row" layout-align="start center">
+ <md-button
+ type="submit"
+ ng-if="vm.crudPermissions.canEdit && !vm.newSchedule"
+ ng-click="vm.saveSchedule()"
+ class="send-button md-accent md-raised"
+ ng-disabled="scheduleForm.$invalid || scheduleForm.$pristine"
+ aria-label="SAVE"
+ translate="APP.SAVE"
+ translate-attr-aria-label="APP.SAVE"
+ >
+ SAVE
+ </md-button>
+
+ <md-button
+ type="submit"
+ ng-if="vm.crudPermissions.canEdit && vm.newSchedule"
+ ng-click="vm.addNewSchedule()"
+ class="send-button md-accent md-raised"
+ ng-disabled="scheduleForm.$invalid"
+ aria-label="ADD"
+ translate="TOOLS.ADD_SCHEDULE"
+ translate-attr-aria-label="TOOLS.ADD_SCHEDULE"
+ >
+ ADD SCHEDULE
+ </md-button>
+ </div>
+ <div layout="row">
+ <md-button
+ class="md-icon-button"
+ ng-if="vm.crudPermissions.canDelete && !vm.newSchedule"
+ ng-click="vm.deleteSchedule($event)"
+ aria-label="DELETE"
+ translate
+ translate-attr-aria-label="APP.DELETE"
+ >
+ <md-icon md-font-icon="icon-delete"></md-icon>
+ <md-tooltip><span translate="APP.DELETE">DELETE</span></md-tooltip>
+ </md-button>
+ </div>
+ </md-dialog-actions>
+ </form>
+</md-dialog>