>app.directive('smDateTimePicker', [function () { > return { > require: 'ngModel', > restrict: 'E', > > scope: { > ngModel: '=',//the date being saved to the database > compareDate: '=',//either the start or end date of the range for validation (isDateRange attr must be set to true) > form: '=',//the name of the form (if a subform, this will be parent.subform), used for setting the form to dirty and validation > name: '@',//the input's name, used to manually outline invalid fields in red > placeholder: '@',//text of placeholder on input field, > showBod: '=',//if true, we display the Beginning of Day button (pickTime must be true) > showEod: '=',//if true, we display the End of Day button (pickTime must be true) > showNow: '=',//if true, we display the Now button > setBod: '&',//function defined in the directive that is called when clicking on the BOD button > setEod: '&',//function defined in the directive that is called when clicking on the EOD button > setNow: '&',//function defined in the directive that is called when clicking on the Now button > validStartDateRange: '&',//function defined in the directive that determines whether to show validation message > validEndDateRange: '&', > validRequired: '&', > validFutureDate: '&', > validPastDate: '&' > }, > templateUrl: "/app/templates/smDateTimePicker", > link: function (scope, element, attrs, controller) { > if (!controller) return undefined; > > var updateModel, onblur, datetimepicker, options; > var programmaticChange = false; > var pickTime = attrs.pickTime === "true" ? true : false; > var isDateRange = attrs.isDateRange === "true" ? true : false; //if true, we do range validation on start and end dates > var isRequired = attrs.isRequired === "true" ? true : false; //if true, we do required validation > scope.showBod = (scope.showBod && pickTime); //only display showBod button if pickTime is true > scope.showEod = (scope.showEod && pickTime); //only display showEod button if pickTime is true > var onlyFutureDates = attrs.onlyFutureDates === "true" ? true : false; > var onlyPastDates = attrs.onlyPastDates === "true" ? true : false; > var isEndDate = attrs.isEndDate === "true" ? true : false; > var noDirtyCheck = attrs.noDirtyCheck === "true" ? true : false; > > var format = function (date) { > if (date) { > if (!pickTime) { > if (isEndDate && !onlyFutureDates) { > date = date.hours(23).minutes(59).seconds(59).milliseconds(997); > date = date.format("YYYY-MM-DDTHH:mm:ss.SSS").toString(); > } else { > date = date.hours(0).minutes(0).seconds(0).milliseconds(0); > date = date.format("YYYY-MM-DDTHH:mm:ss").toString(); > } > } > } > return date; > }; > > var setStartDateLimit = function () { > if (onlyFutureDates) { > return moment().add('days', 1); > } > return moment("1753 01 01", "YYYY MM DD"); > }; > > var setEndDateLimit = function () { > if (onlyPastDates) { > return moment().subtract('days', 1); > } > return moment("9999 12 31", "YYYY MM DD"); > }; > > var setCalendarPickerStartDate = function () { > if (onlyFutureDates) { > return moment().add('days', 1); > } else if (onlyPastDates) { > return moment().subtract('days', 1); > } else { > return moment(); > } > }; >var init = function () { > options = { > icons: { > time: "fa fa-clock-o icon-1x", > date: "fa fa-calendar icon-1x", > up: "fa fa-arrow-up", > down: "fa fa-arrow-down" > }, > //pickDate: true, > //pickTime: pickTime, > format: pickTime ? 'MM/DD/YYYY hh:mm:ss a' : 'MM/DD/YYYY', > //language: 'en', > locale: 'en', > //startDate: format(setStartDateLimit()), > //endDate: format(setEndDateLimit()), > minDate: setStartDateLimit(), > maxDate: setEndDateLimit(), > useStrict: true > }; > datetimepicker = element.find('.input-group').datetimepicker(options); > }; > > init();>
>> $scope.transactionObject = { >> accountNameHash: '', >> operatorCode: userService.opCode.trim(), >> salespoint: userService.salespoint, >> message: '', >> paymentType: 0, >> transactionDate: new Date(), >> invoicesToPay: [] >> };>>
>>@using Siriusware.Resources; >> >><h3 style="text-align:center;">{{metaData.title}}</h3> >> >><label class="control-label col-md-2" title="@Labels.operatorLabel">@Labels.operatorLabel:</label> >> >><div class="col-md-3"> >> <select class="form-control" ng-model="transactionData.operatorCode" >> required >> name="operator" id="operator" data-no:dirty-check >> ng-options="t.opCode as t.opCode for t in metaData.operators"></select> >></div> >> >><label class="control-label col-md-2" title="@Labels.message">@Labels.message:</label> >><div class="col-md-5"> >> <input type="text" name="message" id="message" >> ng-model="transactionData.message" >> class="form-control" >> data-no:dirty-check >> ng-maxlength="20" /> >> <div class="field-validation-error"> >> <span ng-show="formObject.message.$error.maxlength">@String.Format(Messages.cannotExceed, Labels.message, 20)</span> >> </div> >></div> >> >><label class="control-label col-md-2" title="@Labels.salespoint">@Labels.salespoint:</label> >><div class="col-md-3"> >> <select class="form-control" ng-model="transactionData.salespoint" name="salespoint" >> id="salespoint" data-no:dirty-check required >> ng-options="t.salespoint as t.salespoint for t in metaData.salespoints"></select> >></div> >> >><label class="control-label col-md-2">@Labels.transactionDate:</label> >><div class="col-md-5"> >> <data-sm:date-time-picker ng-model="transactionData.transactionDate" >> is-date-range="false" >> form="formObject" >> placeholder="mm/dd/yy hh:mm:ss" >> pick-time="true" >> show-bod="true" >> show-eod="true" >> show-now="true" >> name="transactionDate" >> data-no:dirty-check >> required> >> </data-sm:date-time-picker> >> <div class="field-validation-error"> >> <span ng-show="formObject.transactionDate.$error.required">@String.Format(Messages.isRequired, Labels.transactionDate)</span> >> </div> >></div> >><div class="clearfix"></div>>>