{"version":3,"file":"Serenity.CoreLib.js","sourceRoot":"","sources":["../CoreLib/Imports/Helpers.ts","../CoreLib/Imports/RSVP.ts","../CoreLib/Imports/Promise.ts","../CoreLib/Imports/Select2.ts","../CoreLib/Imports/SS.ts","../CoreLib/Imports/jQueryStatic.ts","../CoreLib/Imports/JQBlockUI.ts","../CoreLib/Services/ServiceError.ts","../CoreLib/Services/ServiceResponse.ts","../CoreLib/Q/Q.BasicUtils.ts","../CoreLib/Q/Q.Formatting.ts","../CoreLib/Q/Q.LocalText.ts","../CoreLib/Q/Q.Lookup.ts","../CoreLib/Q/Q.BlockUI.ts","../CoreLib/Q/Q.Html.ts","../CoreLib/Q/Q.Dialogs.ts","../CoreLib/Q/Q.Notify.ts","../CoreLib/Q/Q.ErrorHandling.ts","../CoreLib/Q/Q.Config.ts","../CoreLib/Q/Q.Services.ts","../CoreLib/Q/Q.LayoutTimer.ts","../CoreLib/Q/Q.Layout.ts","../CoreLib/Q/Q.ScriptData.ts","../CoreLib/Q/Q.TypeSystem.ts","../CoreLib/Q/Q.Authorization.ts","../CoreLib/Q/Q.Router.ts","../CoreLib/Decorators/Decorators.ts","../CoreLib/Services/Criteria.ts","../CoreLib/UI/Helpers/SlickHelpers.ts","../CoreLib/UI/Helpers/LazyLoadHelper.ts","../CoreLib/UI/Helpers/SubDialogHelper.ts","../CoreLib/UI/Helpers/TabsExtensions.ts","../CoreLib/UI/Helpers/UploadHelper.ts","../CoreLib/UI/Widgets/Widget.ts","../CoreLib/UI/Helpers/ValidationHelper.ts","../CoreLib/UI/Widgets/TemplatedWidget.ts","../CoreLib/UI/PropertyGrid/IBooleanValue.ts","../CoreLib/UI/PropertyGrid/IDoubleValue.ts","../CoreLib/UI/PropertyGrid/IGetEditValue.ts","../CoreLib/UI/PropertyGrid/ISetEditValue.ts","../CoreLib/UI/PropertyGrid/IStringValue.ts","../CoreLib/UI/PropertyGrid/IReadOnly.ts","../CoreLib/UI/PropertyGrid/PropertyItem.ts","../CoreLib/UI/Editors/DateEditor.ts","../CoreLib/UI/Editors/DateTimeEditor.ts","../CoreLib/UI/Widgets/Select2Editor.ts","../CoreLib/UI/Editors/DateYearEditor.ts","../CoreLib/UI/Editors/LookupEditor.ts","../CoreLib/UI/Editors/Editors.ts","../CoreLib/UI/Filtering/FilterOperator.ts","../CoreLib/UI/Filtering/FilterLine.ts","../CoreLib/UI/Filtering/FilterStore.ts","../CoreLib/UI/Filtering/Filtering.ts","../CoreLib/UI/Filtering/FilterWidgetBase.ts","../CoreLib/UI/Filtering/FilterDisplayBar.ts","../CoreLib/UI/Filtering/FilterPanel.ts","../CoreLib/UI/Filtering/QuickFilter.ts","../CoreLib/UI/Filtering/QuickSearchInput.ts","../CoreLib/UI/Formatters/Formatters.ts","../CoreLib/UI/Widgets/Flexify.ts","../CoreLib/UI/Widgets/EnumTypeRegistry.ts","../CoreLib/UI/Widgets/Widgets.ts","../CoreLib/UI/Widgets/WX.ts","../CoreLib/UI/PropertyGrid/PropertyGrid.ts","../CoreLib/UI/Widgets/Toolbar.ts","../CoreLib/UI/Widgets/CreateWidgetParams.ts","../CoreLib/UI/Widgets/CustomValidation.ts","../CoreLib/UI/Widgets/IValidateRequired.ts","../CoreLib/UI/Widgets/DataChangeInfo.ts","../CoreLib/UI/Dialogs/TemplatedDialog.ts","../CoreLib/UI/Dialogs/PropertyDialog.ts","../CoreLib/UI/Filtering/FilterDialog.ts","../CoreLib/UI/Filtering/QuickFilterBar.ts","../CoreLib/UI/DataGrid/DataGrid.ts","../CoreLib/UI/Widgets/EntityGrid.ts","../CoreLib/UI/Editors/CheckTreeEditor.ts","../CoreLib/UI/Widgets/TemplatedPanel.ts","../CoreLib/UI/Widgets/PropertyPanel.ts","../CoreLib/UI/Dialogs/EntityDialog.ts","../CoreLib/UI/Widgets/Reporting.ts","../CoreLib/UI/DataGrid/ColumnPickerDialog.ts","../CoreLib/UI/DataGrid/TreeGridMixin.ts","../CoreLib/UI/jQuery/jQuery.FlexifyPlugin.ts","../CoreLib/UI/jQuery/jQuery.WidgetPlugin.ts","../CoreLib/UI/jQuery/jQueryUI.ButtonNoConflict.ts","../CoreLib/Externals/Serenity.Externals.Slick.ts","../CoreLib/Externals/Serenity.Externals.ts","../CoreLib/UI/Serenity.Script.UI.ts"],"names":[],"mappings":"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","sourcesContent":["declare var Reflect: any;\r\nvar __decorate: any = (this && this.__decorate) || function (decorators: any, target: any, key: any, desc: any) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\n\r\nconst __skipExtends = {\r\n \"__metadata\": true,\r\n \"__typeName\": true,\r\n \"__componentFactory\": true\r\n}\r\n\r\nvar __extends: any = (this && this.__extends) || function (d: any, b: any) {\r\n for (var p in b) if (b.hasOwnProperty(p) && __skipExtends[p] !== true) d[p] = b[p];\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new (__ as any)());\r\n};\r\nvar __assign = (Object as any).assign || function (t: any) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n};\r\nvar __rest = function (s: any, e: any) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof (Object as any).getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p: string = (Object as any).getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0)\r\n t[p[i]] = s[p[i]];\r\n return t;\r\n};\r\nvar __spreadArrays = function () {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};","declare class RSVP<TResult> {\r\n constructor(constructor: (p1: (p1: any) => void, p2: any) => void);\r\n}\r\n\r\ndeclare module RSVP {\r\n function on(handler: (e: any) => void): void;\r\n function resolve(): PromiseLike<any>;\r\n}\r\n\r\n// Type definitions for RSVP 3.0.9\r\n// Project: github.com/tildeio/rsvp.js 3.0.9\r\n// Definitions by: Taylor Brown <https://github.com/Taytay>\r\n// Definitions: https://github.com/borisyankov/DefinitelyTyped\r\n\r\n// Some of this file was taken from the type definitions for es6-promise https://github.com/borisyankov/DefinitelyTyped/blob/master/es6-promise/es6-promise.d.ts\r\n// Credit for that file goes to: François de Campredon <https://github.com/fdecampredon/>\r\n\r\n// Some of this file was taken from the type definitions for Q : https://github.com/borisyankov/DefinitelyTyped/blob/master/q/Q.d.ts\r\n// Credit for that file goes to: Barrie Nemetchek <https://github.com/bnemetchek>, Andrew Gaspar <https://github.com/AndrewGaspar/>, John Reilly <https://github.com/johnnyreilly>\r\n\r\ndeclare module RSVP {\r\n\r\n class Promise<R> implements PromiseLike<R> {\r\n /**\r\n * If you call resolve in the body of the callback passed to the constructor,\r\n * your promise is fulfilled with result object passed to resolve.\r\n * If you call reject your promise is rejected with the object passed to resolve.\r\n * For consistency and debugging (eg stack traces), obj should be an instanceof Error.\r\n * Any errors thrown in the constructor callback will be implicitly passed to reject().\r\n */\r\n constructor(callback: (resolve: (result?: R) => void, reject: (error: any) => void) => void, label?: string);\r\n\r\n /**\r\n * If you call resolve in the body of the callback passed to the constructor,\r\n * your promise will be fulfilled/rejected with the outcome of thenable passed to resolve.\r\n * If you call reject your promise is rejected with the object passed to resolve.\r\n * For consistency and debugging (eg stack traces), obj should be an instanceof Error.\r\n * Any errors thrown in the constructor callback will be implicitly passed to reject().\r\n */\r\n constructor(callback: (resolve: (thenable?: PromiseLike<R>) => void, reject: (error: any) => void) => void, label?: string);\r\n\r\n /**\r\n * onFulfilled is called when/if \"promise\" resolves. onRejected is called when/if \"promise\" rejects.\r\n * Both are optional, if either/both are omitted the next onFulfilled/onRejected in the chain is called.\r\n * Both callbacks have a single parameter , the fulfillment value or rejection reason.\r\n * \"then\" returns a new promise equivalent to the value you return from onFulfilled/onRejected after being passed through Promise.resolve.\r\n * If an error is thrown in the callback, the returned promise rejects with that error.\r\n *\r\n * @param onFulfilled called when/if \"promise\" resolves\r\n * @param onRejected called when/if \"promise\" rejects\r\n */\r\n then<U>(onFulfilled?: (value: R) => PromiseLike<U>, onRejected?: (error: any) => PromiseLike<U>): Promise<U>;\r\n\r\n /**\r\n * onFulfilled is called when/if \"promise\" resolves. onRejected is called when/if \"promise\" rejects.\r\n * Both are optional, if either/both are omitted the next onFulfilled/onRejected in the chain is called.\r\n * Both callbacks have a single parameter , the fulfillment value or rejection reason.\r\n * \"then\" returns a new promise equivalent to the value you return from onFulfilled/onRejected after being passed through Promise.resolve.\r\n * If an error is thrown in the callback, the returned promise rejects with that error.\r\n *\r\n * @param onFulfilled called when/if \"promise\" resolves\r\n * @param onRejected called when/if \"promise\" rejects\r\n */\r\n then<U>(onFulfilled?: (value: R) => PromiseLike<U>, onRejected?: (error: any) => U): Promise<U>;\r\n\r\n /**\r\n * onFulfilled is called when/if \"promise\" resolves. onRejected is called when/if \"promise\" rejects.\r\n * Both are optional, if either/both are omitted the next onFulfilled/onRejected in the chain is called.\r\n * Both callbacks have a single parameter , the fulfillment value or rejection reason.\r\n * \"then\" returns a new promise equivalent to the value you return from onFulfilled/onRejected after being passed through Promise.resolve.\r\n * If an error is thrown in the callback, the returned promise rejects with that error.\r\n *\r\n * @param onFulfilled called when/if \"promise\" resolves\r\n * @param onRejected called when/if \"promise\" rejects\r\n */\r\n then<U>(onFulfilled?: (value: R) => PromiseLike<U>, onRejected?: (error: any) => void): Promise<U>;\r\n\r\n /**\r\n * onFulfilled is called when/if \"promise\" resolves. onRejected is called when/if \"promise\" rejects.\r\n * Both are optional, if either/both are omitted the next onFulfilled/onRejected in the chain is called.\r\n * Both callbacks have a single parameter , the fulfillment value or rejection reason.\r\n * \"then\" returns a new promise equivalent to the value you return from onFulfilled/onRejected after being passed through Promise.resolve.\r\n * If an error is thrown in the callback, the returned promise rejects with that error.\r\n *\r\n * @param onFulfilled called when/if \"promise\" resolves\r\n * @param onRejected called when/if \"promise\" rejects\r\n */\r\n then<U>(onFulfilled?: (value: R) => U, onRejected?: (error: any) => PromiseLike<U>): Promise<U>;\r\n\r\n /**\r\n * onFulfilled is called when/if \"promise\" resolves. onRejected is called when/if \"promise\" rejects.\r\n * Both are optional, if either/both are omitted the next onFulfilled/onRejected in the chain is called.\r\n * Both callbacks have a single parameter , the fulfillment value or rejection reason.\r\n * \"then\" returns a new promise equivalent to the value you return from onFulfilled/onRejected after being passed through Promise.resolve.\r\n * If an error is thrown in the callback, the returned promise rejects with that error.\r\n *\r\n * @param onFulfilled called when/if \"promise\" resolves\r\n * @param onRejected called when/if \"promise\" rejects\r\n */\r\n then<U>(onFulfilled?: (value: R) => U, onRejected?: (error: any) => U): Promise<U>;\r\n\r\n /**\r\n * onFulfilled is called when/if \"promise\" resolves. onRejected is called when/if \"promise\" rejects.\r\n * Both are optional, if either/both are omitted the next onFulfilled/onRejected in the chain is called.\r\n * Both callbacks have a single parameter , the fulfillment value or rejection reason.\r\n * \"then\" returns a new promise equivalent to the value you return from onFulfilled/onRejected after being passed through Promise.resolve.\r\n * If an error is thrown in the callback, the returned promise rejects with that error.\r\n *\r\n * @param onFulfilled called when/if \"promise\" resolves\r\n * @param onRejected called when/if \"promise\" rejects\r\n */\r\n then<U>(onFulfilled?: (value: R) => U, onRejected?: (error: any) => void): Promise<U>;\r\n\r\n /**\r\n * Sugar for promise.then(undefined, onRejected)\r\n *\r\n * @param onRejected called when/if \"promise\" rejects\r\n */\r\n catch<U>(onRejected?: (error: any) => PromiseLike<U>): Promise<U>;\r\n\r\n /**\r\n * Sugar for promise.then(undefined, onRejected)\r\n *\r\n * @param onRejected called when/if \"promise\" rejects\r\n */\r\n catch<U>(onRejected?: (error: any) => U): Promise<U>;\r\n\r\n /**\r\n * Sugar for promise.then(undefined, onRejected)\r\n *\r\n * @param onRejected called when/if \"promise\" rejects\r\n */\r\n catch<U>(onRejected?: (error: any) => void): Promise<U>;\r\n\r\n finally(finallyCallback: () => any): Promise<R>;\r\n\r\n static all<T>(promises: PromiseLike<T>[]): Promise<T[]>;\r\n static all<T>(promises: any[]): Promise<T[]>;\r\n static race<R>(promises: Promise<R>[]): Promise<R>;\r\n\r\n /**\r\n @method resolve\r\n @param {Any} value value that the returned promise will be resolved with\r\n @param {String} label optional string for identifying the returned promise.\r\n Useful for tooling.\r\n @return {Promise} a promise that will become fulfilled with the given\r\n `value`\r\n */\r\n static resolve<T>(object: PromiseLike<T>): Promise<T>;\r\n static resolve<T>(object: T): Promise<T>;\r\n\r\n /**\r\n @method cast (Deprecated in favor of resolve\r\n @param {Any} value value that the returned promise will be resolved with\r\n @param {String} label optional string for identifying the returned promise.\r\n Useful for tooling.\r\n @return {Promise} a promise that will become fulfilled with the given\r\n `value`\r\n */\r\n static cast<T>(object: PromiseLike<T>, label?: string): Promise<T>;\r\n static cast<T>(object: T, label?: string): Promise<T>;\r\n\r\n /**\r\n `RSVP.Promise.reject` returns a promise rejected with the passed `reason`.\r\n */\r\n static reject(reason?: any): Promise<any>;\r\n }\r\n\r\n interface PromiseState<T> {\r\n state: string /* \"fulfilled\", \"rejected\", \"pending\" */;\r\n value?: T;\r\n reason?: any;\r\n }\r\n\r\n interface InstrumentEvent {\r\n guid: string; // guid of promise. Must be globally unique, not just within the implementation\r\n childGuid: string; // child of child promise (for chained via `then`)\r\n eventName: string; // one of ['created', 'chained', 'fulfilled', 'rejected']\r\n detail: any; // fulfillment value or rejection reason, if applicable\r\n label: string; // label passed to promise's constructor\r\n timeStamp: number; // milliseconds elapsed since 1 January 1970 00:00:00 UTC up until now\r\n }\r\n\r\n export function on(eventName: string, callback: (value: any) => void): void;\r\n export function on(eventName: \"error\", errorHandler: (reason: any) => void): void;\r\n export function on(eventName: \"created\", listener: (event: InstrumentEvent) => void): void;\r\n export function on(eventName: \"chained\", listener: (event: InstrumentEvent) => void): void;\r\n export function on(eventName: \"fulfilled\", listener: (event: InstrumentEvent) => void): void;\r\n export function on(eventName: \"rejected\", listener: (event: InstrumentEvent) => void): void;\r\n\r\n export function configure(configName: string, value: any): void;\r\n export function configure(configName: \"instrument\", shouldInstrument: boolean): void;\r\n\r\n /**\r\n * configure('onerror', handler) is deprecated in favor of on('error', handler)\r\n * @param configName\r\n * @param errorHandler\r\n */\r\n export function configure(configName: \"onerror\", errorHandler: (reason: any) => void): void;\r\n\r\n /**\r\n * Make a promise that fulfills when every item in the array fulfills, and rejects if (and when) any item rejects.\r\n * the array passed to all can be a mixture of promise-like objects and other objects.\r\n * The fulfillment value is an array (in order) of fulfillment values. The rejection value is the first rejection value.\r\n */\r\n export function all<T>(promises: PromiseLike<T>[]): Promise<T[]>;\r\n export function all<T>(promises: any[]): Promise<T[]>;\r\n\r\n function race<R>(promises: Promise<R>[]): Promise<R>;\r\n\r\n /**\r\n `RSVP.Promise.reject` returns a promise rejected with the passed `reason`.\r\n */\r\n export function reject(reason?: any): Promise<any>;\r\n\r\n /**\r\n `RSVP.Promise.resolve` returns a promise that will become resolved with the\r\n passed `value`.\r\n */\r\n export function resolve<T>(object: PromiseLike<T>): Promise<T>;\r\n export function resolve<T>(object: T): Promise<T>;\r\n\r\n /**\r\n `RSVP.rethrow` will rethrow an error on the next turn of the JavaScript event\r\n loop in order to aid debugging.\r\n Promises A+ specifies that any exceptions that occur with a promise must be\r\n caught by the promises implementation and bubbled to the last handler. For\r\n this reason, it is recommended that you always specify a second rejection\r\n handler function to `then`. However, `RSVP.rethrow` will throw the exception\r\n outside of the promise, so it bubbles up to your console if in the browser,\r\n or domain/cause uncaught exception in Node. `rethrow` will also throw the\r\n error again so the error can be handled by the promise per the spec.\r\n */\r\n export function rethrow(reason: any): void;\r\n}","/**\n * Represents the completion of an asynchronous operation\n */\n\r\ninterface PromiseConstructor {\r\n /**\r\n * Creates a new Promise.\r\n * @param executor A callback used to initialize the promise. This callback is passed two arguments:\r\n * a resolve callback used resolve the promise with a value or the result of another promise,\r\n * and a reject callback used to reject the promise with a provided reason or error.\r\n */\r\n new <T>(executor: (resolve: (value?: T | PromiseLike<T>) => void, reject: (reason?: any) => void) => void): PromiseLike<T>;\r\n\r\n /**\r\n * Creates a new rejected promise for the provided reason.\r\n * @param reason The reason the promise was rejected.\r\n * @returns A new rejected Promise.\r\n */\r\n reject(reason: any): PromiseLike<never>;\r\n\r\n /**\r\n * Creates a new rejected promise for the provided reason.\r\n * @param reason The reason the promise was rejected.\r\n * @returns A new rejected Promise.\r\n */\r\n reject<T>(reason: any): PromiseLike<T>;\r\n\r\n /**\r\n * Creates a new resolved promise for the provided value.\r\n * @param value A promise.\r\n * @returns A promise whose internal state matches the provided promise.\r\n */\r\n resolve<T>(value: T | PromiseLike<T>): PromiseLike<T>;\r\n\r\n /**\r\n * Creates a new resolved promise .\r\n * @returns A resolved promise.\r\n */\r\n resolve(): PromiseLike<void>;\r\n}\r\n\r\ndeclare var Promise: PromiseConstructor;\r\n\r\nif (typeof Promise === \"undefined\") {\r\n if (typeof (RSVP) !== \"undefined\") {\r\n Promise = RSVP as any;\r\n }\r\n else if (typeof (jQuery) !== \"undefined\") {\r\n Promise = $.Deferred as any;\r\n (Promise as any).resolve = function (value?: any) {\r\n return jQuery.Deferred().resolveWith(value);\r\n }\r\n }\r\n}","declare namespace Select2 {\r\n namespace util {\r\n function stripDiacritics(input: string): string;\r\n }\r\n}\r\n\r\ninterface Select2QueryOptions {\r\n element?: JQuery;\r\n term?: string;\r\n page?: number;\r\n context?: any;\r\n callback?: (p1: Select2Result) => void;\r\n}\r\n\r\ninterface Select2Result {\r\n results: any;\r\n more: boolean;\r\n context?: any;\r\n}\r\n\r\ninterface Select2AjaxOptions {\r\n transport?: any;\r\n url?: any;\r\n dataType?: string;\r\n quietMillis?: number;\r\n cache?: boolean;\r\n jsonpCallback?: any;\r\n data?: (p1: string, p2: number, p3: any) => any;\r\n results?: (p1: any, p2: number, p3: any) => any;\r\n params?: any;\r\n}\r\n\r\ninterface Select2Options {\r\n width?: any;\r\n minimumInputLength?: number;\r\n maximumInputLength?: number;\r\n minimumResultsForSearch?: number;\r\n maximumSelectionSize?: any;\r\n placeHolder?: string;\r\n placeHolderOption?: any;\r\n separator?: string;\r\n allowClear?: boolean;\r\n multiple?: boolean;\r\n closeOnSelect?: boolean;\r\n openOnEnter?: boolean;\r\n id?: (p1: any) => string;\r\n matcher?: (p1: string, p2: string, p3: JQuery) => boolean;\r\n sortResults?: (p1: any, p2: JQuery, p3: any) => any;\r\n formatSelection?: (p1: any, p2: JQuery, p3: (p1: string) => string) => string;\r\n formatResult?: (p1: any, p2: JQuery, p3: any, p4: (p1: string) => string) => string;\r\n formatResultCssClass?: (p1: any) => string;\r\n formatNoMatches?: (p1: string) => string;\r\n formatSearching?: () => string;\r\n formatInputTooShort?: (p1: string, p2: number) => string;\r\n formatSelectionTooBig?: (p1: string) => string;\r\n createSearchChoice?: (p1: string) => any;\r\n createSearchChoicePosition?: string;\r\n initSelection?: (p1: JQuery, p2: (p1: any) => void) => void;\r\n tokenizer?: (p1: string, p2: any, p3: (p1: any) => any, p4: any) => string;\r\n tokenSeparators?: any;\r\n query?: (p1: Select2QueryOptions) => void;\r\n ajax?: Select2AjaxOptions;\r\n data?: any;\r\n tags?: any;\r\n containerCss?: any;\r\n containerCssClass?: any;\r\n dropdownCss?: any;\r\n dropdownCssClass?: any;\r\n dropdownAutoWidth?: boolean;\r\n adaptContainerCssClass?: (p1: string) => string;\r\n adaptDropdownCssClass?: (p1: string) => string;\r\n escapeMarkup?: (p1: string) => string;\r\n selectOnBlur?: boolean;\r\n loadMorePadding?: number;\r\n nextSearchTerm?: (p1: any, p2: string) => string;\r\n}\r\n\r\ninterface Select2Data {\r\n text?: string;\r\n}\r\n\r\ninterface JQuery {\r\n select2(options: Select2Options): JQuery;\r\n select2(cmd: 'focus' | 'open'): JQuery;\r\n select2(cmd: 'destroy'): void;\r\n select2(cmd: 'val'): any;\r\n select2(cmd: 'val', value: string | string[]): JQuery;\r\n select2(cmd: 'data'): Select2Data;\r\n}","// this class will go obsolete once all code is ported to TypeScript\r\n// prefer alternative methods under Q\r\ndeclare namespace ss {\r\n interface AssemblyReg {\r\n name: string;\r\n __types: ClassReg[];\r\n }\r\n\r\n interface ClassReg {\r\n __register: boolean;\r\n __class: boolean;\r\n __assembly: AssemblyReg;\r\n __interfaces: any[];\r\n }\r\n\r\n let __assemblies: { [name: string]: AssemblyReg; };\r\n\r\n class Exception {\r\n constructor(msg: string);\r\n }\r\n\r\n class NotSupportedException extends Exception {\r\n constructor(msg: string);\r\n }\r\n}\r\n\r\n// fake assembly for typescript apps\r\n(ss as any).initAssembly({}, 'App', {});","interface JQueryStatic {\r\n extend<T>(target: T, object1?: T, ...objectN: T[]): T;\r\n toJSON(obj: any): string;\r\n}","declare interface JQBlockUIOptions {\r\n useTimeout?: boolean; \r\n}","namespace Serenity {\r\n export interface ServiceError {\r\n Code?: string;\r\n Arguments?: string;\r\n Message?: string;\r\n }\r\n}","\r\ndeclare namespace Serenity {\r\n interface ServiceResponse {\r\n Error?: ServiceError;\r\n }\r\n\r\n interface ServiceRequest {\r\n }\r\n\r\n interface SaveRequest<TEntity> extends ServiceRequest {\r\n EntityId?: any;\r\n Entity?: TEntity;\r\n Localizations?: any;\r\n }\r\n\r\n interface SaveRequestWithAttachment<TEntity> extends SaveRequest<TEntity> {\r\n Attachments?: any[];\r\n }\r\n\r\n interface SaveResponse extends ServiceResponse {\r\n EntityId?: any;\r\n }\r\n\r\n interface SaveWithLocalizationRequest<TEntity> extends SaveRequest<TEntity> {\r\n Localizations?: { [key: string]: TEntity };\r\n }\r\n\r\n interface DeleteRequest extends ServiceRequest {\r\n EntityId?: any;\r\n }\r\n\r\n interface DeleteResponse extends ServiceResponse {\r\n }\r\n\r\n interface UndeleteRequest extends ServiceRequest {\r\n EntityId?: any;\r\n }\r\n\r\n interface UndeleteResponse extends ServiceResponse {\r\n }\r\n\r\n interface ListRequest extends ServiceRequest {\r\n Skip?: number;\r\n Take?: number;\r\n Sort?: string[];\r\n ContainsText?: string;\r\n ContainsField?: string;\r\n Criteria?: any[];\r\n EqualityFilter?: any;\r\n IncludeDeleted?: boolean;\r\n ExcludeTotalCount?: boolean;\r\n ColumnSelection?: ColumnSelection;\r\n IncludeColumns?: string[];\r\n ExcludeColumns?: string[];\r\n DistinctFields?: string[];\r\n }\r\n\r\n interface ListResponse<TEntity> extends ServiceResponse {\r\n Entities?: TEntity[];\r\n Values?: any[];\r\n TotalCount?: number;\r\n Skip?: number;\r\n Take?: number;\r\n }\r\n\r\n interface RetrieveRequest extends ServiceRequest {\r\n EntityId?: any;\r\n ColumnSelection?: RetrieveColumnSelection;\r\n IncludeColumns?: string[];\r\n ExcludeColumns?: string[];\r\n }\r\n\r\n interface RetrieveResponse<TEntity> extends ServiceResponse {\r\n Entity?: TEntity;\r\n }\r\n\r\n interface RetrieveLocalizationRequest extends RetrieveRequest {\r\n }\r\n\r\n interface RetrieveLocalizationResponse<TEntity> extends ServiceResponse {\r\n Entities?: { [key: string]: TEntity };\r\n }\r\n}\r\n\r\n","\r\nnamespace Q {\r\n export type Dictionary<TItem> = { [key: string]: TItem };\r\n export type Grouping<TItem> = { [key: string]: TItem[] };\r\n\r\n export function coalesce(a: any, b: any): any {\r\n return (ss as any).coalesce(a, b);\r\n }\r\n\r\n export function isValue(a: any): boolean {\r\n return (ss as any).isValue(a);\r\n }\r\n\r\n /**\r\n * Tests if any of array elements matches given predicate\r\n */\r\n export function any<TItem>(array: TItem[], predicate: (x: TItem) => boolean): boolean {\r\n for (let x of array)\r\n if (predicate(x))\r\n return true;\r\n\r\n return false;\r\n }\r\n\r\n /**\r\n * Counts number of array elements that matches a given predicate\r\n */\r\n export function count<TItem>(array: TItem[], predicate: (x: TItem) => boolean): number {\r\n let count = 0;\r\n for (let x of array)\r\n if (predicate(x))\r\n count++;\r\n\r\n return count;\r\n }\r\n\r\n /**\r\n * Gets first element in an array that matches given predicate.\r\n * Throws an error if no match is found.\r\n */\r\n export function first<TItem>(array: TItem[], predicate: (x: TItem) => boolean): TItem {\r\n for (let x of array)\r\n if (predicate(x))\r\n return x;\r\n\r\n throw new Error(\"first:No element satisfies the condition.!\");\r\n }\r\n\r\n /**\r\n * Gets index of first element in an array that matches given predicate\r\n */\r\n export function indexOf<TItem>(array: TItem[], predicate: (x: TItem) => boolean): number {\r\n for (var i = 0; i < array.length; i++)\r\n if (predicate(array[i]))\r\n return i;\r\n\r\n return -1;\r\n }\r\n\r\n /**\r\n * Inserts an item to the array at specified index\r\n */\r\n export function insert<TItem>(array: TItem[], index: number, item: TItem): void {\r\n (ss as any).insert(array, index, item);\r\n }\r\n\r\n /**\r\n * Determines if the object is an array\r\n */\r\n export function isArray(obj: any): boolean {\r\n return (ss as any).isArray(obj);\r\n }\r\n\r\n /**\r\n * Gets first element in an array that matches given predicate.\r\n * Throws an error if no matches is found, or there are multiple matches.\r\n */\r\n export function single<TItem>(array: TItem[], predicate: (x: TItem) => boolean): TItem {\r\n let match: any;\r\n let found = false;\r\n for (let x of array)\r\n if (predicate(x)) {\r\n if (found)\r\n throw new Error(\"single:sequence contains more than one element.\");\r\n\r\n found = true;\r\n match = x;\r\n }\r\n\r\n if (!found)\r\n throw new Error(\"single:No element satisfies the condition.\");\r\n\r\n return match;\r\n }\r\n\r\n /**\r\n * Maps an array into a dictionary with keys determined by specified getKey() callback,\r\n * and values that are arrays containing elements for a particular key.\r\n */\r\n export function toGrouping<TItem>(items: TItem[], getKey: (x: TItem) => any): Q.Grouping<TItem> {\r\n let lookup: Grouping<TItem> = {};\r\n for (let x of items) {\r\n let key = getKey(x) || \"\";\r\n let d = lookup[key];\r\n if (!d) {\r\n d = lookup[key] = [];\r\n }\r\n\r\n d.push(x);\r\n }\r\n return lookup;\r\n }\r\n\r\n\r\n export type Group<TItem> = {\r\n order: number;\r\n key: string;\r\n items: TItem[];\r\n start: number;\r\n }\r\n\r\n export type Groups<TItem> = {\r\n byKey: Q.Dictionary<Group<TItem>>;\r\n inOrder: Group<TItem>[];\r\n };\r\n\r\n /**\r\n * Groups an array with keys determined by specified getKey() callback.\r\n * Resulting object contains group objects in order and a dictionary to access by key.\r\n */\r\n export function groupBy<TItem>(items: TItem[], getKey: (x: TItem) => any): Q.Groups<TItem> {\r\n let result: Groups<TItem> = {\r\n byKey: Object.create(null),\r\n inOrder: []\r\n };\r\n\r\n for (var index = 0; index < items.length; index++) {\r\n var item = items[index];\r\n let key = Q.coalesce(getKey(item), \"\");\r\n var group = result.byKey[key];\r\n if (group === undefined) {\r\n group = {\r\n order: result.inOrder.length,\r\n key: key,\r\n items: [item],\r\n start: index\r\n }\r\n result.byKey[key] = group;\r\n result.inOrder.push(group);\r\n }\r\n else {\r\n group.items.push(item);\r\n }\r\n }\r\n\r\n return result;\r\n }\r\n\r\n /**\r\n * Gets first element in an array that matches given predicate.\r\n * Returns null if no match is found.\r\n */\r\n export function tryFirst<TItem>(array: TItem[], predicate: (x: TItem) => boolean): TItem {\r\n for (let x of array)\r\n if (predicate(x))\r\n return x;\r\n }\r\n\r\n export function endsWith(s: string, search: string): boolean {\r\n return (ss as any).endsWithString(s, search);\r\n }\r\n\r\n export function isEmptyOrNull(s: string) {\r\n return s == null || s.length === 0;\r\n }\r\n\r\n export function isTrimmedEmpty(s: string) {\r\n return trimToNull(s) == null;\r\n }\r\n\r\n export function format(msg: string, ...prm: any[]): string {\r\n return (ss as any).formatString(msg, ...prm);\r\n }\r\n\r\n export function padLeft(s: string, len: number, ch: string = ' ') {\r\n while (s.length < len)\r\n s = \"0\" + s;\r\n return s;\r\n }\r\n\r\n export function startsWith(s: string, search: string): boolean {\r\n return (ss as any).startsWithString(s, search);\r\n }\r\n\r\n export function toSingleLine(str: string) {\r\n return Q.replaceAll(Q.replaceAll(trimToEmpty(str), '\\r\\n', ' '), '\\n', ' ').trim();\r\n }\r\n\r\n export function trim(s: string) {\r\n return (s == null ? '' : s).replace(new RegExp('^\\\\s+|\\\\s+$', 'g'), '');\r\n }\r\n\r\n export function trimToEmpty(s: string) {\r\n if (s == null || s.length === 0) {\r\n return '';\r\n }\r\n\r\n return trim(s);\r\n }\r\n\r\n export function trimToNull(s: string) {\r\n if (s == null || s.length === 0) {\r\n return null;\r\n }\r\n\r\n s = trim(s);\r\n if (s.length === 0) {\r\n return null;\r\n }\r\n else {\r\n return s;\r\n }\r\n }\r\n\r\n let turkishOrder: {};\r\n\r\n export function turkishLocaleCompare(a: string, b: string): number {\r\n let alphabet = \"AaBbCcÇçFfGgĞğHhIıİiJjKkLlMmNnOoÖöPpRrSsŞşTtUuÜüVvYyZz\";\r\n a = a || \"\";\r\n b = b || \"\";\r\n if (a == b)\r\n return 0;\r\n if (!turkishOrder) {\r\n turkishOrder = {};\r\n for (let z = 0; z < alphabet.length; z++) {\r\n turkishOrder[alphabet.charAt(z)] = z + 1;\r\n }\r\n }\r\n for (let i = 0, _len = Math.min(a.length, b.length); i < _len; i++) {\r\n let x = a.charAt(i), y = b.charAt(i);\r\n if (x === y)\r\n continue;\r\n let ix = turkishOrder[x], iy = turkishOrder[y];\r\n if (ix != null && iy != null)\r\n return ix < iy ? -1 : 1;\r\n let c = x.localeCompare(y);\r\n if (c == 0)\r\n continue;\r\n return c;\r\n }\r\n return a.localeCompare(b);\r\n }\r\n\r\n export function turkishLocaleToUpper(a: string): string {\r\n if (!a)\r\n return a;\r\n return a.replace(/i/g, 'İ').replace(/ı/g, 'I').toUpperCase();\r\n }\r\n\r\n export function replaceAll(s: string, f: string, r: string): string {\r\n return (ss as any).replaceAllString(s, f, r);\r\n }\r\n\r\n export function zeroPad(n: number, digits: number): string {\r\n let s = n.toString();\r\n while (s.length < digits)\r\n s = \"0\" + s;\r\n return s;\r\n }\r\n\r\n /**\r\n * Returns a function, that, as long as it continues to be invoked, will not\r\n * be triggered. The function will be called after it stops being called for\r\n * N milliseconds. If `immediate` is passed, trigger the function on the\r\n * leading edge, instead of the trailing. The function also has a property 'clear'\r\n * that is a function which will clear the timer to prevent previously scheduled executions.\r\n *\r\n * @source underscore.js\r\n */\r\n export function debounce(func: Function, wait?: number, immediate?: boolean) {\r\n var timeout: number, args: IArguments, context: any, timestamp: number, result: any;\r\n if (null == wait) wait = 100;\r\n\r\n function later() {\r\n var last = Date.now() - timestamp;\r\n\r\n if (last < wait && last >= 0) {\r\n timeout = setTimeout(later, wait - last);\r\n } else {\r\n timeout = null;\r\n if (!immediate) {\r\n result = func.apply(context, args);\r\n context = args = null;\r\n }\r\n }\r\n };\r\n\r\n var debounced = function () {\r\n context = this;\r\n args = arguments;\r\n timestamp = Date.now();\r\n var callNow = immediate && !timeout;\r\n if (!timeout) timeout = setTimeout(later, wait);\r\n if (callNow) {\r\n result = func.apply(context, args);\r\n context = args = null;\r\n }\r\n\r\n return result;\r\n };\r\n\r\n (debounced as any).clear = function () {\r\n if (timeout) {\r\n clearTimeout(timeout);\r\n timeout = null;\r\n }\r\n };\r\n\r\n (debounced as any).flush = function () {\r\n if (timeout) {\r\n result = func.apply(context, args);\r\n context = args = null;\r\n\r\n clearTimeout(timeout);\r\n timeout = null;\r\n }\r\n };\r\n\r\n return debounced;\r\n };\r\n\r\n // derived from https://github.com/mistic100/jQuery.extendext/blob/master/jQuery.extendext.js\r\n export function deepClone<TItem>(arg1: TItem, ...args: TItem[]): TItem {\r\n let options: any,\r\n name: string,\r\n src: any,\r\n copy: any,\r\n copyIsArray: boolean,\r\n clone: any,\r\n target = arguments[0] || {},\r\n i = 1,\r\n length = arguments.length;\r\n\r\n // Handle case when target is a string or something (possible in deep copy)\r\n if (typeof target !== \"object\" && !$.isFunction(target)) {\r\n target = {};\r\n }\r\n if (i === length) {\r\n target = {};\r\n i = 0;\r\n }\r\n for (; i < length; i++) {\r\n // Only deal with non-null/undefined values\r\n if ((options = arguments[i]) !== null) {\r\n // Special operations for arrays\r\n if ($.isArray(options)) {\r\n target = $.extend(true, [], options);\r\n }\r\n else {\r\n // Extend the base object\r\n for (name in options) {\r\n src = target[name];\r\n copy = options[name];\r\n // Prevent never-ending loop\r\n if (target === copy) {\r\n continue;\r\n }\r\n // Recurse if we're merging plain objects or arrays\r\n if (copy && ($.isPlainObject(copy) ||\r\n (copyIsArray = $.isArray(copy)))) {\r\n if (copyIsArray) {\r\n copyIsArray = false;\r\n clone = src && $.isArray(src) ? src : [];\r\n }\r\n else {\r\n clone = src && $.isPlainObject(src) ? src : {};\r\n }\r\n // Never move original objects, clone them\r\n target[name] = deepClone(clone, copy);\r\n }\r\n else if (copy !== undefined) {\r\n target[name] = copy;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n // Return the modified object\r\n return target;\r\n }\r\n}","\r\nnamespace Q {\r\n export namespace Culture {\r\n export let decimalSeparator = '.';\r\n export let dateSeparator = '/';\r\n export let dateOrder = 'dmy';\r\n export let dateFormat = 'dd/MM/yyyy';\r\n export let dateTimeFormat = 'dd/MM/yyyy HH:mm:ss';\r\n\r\n export function get_groupSeparator(): string {\r\n return ((decimalSeparator === ',') ? '.' : ',');\r\n };\r\n\r\n var s = Q.trimToNull($('script#ScriptCulture').html());\r\n if (s != null) {\r\n var sc = $.parseJSON(s);\r\n if (sc.DecimalSeparator != null)\r\n decimalSeparator = sc.DecimalSeparator;\r\n if (sc.DateSeparator != null)\r\n dateSeparator = sc.DateSeparator;\r\n if (sc.DateOrder != null)\r\n dateOrder = sc.DateOrder;\r\n if (sc.DateFormat != null)\r\n dateFormat = sc.DateFormat;\r\n if (sc.DateTimeFormat != null)\r\n dateTimeFormat = sc.DateTimeFormat;\r\n }\r\n }\r\n\r\n export function formatNumber(n: number, fmt: string, dec?: string, grp?: string): string {\r\n let neg = '-';\r\n if (isNaN(n)) {\r\n return null;\r\n }\r\n\r\n dec = dec || Culture.decimalSeparator;\r\n grp = grp || Culture.get_groupSeparator();\r\n\r\n let r = \"\";\r\n if (fmt.indexOf(\".\") > -1) {\r\n let dp = dec;\r\n let df = fmt.substring(fmt.lastIndexOf(\".\") + 1);\r\n n = roundNumber(n, df.length);\r\n let dv = n % 1;\r\n let ds = new String(dv.toFixed(df.length));\r\n ds = ds.substring(ds.lastIndexOf(\".\") + 1);\r\n for (let i = 0; i < df.length; i++) {\r\n if (df.charAt(i) == '#' && ds.charAt(i) != '0') {\r\n dp += ds.charAt(i);\r\n continue;\r\n }\r\n else if (df.charAt(i) == '#' && ds.charAt(i) == '0') {\r\n let notParsed = ds.substring(i);\r\n if (notParsed.match('[1-9]')) {\r\n dp += ds.charAt(i);\r\n continue;\r\n }\r\n else\r\n break;\r\n }\r\n else if (df.charAt(i) == \"0\")\r\n dp += ds.charAt(i);\r\n else\r\n dp += df.charAt(i);\r\n }\r\n r += dp;\r\n }\r\n else\r\n n = Math.round(n);\r\n\r\n let ones = Math.floor(n);\r\n if (n < 0)\r\n ones = Math.ceil(n);\r\n let of = \"\";\r\n if (fmt.indexOf(\".\") == -1)\r\n of = fmt;\r\n else\r\n of = fmt.substring(0, fmt.indexOf(\".\"));\r\n\r\n let op = \"\";\r\n if (!(ones == 0 && of.substr(of.length - 1) == '#')) {\r\n // find how many digits are in the group\r\n let oneText = new String(Math.abs(ones));\r\n let gl = 9999;\r\n if (of.lastIndexOf(\",\") != -1)\r\n gl = of.length - of.lastIndexOf(\",\") - 1;\r\n let gc = 0;\r\n for (let i = oneText.length - 1; i > -1; i--) {\r\n op = oneText.charAt(i) + op;\r\n gc++;\r\n if (gc == gl && i != 0) {\r\n op = grp + op;\r\n gc = 0;\r\n }\r\n }\r\n\r\n // account for any pre-data padding\r\n if (of.length > op.length) {\r\n let padStart = of.indexOf('0');\r\n if (padStart != -1) {\r\n let padLen = of.length - padStart;\r\n // pad to left with 0's or group char\r\n let pos = of.length - op.length - 1;\r\n while (op.length < padLen) {\r\n let pc = of.charAt(pos);\r\n // replace with real group char if needed\r\n if (pc == ',')\r\n pc = grp;\r\n op = pc + op;\r\n pos--;\r\n }\r\n }\r\n }\r\n }\r\n\r\n if (!op && of.indexOf('0', of.length - 1) !== -1)\r\n op = '0';\r\n\r\n r = op + r;\r\n if (n < 0)\r\n r = neg + r;\r\n\r\n if (r.lastIndexOf(dec) == r.length - 1) {\r\n r = r.substring(0, r.length - 1);\r\n }\r\n\r\n return r;\r\n }\r\n\r\n export function parseInteger(s: string): number {\r\n s = trim(s.toString());\r\n let ts = Culture.get_groupSeparator();\r\n if (s && s.length && s.indexOf(ts) > 0) {\r\n s = s.replace(new RegExp(\"(\\\\b\\\\d{1,3})\\\\\" + ts + \"(?=\\\\d{3}(\\\\D|$))\", \"g\"), '$1');\r\n }\r\n if (!(/^[-\\+]?\\d+$/.test(s)))\r\n return NaN;\r\n return parseInt(s, 10);\r\n }\r\n\r\n export function parseDecimal(s: string): number {\r\n if (s == null)\r\n return null;\r\n\r\n s = trim(s.toString());\r\n if (s.length == 0)\r\n return null;\r\n\r\n let ts = Culture.get_groupSeparator();\r\n\r\n if (s && s.length && s.indexOf(ts) > 0) {\r\n s = s.replace(new RegExp(\"(\\\\b\\\\d{1,3})\\\\\" + ts + \"(?=\\\\d{3}(\\\\D|$))\", \"g\"), '$1');\r\n }\r\n\r\n if (!(new RegExp(\"^\\\\s*([-\\\\+])?(\\\\d*)\\\\\" + Culture.decimalSeparator + \"?(\\\\d*)\\\\s*$\").test(s)))\r\n return NaN;\r\n\r\n return parseFloat(s.toString().replace(Culture.decimalSeparator, '.'));\r\n }\r\n\r\n function roundNumber(n: number, dec?: number): number {\r\n let power = Math.pow(10, dec || 0);\r\n let value = (Math.round(n * power) / power).toString();\r\n // ensure the decimal places are there\r\n if (dec > 0) {\r\n let dp = value.indexOf(\".\");\r\n if (dp == -1) {\r\n value += '.';\r\n dp = 0;\r\n }\r\n else {\r\n dp = value.length - (dp + 1);\r\n }\r\n while (dp < dec) {\r\n value += '0';\r\n dp++;\r\n }\r\n }\r\n return parseFloat(value);\r\n }\r\n\r\n export function toId(id: any): any {\r\n if (id == null)\r\n return null;\r\n if (typeof id == \"number\")\r\n return id;\r\n id = $.trim(id);\r\n if (id == null || !id.length)\r\n return null;\r\n if (id.length >= 15 || !(/^-?\\d+$/.test(id)))\r\n return id;\r\n let v = parseInt(id, 10);\r\n if (isNaN(v))\r\n return id;\r\n return v;\r\n }\r\n\r\n export function formatDate(d: Date | string, format?: string) {\r\n if (!d) {\r\n return '';\r\n }\r\n\r\n let date: Date;\r\n if (typeof d == \"string\") {\r\n var res = Q.parseDate(d);\r\n if (!res)\r\n return d;\r\n date = res as Date;\r\n }\r\n else\r\n date = d;\r\n\r\n if (format == null || format == \"d\") {\r\n format = Culture.dateFormat;\r\n }\r\n else {\r\n switch (format) {\r\n case \"g\": format = Culture.dateTimeFormat.replace(\":ss\", \"\"); break;\r\n case \"G\": format = Culture.dateTimeFormat; break;\r\n case \"s\": format = \"yyyy-MM-ddTHH:mm:ss\"; break;\r\n case \"u\": return Q.formatISODateTimeUTC(date);\r\n }\r\n }\r\n\r\n let pad = function (i: number) {\r\n return Q.zeroPad(i, 2);\r\n };\r\n\r\n return format.replace(new RegExp('dd?|MM?|yy?y?y?|hh?|HH?|mm?|ss?|tt?|fff|zz?z?|\\\\/', 'g'),\r\n function (fmt): any {\r\n switch (fmt) {\r\n case '/': return Culture.dateSeparator;\r\n case 'hh': return pad(((date.getHours() < 13) ? date.getHours() : (date.getHours() - 12)));\r\n case 'h': return ((date.getHours() < 13) ? date.getHours() : (date.getHours() - 12));\r\n case 'HH': return pad(date.getHours());\r\n case 'H': return date.getHours();\r\n case 'mm': return pad(date.getMinutes());\r\n case 'm': return date.getMinutes();\r\n case 'ss': return pad(date.getSeconds());\r\n case 's': return date.getSeconds();\r\n case 'yyyy': return date.getFullYear();\r\n case 'yy': return date.getFullYear().toString().substr(2, 4);\r\n case 'dd': return pad(date.getDate());\r\n case 'd': return date.getDate().toString();\r\n case 'MM': return pad(date.getMonth() + 1);\r\n case 'M': return date.getMonth() + 1;\r\n case 't': return ((date.getHours() < 12) ? 'A' : 'P');\r\n case 'tt': return ((date.getHours() < 12) ? 'AM' : 'PM');\r\n case 'fff': return Q.zeroPad(date.getMilliseconds(), 3);\r\n case 'zzz':\r\n case 'zz':\r\n case 'z': return '';\r\n default: return fmt;\r\n }\r\n }\r\n );\r\n }\r\n\r\n export function formatDayHourAndMin(n: number): string {\r\n if (n === 0)\r\n return '0';\r\n else if (!n)\r\n return '';\r\n let days = Math.floor(n / 24 / 60);\r\n let txt = \"\";\r\n if (days > 0) {\r\n txt += days.toString();\r\n }\r\n let mins = zeroPad(Math.floor((n % (24 * 60)) / (60)), 2) + ':' + zeroPad(n % 60, 2);\r\n if (mins != '00:00') {\r\n if (days > 0)\r\n txt += \".\";\r\n txt += mins;\r\n }\r\n return txt;\r\n }\r\n\r\n export function formatISODateTimeUTC(d: Date): string {\r\n if (d == null)\r\n return \"\";\r\n let zeropad = function (num: number) { return ((num < 10) ? '0' : '') + num; };\r\n let str = d.getUTCFullYear() + \"-\" +\r\n zeropad(d.getUTCMonth() + 1) + \"-\" +\r\n zeropad(d.getUTCDate()) + \"T\" +\r\n zeropad(d.getUTCHours()) + \":\" +\r\n zeropad(d.getUTCMinutes());\r\n let secs = Number(d.getUTCSeconds() + \".\" +\r\n ((d.getUTCMilliseconds() < 100) ? '0' : '') +\r\n zeropad(d.getUTCMilliseconds()));\r\n str += \":\" + zeropad(secs) + \"Z\";\r\n return str;\r\n }\r\n\r\n let isoRegexp = /(\\d{4,})(?:-(\\d{1,2})(?:-(\\d{1,2})(?:[T ](\\d{1,2}):(\\d{1,2})(?::(\\d{1,2})(?:\\.(\\d+))?)?(?:(Z)|([+-])(\\d{1,2})(?::(\\d{1,2}))?)?)?)?)?/;\r\n\r\n export function parseISODateTime(s: string): Date {\r\n if (!s || !s.length)\r\n return null;\r\n\r\n s = s + \"\";\r\n if (typeof (s) != \"string\" || s.length === 0) {\r\n return null;\r\n }\r\n\r\n let res = s.match(isoRegexp);\r\n if (typeof (res) == \"undefined\" || res === null) {\r\n return null;\r\n }\r\n\r\n let year: number, month: number, day: number, hour: number, min: number, sec: number, msec: number;\r\n year = parseInt(res[1], 10);\r\n\r\n if (typeof (res[2]) == \"undefined\" || res[2] === '') {\r\n return new Date(year);\r\n }\r\n\r\n month = parseInt(res[2], 10) - 1;\r\n day = parseInt(res[3], 10);\r\n if (typeof (res[4]) == \"undefined\" || res[4] === '') {\r\n return new Date(year, month, day);\r\n }\r\n\r\n hour = parseInt(res[4], 10);\r\n min = parseInt(res[5], 10);\r\n sec = (typeof (res[6]) != \"undefined\" && res[6] !== '') ? parseInt(res[6], 10) : 0;\r\n\r\n if (typeof (res[7]) != \"undefined\" && res[7] !== '') {\r\n msec = Math.round(1000.0 * parseFloat(\"0.\" + res[7]));\r\n }\r\n else {\r\n msec = 0;\r\n }\r\n\r\n if ((typeof (res[8]) == \"undefined\" || res[8] === '') && (typeof (res[9]) == \"undefined\" || res[9] === '')) {\r\n return new Date(year, month, day, hour, min, sec, msec);\r\n }\r\n\r\n let ofs: number;\r\n if (typeof (res[9]) != \"undefined\" && res[9] !== '') {\r\n ofs = parseInt(res[10], 10) * 3600000;\r\n if (typeof (res[11]) != \"undefined\" && res[11] !== '') {\r\n ofs += parseInt(res[11], 10) * 60000;\r\n }\r\n if (res[9] == \"-\") {\r\n ofs = -ofs;\r\n }\r\n }\r\n else {\r\n ofs = 0;\r\n }\r\n return new Date(Date.UTC(year, month, day, hour, min, sec, msec) - ofs);\r\n }\r\n\r\n export function parseHourAndMin(value: string) {\r\n let v = trim(value);\r\n if (v.length < 4 || v.length > 5)\r\n return NaN;\r\n let h: number, m: number;\r\n if (v.charAt(1) == ':') {\r\n h = parseInteger(v.substr(0, 1));\r\n m = parseInteger(v.substr(2, 2));\r\n }\r\n else {\r\n if (v.charAt(2) != ':')\r\n return NaN;\r\n h = parseInteger(v.substr(0, 2));\r\n m = parseInteger(v.substr(3, 2));\r\n }\r\n if (isNaN(h) || isNaN(m) || h < 0 || h > 23 || m < 0 || m > 59)\r\n return NaN;\r\n return h * 60 + m;\r\n }\r\n\r\n export function parseDayHourAndMin(s: string): number {\r\n let days: number;\r\n let v = trim(s);\r\n if (!v)\r\n return NaN;\r\n let p = v.split('.');\r\n if (p.length == 0 || p.length > 2)\r\n return NaN;\r\n if (p.length == 1) {\r\n days = parseInteger(p[0]);\r\n if (!isNaN(days))\r\n return days * 24 * 60;\r\n return parseHourAndMin(p[0]);\r\n }\r\n else {\r\n days = parseInteger(p[0]);\r\n let hm = parseHourAndMin(p[1]);\r\n if (isNaN(days) || isNaN(hm))\r\n return NaN;\r\n return days * 24 * 60 + hm;\r\n }\r\n }\r\n\r\n export function parseDate(s: string, dateOrder?: string): any {\r\n if (!s || !s.length)\r\n return null;\r\n\r\n if (s.length >= 10 && s.charAt(4) === '-' && s.charAt(7) === '-' &&\r\n (s.length === 10 || (s.length > 10 && s.charAt(10) === 'T'))) {\r\n var res = Q.parseISODateTime(s);\r\n if (res == null)\r\n return false;\r\n return res;\r\n }\r\n\r\n let dateVal: any;\r\n let dArray: any;\r\n let d: number, m: number, y: number;\r\n dArray = splitDateString(s);\r\n if (!dArray)\r\n return false;\r\n\r\n if (dArray.length == 3) {\r\n dateOrder = dateOrder || Culture.dateOrder;\r\n switch (dateOrder) {\r\n case \"dmy\":\r\n d = parseInt(dArray[0], 10);\r\n m = parseInt(dArray[1], 10) - 1;\r\n y = parseInt(dArray[2], 10);\r\n break;\r\n case \"ymd\":\r\n d = parseInt(dArray[2], 10);\r\n m = parseInt(dArray[1], 10) - 1;\r\n y = parseInt(dArray[0], 10);\r\n break;\r\n case \"mdy\":\r\n default:\r\n d = parseInt(dArray[1], 10);\r\n m = parseInt(dArray[0], 10) - 1;\r\n y = parseInt(dArray[2], 10);\r\n break;\r\n }\r\n\r\n if (isNaN(d) || isNaN(m) || isNaN(y) || d < 1 || d > 31 || m < 0 || m > 11 || y > 9999 || y < 0)\r\n return false;\r\n\r\n if (y < 100) {\r\n let fullYear = new Date().getFullYear();\r\n let shortYearCutoff = (fullYear % 100) + 10;\r\n y += fullYear - fullYear % 100 + (y <= shortYearCutoff ? 0 : -100);\r\n }\r\n try {\r\n dateVal = new Date(y, m, d);\r\n if (isNaN(dateVal.getFullYear()))\r\n return false;\r\n }\r\n catch (e) {\r\n return false;\r\n }\r\n }\r\n else if (dArray.length == 1) {\r\n try {\r\n dateVal = new Date(dArray[0]);\r\n if (isNaN(dateVal.getFullYear()))\r\n return false;\r\n }\r\n catch (e) {\r\n return false;\r\n }\r\n }\r\n return dateVal;\r\n }\r\n\r\n export function splitDateString(s: string): string[] {\r\n s = trim(s);\r\n if (!s.length)\r\n return;\r\n if (s.indexOf(\"/\") >= 0)\r\n return s.split(\"/\");\r\n else if (s.indexOf(\".\") >= 0)\r\n return s.split(\".\");\r\n else if (s.indexOf(\"-\") >= 0)\r\n return s.split(\"-\");\r\n else if (s.indexOf(\"\\\\\") >= 0)\r\n return s.split(\"\\\\\");\r\n else\r\n return [s];\r\n }\r\n}","\r\nnamespace Q {\r\n\r\n export function text(key: string): string {\r\n let t = LT.$table[key];\r\n if (t == null) {\r\n t = key || '';\r\n }\r\n return t;\r\n }\r\n\r\n export function dbText(prefix: string): ((key: string) => string) {\r\n return function (key: string) {\r\n return text(\"Db.\" + prefix + \".\" + key);\r\n }\r\n }\r\n\r\n export function prefixedText(prefix: string) {\r\n\r\n return function (text: string, key: string | ((p?: string) => string)) {\r\n\r\n if (text != null && !Q.startsWith(text, '`')) {\r\n var local = Q.tryGetText(text);\r\n if (local != null) {\r\n return local;\r\n }\r\n }\r\n\r\n if (text != null && Q.startsWith(text, '`')) {\r\n text = text.substr(1);\r\n }\r\n\r\n if (!Q.isEmptyOrNull(prefix)) {\r\n var textKey = typeof (key) == \"function\" ? key(prefix) : (prefix + key);\r\n var localText = Q.tryGetText(textKey);\r\n if (localText != null) {\r\n return localText;\r\n }\r\n }\r\n\r\n return text;\r\n }\r\n }\r\n\r\n export function tryGetText(key: string): string {\r\n return LT.$table[key];\r\n }\r\n\r\n export function dbTryText(prefix: string): ((key: string) => string) {\r\n return function (key: string) {\r\n return text(\"Db.\" + prefix + \".\" + key);\r\n }\r\n }\r\n\r\n export function proxyTexts(o: Object, p: string, t: Object): Object {\r\n if (typeof window != 'undefined' && window['Proxy']) {\r\n return new window['Proxy'](o, {\r\n get: (x: Object, y: string) => {\r\n var tv = t[y];\r\n if (tv == null)\r\n return;\r\n if (typeof tv == 'number')\r\n return Q.text(p + y);\r\n else {\r\n var z = o[y];\r\n if (z != null)\r\n return z;\r\n o[y] = z = proxyTexts({}, p + y + '.', tv);\r\n return z;\r\n }\r\n },\r\n ownKeys: (x: Object) => Object.keys(t)\r\n });\r\n }\r\n else {\r\n for (var k of Object.keys(t)) {\r\n if (typeof t[k] == 'number')\r\n Object.defineProperty(o, k, {\r\n get: () => Q.text(p + k)\r\n });\r\n else\r\n o[k] = proxyTexts({}, p + k + '.', t[k]);\r\n }\r\n return o;\r\n }\r\n }\r\n\r\n export class LT {\r\n static $table: { [key: string]: string } = {};\r\n static empty: LT = new LT('');\r\n\r\n constructor(private key: string) {\r\n }\r\n\r\n static add(obj: any, pre?: string) {\r\n if (!obj) {\r\n return;\r\n }\r\n pre = pre || '';\r\n for (let k of Object.keys(obj)) {\r\n let actual = pre + k;\r\n let o = obj[k];\r\n if (typeof (o) === 'object') {\r\n LT.add(o, actual + '.');\r\n }\r\n else {\r\n LT.$table[actual] = o;\r\n }\r\n }\r\n }\r\n\r\n get() {\r\n var t = LT.$table[this.key];\r\n if (t == null) {\r\n t = this.key || '';\r\n }\r\n return t;\r\n }\r\n\r\n toString() {\r\n var t = LT.$table[this.key];\r\n if (t == null) {\r\n t = this.key || '';\r\n }\r\n return t;\r\n }\r\n\r\n static initializeTextClass = function (type: any, prefix: string) {\r\n var $t1 = Object.keys(type).slice();\r\n for (var $t2 = 0; $t2 < $t1.length; $t2++) {\r\n var member = $t1[$t2];\r\n var value = type[member];\r\n if (value instanceof LT) {\r\n var lt = value;\r\n var key = prefix + member;\r\n LT.$table[key] = lt.key;\r\n type[member] = new LT(key);\r\n }\r\n }\r\n }\r\n\r\n static getDefault = function (key: string, defaultText: string) {\r\n var t = LT.$table[key];\r\n if (t == null) {\r\n t = defaultText;\r\n if (t == null) {\r\n t = key || '';\r\n }\r\n }\r\n return t;\r\n }\r\n }\r\n}","namespace Q {\r\n\r\n export interface LookupOptions<TItem> {\r\n idField?: string;\r\n parentIdField?: string;\r\n textField?: string;\r\n textFormatter?(item: TItem): string;\r\n }\r\n\r\n export class Lookup<TItem> {\r\n public items: TItem[] = [];\r\n public itemById: { [key: string]: TItem } = {};\r\n public idField: string;\r\n public parentIdField: string;\r\n public textField: string;\r\n public textFormatter: (item: TItem) => string;\r\n\r\n constructor(options: LookupOptions<TItem>, items?: TItem[]) {\r\n options = options || {};\r\n this.textFormatter = options.textFormatter;\r\n this.idField = options.idField;\r\n this.parentIdField = options.parentIdField;\r\n this.textField = options.textField;\r\n this.textFormatter = options.textFormatter;\r\n\r\n if (items != null)\r\n this.update(items);\r\n }\r\n\r\n update(value: TItem[]) {\r\n this.items = [];\r\n this.itemById = {};\r\n if (value) {\r\n for (var k of value)\r\n this.items.push(k);\r\n }\r\n var idField = this.idField;\r\n if (!Q.isEmptyOrNull(idField)) {\r\n for (var r of this.items) {\r\n var v = r[idField];\r\n if (v != null) {\r\n this.itemById[v] = r;\r\n }\r\n }\r\n }\r\n }\r\n\r\n protected get_idField() {\r\n return this.idField;\r\n }\r\n\r\n protected get_parentIdField() {\r\n return this.parentIdField;\r\n }\r\n\r\n protected get_textField() {\r\n return this.textField;\r\n }\r\n\r\n protected get_textFormatter() {\r\n return this.textFormatter;\r\n }\r\n\r\n protected get_itemById() {\r\n return this.itemById;\r\n }\r\n\r\n protected get_items() {\r\n return this.items;\r\n }\r\n }\r\n}","\r\nnamespace Q {\r\n let blockUICount: number = 0;\r\n\r\n function blockUIWithCheck(opt: JQBlockUIOptions) {\r\n if (blockUICount > 0) {\r\n blockUICount++;\r\n return;\r\n }\r\n\r\n $.blockUI(opt);\r\n blockUICount++;\r\n }\r\n\r\n /**\r\n * Uses jQuery BlockUI plugin to block access to whole page (default) or \r\n * a part of it, by using a transparent overlay covering the whole area.\r\n * @param options Parameters for the BlockUI plugin\r\n * @remarks If options are not specified, this function blocks \r\n * whole page with a transparent overlay. Default z-order of the overlay\r\n * div is 2000, so a higher z-order shouldn't be used in page.\r\n */\r\n export function blockUI(options: JQBlockUIOptions) {\r\n options = $.extend<JQBlockUIOptions>({\r\n baseZ: 2000,\r\n message: '',\r\n overlayCSS: {\r\n opacity: '0.0',\r\n zIndex: 2000,\r\n cursor: 'wait'\r\n }, fadeOut: 0\r\n }, options);\r\n\r\n if (options.useTimeout) {\r\n window.setTimeout(function () {\r\n blockUIWithCheck(options);\r\n }, 0);\r\n }\r\n else {\r\n blockUIWithCheck(options);\r\n }\r\n }\r\n\r\n export function blockUndo() {\r\n if (blockUICount > 1) {\r\n blockUICount--;\r\n return;\r\n }\r\n\r\n blockUICount--;\r\n $.unblockUI({ fadeOut: 0 });\r\n }\r\n}","namespace Q {\r\n\r\n export function addOption(select: JQuery, key: string, text: string) {\r\n $('<option/>').val(key).text(text).appendTo(select);\r\n }\r\n\r\n export function addEmptyOption(select: JQuery) {\r\n addOption(select, '', text(\"Controls.SelectEditor.EmptyItemText\"));\r\n }\r\n\r\n export function clearOptions(select: JQuery) {\r\n select.html('');\r\n }\r\n\r\n export function findElementWithRelativeId(element: JQuery, relativeId: string) {\r\n let elementId = element.attr('id');\r\n if (isEmptyOrNull(elementId)) {\r\n return $('#' + relativeId);\r\n }\r\n\r\n let result = $('#' + elementId + relativeId);\r\n if (result.length > 0) {\r\n return result;\r\n }\r\n\r\n result = $('#' + elementId + '_' + relativeId);\r\n\r\n if (result.length > 0) {\r\n return result;\r\n }\r\n\r\n while (true) {\r\n let idx = elementId.lastIndexOf('_');\r\n if (idx <= 0) {\r\n return $('#' + relativeId);\r\n }\r\n\r\n elementId = elementId.substr(0, idx);\r\n result = $('#' + elementId + '_' + relativeId);\r\n\r\n if (result.length > 0) {\r\n return result;\r\n }\r\n }\r\n }\r\n\r\n function attrEncoder(a: string): string {\r\n switch (a) {\r\n case '&': return '&';\r\n case '>': return '>';\r\n case '<': return '<';\r\n case '\\'': return '''\r\n case '\\\"': return '"'\r\n }\r\n return a;\r\n }\r\n\r\n const attrRegex = /[><&'\"]/g;\r\n\r\n /**\r\n * Html attribute encodes a string (encodes quotes in addition to &, > and <)\r\n * @param s String to be HTML attribute encoded\r\n */\r\n export function attrEncode(s: any): string {\r\n let text = (s == null ? '' : s.toString());\r\n if (attrRegex.test(text)) {\r\n return text.replace(attrRegex, attrEncoder);\r\n }\r\n return text;\r\n }\r\n\r\n function htmlEncoder(a: string): string {\r\n switch (a) {\r\n case '&': return '&';\r\n case '>': return '>';\r\n case '<': return '<';\r\n }\r\n return a;\r\n }\r\n\r\n /**\r\n * Html encodes a string\r\n * @param s String to be HTML encoded\r\n */\r\n export function htmlEncode(s: any): string {\r\n let text = (s == null ? '' : s.toString());\r\n if ((new RegExp('[><&]', 'g')).test(text)) {\r\n return text.replace(new RegExp('[><&]', 'g'), htmlEncoder);\r\n }\r\n return text;\r\n }\r\n\r\n export function jsRender(markup: string, data?: any) {\r\n if (!markup || markup.indexOf('{{') < 0) {\r\n return markup;\r\n }\r\n\r\n if (!($ as any).templates || !($ as any).views) {\r\n throw new ss.Exception('Please make sure that jsrender.js is included in the page!');\r\n }\r\n\r\n data = data || {};\r\n var template = ($ as any).templates(markup);\r\n ($ as any).views.converters({\r\n text: Q.text\r\n }, template);\r\n\r\n return template.render(data);\r\n }\r\n\r\n export function log(m: any) {\r\n (<any>window).console && (<any>window).console.log(m);\r\n }\r\n\r\n export function newBodyDiv(): JQuery {\r\n return $('<div/>').appendTo(document.body);\r\n }\r\n\r\n export function outerHtml(element: JQuery) {\r\n return $('<i/>').append(element.eq(0).clone()).html();\r\n }\r\n}\r\n","\r\nnamespace Q {\r\n export interface CommonDialogOptions extends JQueryUI.DialogOptions {\r\n onOpen?: () => void;\r\n onClose?: () => void;\r\n htmlEncode?: boolean;\r\n dialogClass?: string;\r\n title?: string;\r\n }\r\n\r\n export interface AlertOptions extends CommonDialogOptions {\r\n okButton?: string;\r\n }\r\n\r\n export function alert(message: string, options?: AlertOptions) {\r\n let dialog: JQuery;\r\n options = <Q.AlertOptions>$.extend({\r\n htmlEncode: true,\r\n okButton: text('Dialogs.OkButton'),\r\n title: text('Dialogs.AlertTitle'),\r\n onClose: null,\r\n onOpen: null,\r\n autoOpen: false,\r\n dialogClass: 's-MessageDialog s-AlertDialog',\r\n modal: true,\r\n width: '40%',\r\n maxWidth: '450',\r\n minWidth: '180',\r\n resizable: false,\r\n open: function () {\r\n if (options.onOpen)\r\n options.onOpen.call(this);\r\n },\r\n close: function () {\r\n dialog.dialog('destroy');\r\n if (options.onClose)\r\n options.onClose();\r\n }\r\n }, options);\r\n\r\n if (options.htmlEncode)\r\n message = htmlEncode(message);\r\n if (!options.buttons) {\r\n let buttons: any[] = [];\r\n buttons.push({\r\n text: options.okButton,\r\n click: function () {\r\n dialog.dialog('close');\r\n }\r\n });\r\n options.buttons = buttons;\r\n }\r\n dialog = $('<div><div class=\"message\"><\\/div><\\/div>')\r\n .dialog(options)\r\n .children('.message')\r\n .html(message)\r\n .parent()\r\n .dialog('open');\r\n }\r\n\r\n export interface ConfirmOptions extends CommonDialogOptions {\r\n yesButton?: string;\r\n noButton?: string;\r\n cancelButton?: string;\r\n onCancel?: () => void;\r\n onNo?: () => void;\r\n }\r\n\r\n export function confirm(message: string, onYes: () => void, options?: ConfirmOptions): void {\r\n let dialog: JQuery;\r\n options = $.extend({\r\n htmlEncode: true,\r\n yesButton: text('Dialogs.YesButton'),\r\n noButton: text('Dialogs.NoButton'),\r\n title: text('Dialogs.ConfirmationTitle'),\r\n onNo: null,\r\n onCancel: null,\r\n onClose: null,\r\n autoOpen: false,\r\n modal: true,\r\n dialogClass: 's-MessageDialog s-ConfirmDialog',\r\n width: '40%',\r\n maxWidth: '450',\r\n minWidth: '180',\r\n resizable: false,\r\n open: function () {\r\n if (options.onOpen)\r\n options.onOpen.call(this);\r\n },\r\n close: function () {\r\n dialog.dialog('destroy');\r\n if (!clicked && options.onCancel)\r\n options.onCancel();\r\n },\r\n overlay: {\r\n opacity: 0.77,\r\n background: \"black\"\r\n }\r\n }, options);\r\n if (options.htmlEncode)\r\n message = htmlEncode(message);\r\n let clicked = false;\r\n if (!options.buttons) {\r\n let buttons: any[] = [];\r\n buttons.push({\r\n text: options.yesButton,\r\n click: function () {\r\n clicked = true;\r\n dialog.dialog('close');\r\n if (onYes)\r\n onYes();\r\n }\r\n });\r\n if (options.noButton)\r\n buttons.push({\r\n text: options.noButton,\r\n click: function () {\r\n clicked = true;\r\n dialog.dialog('close');\r\n if (options.onNo)\r\n options.onNo();\r\n else if (options.onCancel)\r\n options.onCancel();\r\n }\r\n });\r\n options.buttons = buttons;\r\n }\r\n dialog = $('<div><div class=\"message\"><\\/div><\\/div>')\r\n .dialog(options)\r\n .children('.message')\r\n .html(message)\r\n .parent()\r\n .dialog('open');\r\n }\r\n\r\n export interface IFrameDialogOptions {\r\n html?: string;\r\n }\r\n\r\n export function iframeDialog(options: IFrameDialogOptions) {\r\n let doc: any;\r\n let e = $('<div style=\"overflow: hidden\"><iframe></iframe></div>');\r\n let settings: IFrameDialogOptions = $.extend(<JQueryUI.DialogOptions>{\r\n autoOpen: true,\r\n modal: true,\r\n width: '60%',\r\n height: '400',\r\n title: text('Dialogs.AlertTitle'),\r\n open: function () {\r\n doc = (<HTMLIFrameElement>(e.find('iframe').css({\r\n border: 'none',\r\n width: '100%',\r\n height: '100%'\r\n })[0])).contentDocument;\r\n doc.open();\r\n doc.write(settings.html);\r\n doc.close();\r\n },\r\n close: function () {\r\n doc.open();\r\n doc.write('');\r\n doc.close();\r\n e.dialog('destroy').html('');\r\n }\r\n }, options);\r\n e.dialog(settings as any);\r\n }\r\n\r\n export function information(message: string, onOk: () => void, options?: Q.ConfirmOptions) {\r\n confirm(message, onOk, $.extend<Q.ConfirmOptions>(\r\n {\r\n title: text(\"Dialogs.InformationTitle\"),\r\n dialogClass: \"s-MessageDialog s-InformationDialog\",\r\n yesButton: text(\"Dialogs.OkButton\"),\r\n noButton: null,\r\n }, options));\r\n }\r\n\r\n export function warning(message: string, options?: Q.AlertOptions) {\r\n alert(message, $.extend<Q.AlertOptions>(\r\n {\r\n title: text(\"Dialogs.WarningTitle\"),\r\n dialogClass: \"s-MessageDialog s-WarningDialog\"\r\n }, options));\r\n }\r\n}\r\n","\r\nnamespace Q {\r\n export let defaultNotifyOptions: ToastrOptions = {\r\n timeOut: 3000,\r\n showDuration: 250,\r\n hideDuration: 500,\r\n extendedTimeOut: 500,\r\n positionClass: 'toast-top-full-width'\r\n }\r\n\r\n function getToastrOptions(options: ToastrOptions) {\r\n options = $.extend<ToastrOptions>({}, defaultNotifyOptions, options);\r\n positionToastContainer(true);\r\n return options;\r\n }\r\n\r\n export function notifyWarning(message: string, title?: string, options?: ToastrOptions): void {\r\n toastr.warning(message, title, getToastrOptions(options));\r\n }\r\n\r\n export function notifySuccess(message: string, title?: string, options?: ToastrOptions): void {\r\n toastr.success(message, title, getToastrOptions(options));\r\n }\r\n\r\n export function notifyInfo(message: string, title?: string, options?: ToastrOptions): void {\r\n toastr.info(message, title, getToastrOptions(options));\r\n }\r\n\r\n export function notifyError(message: string, title?: string, options?: ToastrOptions): void {\r\n toastr.error(message, title, getToastrOptions(options));\r\n }\r\n\r\n export function positionToastContainer(create: boolean) {\r\n if (typeof toastr === 'undefined') {\r\n return;\r\n }\r\n\r\n var dialog = $(window.document.body).children('.ui-dialog:visible').last();\r\n var container = toastr.getContainer(null, create);\r\n if (container.length === 0) {\r\n return;\r\n }\r\n if (dialog.length > 0) {\r\n var position = dialog.position();\r\n container.addClass('positioned-toast toast-top-full-width');\r\n container.css({ position: 'absolute', top: position.top + 28 + 'px', left: position.left + 6 + 'px', width: dialog.width() - 12 + 'px' });\r\n }\r\n else {\r\n container.addClass('toast-top-full-width');\r\n if (container.hasClass('positioned-toast')) {\r\n container.removeClass('positioned-toast');\r\n container.css({ position: '', top: '', left: '', width: '' });\r\n }\r\n }\r\n }\r\n}\r\n","\r\nnamespace Q {\r\n\r\n export namespace ErrorHandling {\r\n\r\n export function showServiceError(error: Serenity.ServiceError) {\r\n let msg: any;\r\n if (error == null) {\r\n msg = '??ERROR??';\r\n }\r\n else {\r\n msg = error.Message;\r\n if (msg == null) {\r\n msg = error.Code;\r\n }\r\n }\r\n\r\n Q.alert(msg);\r\n }\r\n\r\n export function runtimeErrorHandler(message: string, filename?: string,\r\n lineno?: number, colno?: number, error?: Error) {\r\n try {\r\n var host = (window.location.host || \"\").toLowerCase();\r\n if (host.indexOf(\"localhost\") < 0 &&\r\n host.indexOf(\"127.0.0.1\") < 0)\r\n return;\r\n\r\n if (!window['toastr'])\r\n return;\r\n\r\n var errorInfo = JSON.stringify(error || {});\r\n\r\n message =\r\n '<p></p><p>Message: ' + Q.htmlEncode(message) +\r\n '</p><p>File: ' + Q.htmlEncode(filename) +\r\n ', Line: ' + lineno + ', Column: ' + colno +\r\n (errorInfo != \"{}\" ? '</p><p>Error: ' : \"\") + '</p>';\r\n\r\n window.setTimeout(function () {\r\n try {\r\n Q.notifyError(message, \"SCRIPT ERROR! See browser console (F12) for details.\", {\r\n escapeHtml: false,\r\n timeOut: 15000\r\n });\r\n }\r\n catch {\r\n }\r\n });\r\n }\r\n catch {\r\n }\r\n }\r\n }\r\n}","namespace Q {\r\n export namespace Config {\r\n /**\r\n * This is the root path of your application. If your application resides under http://localhost/mysite/,\r\n * your root path is \"mysite/\". This variable is automatically initialized by reading from a <link> element\r\n * with ID \"ApplicationPath\" from current page, which is usually located in your _LayoutHead.cshtml file\r\n */\r\n export let applicationPath = '/';\r\n\r\n var pathLink = $('link#ApplicationPath');\r\n if (pathLink.length > 0) {\r\n applicationPath = pathLink.attr('href');\r\n }\r\n\r\n /**\r\n * Email validation by default only allows ASCII characters. Set this to true if you want to allow unicode.\r\n */\r\n export let emailAllowOnlyAscii = true;\r\n\r\n /**\r\n * Set this to true, to enable responsive dialogs by default, without having to add Serenity.Decorators.responsive()\"\r\n * on dialog classes manually. It's false by default for backward compability.\r\n */\r\n export let responsiveDialogs = false;\r\n\r\n /**\r\n * This is the list of root namespaces that may be searched for types. For example, if you specify an editor type\r\n * of \"MyEditor\", first a class with name \"MyEditor\" will be searched, if not found, search will be followed by\r\n * \"Serenity.MyEditor\" and \"MyApp.MyEditor\" if you added \"MyApp\" to the list of root namespaces.\r\n *\r\n * You should usually add your application root namespace to this list in ScriptInitialization.ts file.\r\n */\r\n export let rootNamespaces = ['Serenity'];\r\n\r\n /**\r\n * This is an optional method for handling when user is not logged in. If a users session is expired \r\n * and when a NotAuthorized response is received from a service call, Serenity will call this handler, so\r\n * you may intercept it and notify user about this situation and ask if she wants to login again...\r\n */\r\n export let notLoggedInHandler: Function = null;\r\n }\r\n}","\r\nnamespace Q {\r\n\r\n export function getCookie(name: string) {\r\n if ($.cookie)\r\n return $.cookie(name);\r\n\r\n name += '=';\r\n for (var ca = document.cookie.split(/;\\s*/), i = ca.length - 1; i >= 0; i--)\r\n if (!ca[i].indexOf(name))\r\n return ca[i].replace(name, '');\r\n }\r\n\r\n $.ajaxSetup({\r\n beforeSend: function (xhr) {\r\n var token = Q.getCookie('CSRF-TOKEN');\r\n if (token)\r\n xhr.setRequestHeader('X-CSRF-TOKEN', token);\r\n }\r\n });\r\n\r\n export interface ServiceOptions<TResponse extends Serenity.ServiceResponse> extends JQueryAjaxSettings {\r\n request?: any;\r\n service?: string;\r\n blockUI?: boolean;\r\n onError?(response: TResponse): void;\r\n onSuccess?(response: TResponse): void;\r\n onCleanup?(): void;\r\n }\r\n\r\n export function serviceCall<TResponse>(options: Q.ServiceOptions<TResponse>) {\r\n let handleError = function (response: any) {\r\n if (Config.notLoggedInHandler != null &&\r\n response &&\r\n response.Error &&\r\n response.Error.Code == 'NotLoggedIn' &&\r\n Config.notLoggedInHandler(options, response)) {\r\n return;\r\n }\r\n\r\n if (options.onError != null) {\r\n options.onError(response);\r\n return;\r\n }\r\n\r\n ErrorHandling.showServiceError(response.Error);\r\n };\r\n\r\n var url = options.service;\r\n if (url && url.length && url.charAt(0) != '~' && url.charAt(0) != '/' && url.indexOf('://') < 0)\r\n url = resolveUrl(\"~/services/\") + url;\r\n\r\n options = $.extend<Q.ServiceOptions<TResponse>>({\r\n dataType: 'json',\r\n contentType: 'application/json',\r\n type: 'POST',\r\n cache: false,\r\n blockUI: true,\r\n url: url,\r\n data: $.toJSON(options.request),\r\n success: function (data, textStatus, request) {\r\n try {\r\n if (!data.Error && options.onSuccess) {\r\n options.onSuccess(data);\r\n }\r\n }\r\n finally {\r\n if (options.blockUI) {\r\n blockUndo();\r\n }\r\n options.onCleanup && options.onCleanup();\r\n }\r\n },\r\n error: function (xhr, status, ev) {\r\n try {\r\n if (xhr.status === 403) {\r\n var l: any = null;\r\n try {\r\n l = xhr.getResponseHeader('Location');\r\n }\r\n catch ($t1) {\r\n l = null;\r\n }\r\n if (l) {\r\n window.top.location.href = l;\r\n return;\r\n }\r\n }\r\n if ((xhr.getResponseHeader('content-type') || '')\r\n .toLowerCase().indexOf('application/json') >= 0) {\r\n var json = $.parseJSON(xhr.responseText);\r\n if (json && json.Error) {\r\n handleError(json);\r\n return;\r\n }\r\n }\r\n var html = xhr.responseText;\r\n if (!html) {\r\n if (!xhr.status)\r\n Q.alert(\"An unknown AJAX connection error occurred! Check browser console for details.\");\r\n else if (xhr.status == 500)\r\n Q.alert(\"HTTP 500: Connection refused! Check browser console for details.\");\r\n else\r\n Q.alert(\"HTTP \" + xhr.status + ' error! Check browser console for details.');\r\n }\r\n else\r\n iframeDialog({ html: html });\r\n }\r\n finally {\r\n if (options.blockUI) {\r\n blockUndo();\r\n }\r\n options.onCleanup && options.onCleanup();\r\n }\r\n }\r\n }, options);\r\n\r\n if (options.blockUI) {\r\n blockUI(null);\r\n }\r\n\r\n return $.ajax(options);\r\n }\r\n\r\n export function serviceRequest<TResponse>(service: string, request?: any,\r\n onSuccess?: (response: TResponse) => void, options?: Q.ServiceOptions<TResponse>) {\r\n return serviceCall($.extend<Q.ServiceOptions<TResponse>>({\r\n service: service,\r\n request: request,\r\n onSuccess: onSuccess\r\n }, options));\r\n }\r\n\r\n export function setEquality(request: Serenity.ListRequest, field: string, value: any) {\r\n if (request.EqualityFilter == null) {\r\n request.EqualityFilter = {};\r\n }\r\n request.EqualityFilter[field] = value;\r\n }\r\n\r\n export interface PostToServiceOptions {\r\n url?: string;\r\n service?: string;\r\n target?: string;\r\n request: any;\r\n }\r\n\r\n export interface PostToUrlOptions {\r\n url?: string;\r\n target?: string;\r\n params: any;\r\n }\r\n\r\n export function parseQueryString(s?: string): {} {\r\n let qs: string;\r\n if (s === undefined)\r\n qs = location.search.substring(1, location.search.length);\r\n else\r\n qs = s || '';\r\n let result = {};\r\n let parts = qs.split('&');\r\n for (let i = 0; i < parts.length; i++) {\r\n let pair = parts[i].split('=');\r\n let name = decodeURIComponent(pair[0]);\r\n result[name] = (pair.length >= 2 ? decodeURIComponent(pair[1]) : name);\r\n }\r\n return result;\r\n }\r\n\r\n export function postToService(options: Q.PostToServiceOptions) {\r\n let form = $('<form/>')\r\n .attr('method', 'POST')\r\n .attr('action', options.url ? (resolveUrl(options.url)) : resolveUrl('~/services/' + options.service))\r\n .appendTo(document.body);\r\n if (options.target)\r\n form.attr('target', options.target);\r\n let div = $('<div/>').appendTo(form);\r\n $('<input/>').attr('type', 'hidden').attr('name', 'request')\r\n .val($['toJSON'](options.request))\r\n .appendTo(div);\r\n var csrfToken = Q.getCookie('CSRF-TOKEN');\r\n if (csrfToken) {\r\n $('<input/>').attr('type', 'hidden').attr('name', '__RequestVerificationToken')\r\n .appendTo(div).val(csrfToken);\r\n }\r\n $('<input/>').attr('type', 'submit')\r\n .appendTo(div);\r\n form.submit();\r\n window.setTimeout(function () { form.remove(); }, 0);\r\n }\r\n\r\n export function postToUrl(options: Q.PostToUrlOptions) {\r\n let form = $('<form/>')\r\n .attr('method', 'POST')\r\n .attr('action', resolveUrl(options.url))\r\n .appendTo(document.body);\r\n if (options.target)\r\n form.attr('target', options.target);\r\n let div = $('<div/>').appendTo(form);\r\n if (options.params != null) {\r\n for (let k in options.params) {\r\n $('<input/>').attr('type', 'hidden').attr('name', k)\r\n .val(options.params[k])\r\n .appendTo(div);\r\n }\r\n }\r\n var csrfToken = Q.getCookie('CSRF-TOKEN');\r\n if (csrfToken) {\r\n $('<input/>').attr('type', 'hidden').attr('name', '__RequestVerificationToken')\r\n .appendTo(div).val(csrfToken);\r\n }\r\n $('<input/>').attr('type', 'submit')\r\n .appendTo(div);\r\n form.submit();\r\n window.setTimeout(function () { form.remove(); }, 0);\r\n }\r\n\r\n export function resolveUrl(url: string) {\r\n if (url && url.substr(0, 2) === '~/') {\r\n return Config.applicationPath + url.substr(2);\r\n }\r\n\r\n return url;\r\n }\r\n}\r\n\r\nnamespace Serenity {\r\n export type ServiceOptions<TResponse extends ServiceResponse> = Q.ServiceOptions<TResponse>;\r\n}","\r\nnamespace Q {\r\n\r\n export namespace LayoutTimer {\r\n\r\n var timeout: number;\r\n var regs: (() => void)[] = [];\r\n var regByKey: Q.Dictionary<number> = {};\r\n\r\n function startTimer() {\r\n if (timeout == null && regs.length) {\r\n timeout = window.setTimeout(onTimeout, 100);\r\n }\r\n }\r\n\r\n function clearTimer() {\r\n if (timeout != null) {\r\n window.clearTimeout(timeout);\r\n timeout = null;\r\n }\r\n }\r\n\r\n function onTimeout() {\r\n for (var reg of regs) {\r\n try {\r\n reg();\r\n }\r\n catch (e) {\r\n console.log(e);\r\n }\r\n }\r\n\r\n clearTimer();\r\n startTimer();\r\n }\r\n\r\n export function on(key: string, handler: () => void): () => void {\r\n if (handler == null)\r\n throw \"Layout handler can't be null!\";\r\n\r\n if (regByKey[key] !== undefined)\r\n throw \"There is already a registered layout handler with key: \" + key;\r\n\r\n if (key != null)\r\n regByKey[key] = regs.length;\r\n\r\n regs.push(handler);\r\n\r\n startTimer();\r\n\r\n return handler;\r\n }\r\n\r\n export function onSizeChange(key: string, element: HTMLElement, handler: () => void): () => void {\r\n var oldWidth = element.offsetWidth;\r\n var oldHeight = element.offsetHeight;\r\n\r\n on(key, () => {\r\n var offsetWidth = element.offsetWidth;\r\n var offsetHeight = element.offsetHeight;\r\n if (offsetWidth !== oldWidth ||\r\n offsetHeight !== oldHeight) {\r\n oldWidth = offsetWidth;\r\n oldHeight = offsetHeight;\r\n handler();\r\n }\r\n });\r\n\r\n return handler;\r\n }\r\n\r\n export function onWidthChange(key: string, element: HTMLElement, handler: () => void): () => void {\r\n var oldWidth = element.offsetWidth;\r\n\r\n on(key, () => {\r\n var offsetWidth = element.offsetWidth;\r\n if (offsetWidth !== oldWidth) {\r\n oldWidth = offsetWidth;\r\n handler();\r\n }\r\n });\r\n\r\n return handler;\r\n }\r\n\r\n export function onHeightChange(key: string, element: HTMLElement, handler: () => void): () => void {\r\n var oldHeight = element.offsetHeight;\r\n\r\n on(key, () => {\r\n var offsetHeight = element.offsetHeight;\r\n if (offsetHeight !== oldHeight) {\r\n oldHeight = offsetHeight;\r\n handler();\r\n }\r\n });\r\n\r\n return handler;\r\n }\r\n\r\n export function off(key: string, handler?: () => void): void {\r\n if (key != null) {\r\n var index = regByKey[key];\r\n if (index !== undefined) {\r\n delete regByKey[key];\r\n if (handler == null || handler === regs[index]) {\r\n regs.splice(index, 1);\r\n !regs.length && this.clearTimer();\r\n return;\r\n }\r\n }\r\n }\r\n\r\n if (handler != null) {\r\n for (var l = regs.length - 1; l >= 0; l++) {\r\n if (regs[l] === handler) {\r\n regs.splice(l, 1);\r\n !regs.length && this.clearTimer();\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}","namespace Q {\r\n\r\n export function autoFullHeight(element: JQuery) {\r\n element.css('height', '100%');\r\n triggerLayoutOnShow(element);\r\n }\r\n\r\n export function initFullHeightGridPage(gridDiv: JQuery) {\r\n $('body').addClass('full-height-page');\r\n gridDiv.addClass('responsive-height');\r\n\r\n let layout = function () {\r\n let inPageContent = gridDiv.parent().hasClass('page-content') ||\r\n gridDiv.parent().is('section.content');\r\n\r\n if (inPageContent) {\r\n gridDiv.css('height', '1px').css('overflow', 'hidden');\r\n }\r\n\r\n layoutFillHeight(gridDiv);\r\n\r\n if (inPageContent) {\r\n gridDiv.css('overflow', '');\r\n }\r\n\r\n gridDiv.triggerHandler('layout');\r\n };\r\n\r\n if ($('body').hasClass('has-layout-event')) {\r\n $('body').bind('layout', layout);\r\n }\r\n else if ((window as any).Metronic) {\r\n (window as any).Metronic.addResizeHandler(layout);\r\n }\r\n else {\r\n $(window).resize(layout);\r\n }\r\n\r\n layout();\r\n\r\n gridDiv.one('remove', () => {\r\n $(window).off('layout', layout);\r\n $('body').off('layout', layout);\r\n });\r\n\r\n // ugly, but to it is to make old pages work without having to add this\r\n Q.Router.resolve();\r\n }\r\n\r\n export function layoutFillHeightValue(element: JQuery) {\r\n let h = 0;\r\n element.parent().children().not(element).each(function (i, e) {\r\n let q = $(e);\r\n if (q.is(':visible')) {\r\n h += q.outerHeight(true);\r\n }\r\n });\r\n h = element.parent().height() - h;\r\n if (element.css('box-sizing') !== 'border-box') {\r\n h = h - (element.outerHeight(true) - element.height());\r\n }\r\n return h;\r\n }\r\n\r\n export function layoutFillHeight(element: JQuery) {\r\n let h = layoutFillHeightValue(element);\r\n let n = Math.round(h) + 'px';\r\n if (element.css('height') != n) {\r\n element.css('height', n);\r\n }\r\n }\r\n\r\n export function setMobileDeviceMode() {\r\n let isMobile = navigator.userAgent.indexOf('Mobi') >= 0 ||\r\n window.matchMedia('(max-width: 767px)').matches;\r\n\r\n let body = $(document.body);\r\n if (body.hasClass('mobile-device')) {\r\n if (!isMobile) {\r\n body.removeClass('mobile-device');\r\n }\r\n }\r\n else if (isMobile) {\r\n body.addClass('mobile-device');\r\n }\r\n }\r\n\r\n export function triggerLayoutOnShow(element: JQuery) {\r\n Serenity.LazyLoadHelper.executeEverytimeWhenShown(element, function () {\r\n element.triggerHandler('layout');\r\n }, true);\r\n }\r\n\r\n export function centerDialog(el: JQuery) {\r\n if (!el.hasClass(\"ui-dialog\"))\r\n el = el.closest(\".ui-dialog\");\r\n\r\n el.position({ at: 'center center', of: window });\r\n let pos = el.position();\r\n if (pos.left < 0)\r\n el.css(\"left\", \"0px\");\r\n if (pos.top < 0)\r\n el.css(\"top\", \"0px\");\r\n }\r\n}","\r\nnamespace Q {\r\n\r\n export namespace ScriptData {\r\n let registered: { [key: string]: any } = {};\r\n let loadedData: { [key: string]: any } = {};\r\n\r\n export function bindToChange(name: string, regClass: string, onChange: () => void) {\r\n ($(document.body) as any).bind('scriptdatachange.' + regClass, function (e: any, s: string) {\r\n if (s == name) {\r\n onChange();\r\n }\r\n });\r\n }\r\n\r\n export function triggerChange(name: string) {\r\n $(document.body).triggerHandler('scriptdatachange', [name]);\r\n }\r\n\r\n export function unbindFromChange(regClass: string) {\r\n $(document.body).unbind('scriptdatachange.' + regClass);\r\n }\r\n\r\n function loadOptions(name: string, async: boolean): JQueryAjaxSettings {\r\n return {\r\n async: async,\r\n cache: true,\r\n type: 'GET',\r\n url: Q.resolveUrl('~/DynJS.axd/') + name + '.js?' + registered[name],\r\n data: null,\r\n dataType: 'text',\r\n converters: {\r\n \"text script\": function (text: string) {\r\n return text;\r\n }\r\n },\r\n success: function (data, textStatus, jqXHR) {\r\n $.globalEval(data);\r\n },\r\n error: function (xhr, textStatus, errorThrown) {\r\n var isLookup = Q.startsWith(name, \"Lookup.\");\r\n if (xhr.status == 403 && isLookup) {\r\n Q.notifyError('<p>Access denied while trying to load the lookup: \"<b>' +\r\n name.substr(7) + '</b>\". Please check if current user has required permissions for this lookup.</p> ' +\r\n '<p><em>Lookups use the ReadPermission of their row by default. You may override that for the lookup ' +\r\n 'like [LookupScript(\"Some.Lookup\", Permission = \"?\")] to grant all ' +\r\n 'authenticated users to read it (or use \"*\" for public).</em></p>' + \r\n '<p><em>Note that this might be a security risk if the lookup contains sensitive data, ' +\r\n 'so it could be better to set a separate permission for lookups, like \"MyModule:Lookups\".</em></p>', null, {\r\n timeOut: 10000,\r\n escapeHtml: false\r\n });\r\n return;\r\n }\r\n\r\n Q.notifyError(\"An error occurred while trying to load \" +\r\n (isLookup ? ' the lookup: \"' + name.substr(7) :\r\n ' dynamic script: \"' + name) +\r\n '\"!. Please check the error message displayed in the dialog below for more info.');\r\n\r\n var html = xhr.responseText;\r\n if (!html) {\r\n if (!xhr.status)\r\n Q.alert(\"An unknown connection error occurred! Check browser console for details.\");\r\n else if (xhr.status == 500)\r\n Q.alert(\"HTTP 500: Connection refused! Check browser console for details.\");\r\n else\r\n Q.alert(\"HTTP \" + xhr.status + ' error! Check browser console for details.');\r\n }\r\n else\r\n Q.iframeDialog({ html: html });\r\n }\r\n }\r\n }\r\n\r\n function loadScriptAsync(name: string) {\r\n return Promise.resolve().then(function () {\r\n Q.blockUI(null);\r\n return Promise.resolve(\r\n $.ajax(loadOptions(name, false))\r\n .always(function () {\r\n Q.blockUndo();\r\n }));\r\n }, null);\r\n }\r\n\r\n function loadScriptData(name: string) {\r\n if (registered[name] == null) {\r\n throw new Error(Q.format('Script data {0} is not found in registered script list!', name));\r\n }\r\n\r\n $.ajax(loadOptions(name, false));\r\n }\r\n\r\n function loadScriptDataAsync(name: string): PromiseLike<any> {\r\n return Promise.resolve().then(function () {\r\n if (registered[name] == null) {\r\n throw new Error(Q.format('Script data {0} is not found in registered script list!', name));\r\n }\r\n\r\n return loadScriptAsync(name);\r\n }, null);\r\n }\r\n\r\n export function ensure(name: string) {\r\n var data = loadedData[name];\r\n if (data == null) {\r\n loadScriptData(name);\r\n }\r\n\r\n data = loadedData[name];\r\n\r\n if (data == null)\r\n throw new Error(Q.format(\"Can't load script data: {0}!\", name));\r\n\r\n return data;\r\n }\r\n\r\n export function ensureAsync(name: string): PromiseLike<any> {\r\n return Promise.resolve().then(function () {\r\n var data = loadedData[name];\r\n if (data != null) {\r\n return Promise.resolve(data);\r\n }\r\n\r\n return loadScriptDataAsync(name).then(function () {\r\n data = loadedData[name];\r\n if (data == null) {\r\n throw new Error(Q.format(\"Can't load script data: {0}!\", name));\r\n }\r\n return data;\r\n }, null);\r\n }, null);\r\n }\r\n\r\n export function reload(name: string) {\r\n if (registered[name] == null) {\r\n throw new Error(Q.format('Script data {0} is not found in registered script list!', name));\r\n }\r\n registered[name] = (new Date()).getTime().toString();\r\n loadScriptData(name);\r\n var data = loadedData[name];\r\n return data;\r\n }\r\n\r\n export function reloadAsync(name: string) {\r\n return Promise.resolve().then(function () {\r\n if (registered[name] == null) {\r\n throw new Error(Q.format('Script data {0} is not found in registered script list!', name));\r\n }\r\n registered[name] = (new Date()).getTime().toString();\r\n return loadScriptDataAsync(name).then(function () {\r\n return loadedData[name];\r\n }, null);\r\n }, null);\r\n }\r\n\r\n export function canLoad(name: string) {\r\n return (loadedData[name] != null || registered[name] != null);\r\n }\r\n\r\n export function setRegisteredScripts(scripts: any[]) {\r\n registered = {};\r\n var t = new Date().getTime();\r\n for (var k in scripts) {\r\n registered[k] = scripts[k] || t;\r\n }\r\n }\r\n\r\n export function set(name: string, value: any) {\r\n loadedData[name] = value;\r\n triggerChange(name);\r\n }\r\n }\r\n\r\n export function getRemoteData(key: string) {\r\n return ScriptData.ensure('RemoteData.' + key);\r\n }\r\n\r\n export function getRemoteDataAsync(key: string) {\r\n return ScriptData.ensureAsync('RemoteData.' + key);\r\n }\r\n\r\n export function getLookup<TItem>(key: string): Lookup<TItem> {\r\n var name = 'Lookup.' + key;\r\n if (!ScriptData.canLoad(name)) {\r\n var message = 'No lookup with key \"' + key + '\" is registered. Please make sure you have a' +\r\n ' [LookupScript(\"' + key + '\")] attribute in server side code on top of a row / custom lookup and ' +\r\n ' its key is exactly the same.';\r\n Q.notifyError(message);\r\n throw new Error(message);\r\n }\r\n return ScriptData.ensure('Lookup.' + key);\r\n }\r\n\r\n export function getLookupAsync<TItem>(key: string): PromiseLike<Lookup<TItem>> {\r\n return ScriptData.ensureAsync('Lookup.' + key);\r\n }\r\n\r\n export function reloadLookup(key: string) {\r\n ScriptData.reload('Lookup.' + key);\r\n }\r\n\r\n export function reloadLookupAsync(key: string) {\r\n return ScriptData.reloadAsync('Lookup.' + key);\r\n }\r\n\r\n export function getColumns(key: string): Serenity.PropertyItem[] {\r\n return ScriptData.ensure('Columns.' + key);\r\n }\r\n\r\n export function getColumnsAsync(key: string): PromiseLike<Serenity.PropertyItem[]> {\r\n return ScriptData.ensureAsync('Columns.' + key);\r\n }\r\n\r\n export function getForm(key: string): Serenity.PropertyItem[] {\r\n return ScriptData.ensure('Form.' + key);\r\n }\r\n\r\n export function getFormAsync(key: string): PromiseLike<Serenity.PropertyItem[]> {\r\n return ScriptData.ensureAsync('Form.' + key);\r\n }\r\n\r\n export function getTemplate(key: string): string {\r\n return ScriptData.ensure('Template.' + key);\r\n }\r\n\r\n export function getTemplateAsync(key: string): PromiseLike<string> {\r\n return ScriptData.ensureAsync('Template.' + key);\r\n }\r\n\r\n export function canLoadScriptData(name: string): boolean {\r\n return ScriptData.canLoad(name);\r\n }\r\n}\r\n","\r\nnamespace Q {\r\n\r\n export function initFormType(typ: Function, nameWidgetPairs: any[]) {\r\n for (var i = 0; i < nameWidgetPairs.length - 1; i += 2) {\r\n (function (name: string, widget: any) {\r\n Object.defineProperty(typ.prototype, name, {\r\n get: function () {\r\n return this.w(name, widget);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n })(nameWidgetPairs[i], nameWidgetPairs[i + 1]);\r\n }\r\n }\r\n\r\n export function prop(type: any, name: string, getter?: string, setter?: string) {\r\n getter = getter || \"get_\" + name;\r\n setter = setter || \"set_\" + name;\r\n\r\n Object.defineProperty(type.prototype, name, {\r\n get: function () {\r\n return this[getter]();\r\n },\r\n set: function (value) {\r\n return this[setter](value);\r\n },\r\n configurable: true,\r\n enumerable: true\r\n });\r\n }\r\n\r\n export function typeByFullName(fullName: string, global?: any): any {\r\n if (!fullName)\r\n return null;\r\n\r\n var parts = fullName.split('.');\r\n var root = global || window;\r\n for (var i = 0; i < parts.length; i++) {\r\n root = root[parts[i]];\r\n if (root == null)\r\n return null;\r\n }\r\n\r\n if (typeof root != \"function\")\r\n return null;\r\n\r\n return root;\r\n }\r\n\r\n function enumerateTypes(global: any, namespaces: string[], callback: (type: any, fullName: string) => void): void {\r\n function scan(root: any, fullName: string, depth: number) {\r\n if (!root)\r\n return;\r\n\r\n if ($.isArray(root) ||\r\n root instanceof Date)\r\n return;\r\n\r\n var t = typeof (root);\r\n\r\n if (t == \"string\" ||\r\n t == \"number\")\r\n return;\r\n\r\n if ($.isFunction(root) || (root.__enum && root.__register))\r\n callback(root, fullName);\r\n\r\n if (depth > 3)\r\n return;\r\n\r\n for (var k of Object.keys(root)) {\r\n if (k.charAt(0) < 'A' || k.charAt(0) > 'Z')\r\n continue;\r\n\r\n if (k.indexOf('$') >= 0)\r\n continue;\r\n\r\n if (k == \"prototype\")\r\n continue;\r\n\r\n scan(root[k], fullName + '.' + k, depth + 1);\r\n }\r\n }\r\n\r\n for (var nsRoot of namespaces) {\r\n if (nsRoot == null || !nsRoot.length) {\r\n continue;\r\n }\r\n\r\n if (nsRoot.indexOf('.') >= 0) {\r\n let g = global;\r\n let parts = nsRoot.split('.');\r\n for (var p of parts) {\r\n if (!p.length)\r\n continue;\r\n\r\n g = g[p];\r\n if (!g)\r\n continue;\r\n }\r\n scan(g, nsRoot, 0);\r\n }\r\n\r\n scan(global[nsRoot], nsRoot, 0);\r\n }\r\n }\r\n\r\n //all browsers seem to show some unhandled exception message so don't enable this for now\r\n //window.addEventListener('unhandledrejection', function (e: any) {\r\n // var error = e.reason || e;\r\n // log(e);\r\n // log((error.get_stack && error.get_stack()) || error.stack);\r\n //});\r\n\r\n //window.addEventListener('error', function (e: any) {\r\n // var error = (e.error | e) as any;\r\n // log(e);\r\n // log((error.get_stack && error.get_stack()) || error.stack);\r\n //});\r\n\r\n (function (global: any) {\r\n\r\n // for backward compability, avoid!\r\n global.Q$Externals = Q;\r\n global.Q$Config = Q.Config;\r\n global.Q$Culture = Q.Culture;\r\n global.Q$Lookup = Q.Lookup;\r\n global.Q$ScriptData = Q.ScriptData;\r\n global.Q$LT = Q.LT;\r\n\r\n function initializeTypes() {\r\n enumerateTypes(global, Q.Config.rootNamespaces, function (obj, fullName) {\r\n // probably Saltaralle class\r\n if (obj.hasOwnProperty(\"__typeName\") &&\r\n !obj.__register)\r\n return;\r\n\r\n if (!obj.__interfaces &&\r\n obj.prototype.format &&\r\n fullName.substr(-9) == \"Formatter\") {\r\n obj.__class = true;\r\n obj.__interfaces = [Serenity.ISlickFormatter]\r\n }\r\n\r\n if (!obj.__class) {\r\n var baseType = (ss as any).getBaseType(obj);\r\n if (baseType && baseType.__class)\r\n obj.__class = true;\r\n }\r\n\r\n if (obj.__class || obj.__enum || obj.__interface) {\r\n obj.__typeName = fullName;\r\n if (!obj.__assembly) {\r\n obj.__assembly = ss.__assemblies['App'];\r\n }\r\n obj.__assembly.__types[fullName] = obj;\r\n }\r\n\r\n delete obj.__register;\r\n });\r\n }\r\n\r\n $(function () {\r\n initializeTypes();\r\n\r\n setMobileDeviceMode();\r\n $(global).bind('resize', function () {\r\n setMobileDeviceMode();\r\n });\r\n });\r\n })(window || {});\r\n}","namespace Q {\r\n export namespace Authorization {\r\n export function hasPermission(permission: string) {\r\n if (permission == null)\r\n return false;\r\n\r\n if (permission == \"*\")\r\n return true;\r\n\r\n if (permission == \"\" || permission == \"?\")\r\n return isLoggedIn;\r\n\r\n var ud = Authorization.userDefinition;\r\n if (ud && ud.IsAdmin)\r\n return true;\r\n\r\n if (ud && ud.Permissions) {\r\n var p = ud.Permissions;\r\n if (p[permission])\r\n return true;\r\n\r\n var orParts = permission.split('|');\r\n for (var r of orParts) {\r\n if (!r)\r\n continue;\r\n\r\n var andParts = r.split('&');\r\n if (!andParts.length)\r\n continue;\r\n\r\n let fail = false;\r\n for (var n of andParts) {\r\n if (!p[n]) {\r\n fail = true;\r\n break;\r\n }\r\n }\r\n\r\n if (!fail)\r\n return true;\r\n }\r\n }\r\n\r\n return false;\r\n }\r\n\r\n export function validatePermission(permission: string) {\r\n if (!hasPermission(permission)) {\r\n Q.notifyError(Q.text(\"Authorization.AccessDenied\"));\r\n throw new Error(Q.text(\"Authorization.AccessDenied\"));\r\n }\r\n }\r\n }\r\n\r\n export declare namespace Authorization {\r\n export let isLoggedIn: boolean;\r\n export let username: string;\r\n export let userDefinition: Serenity.UserDefinition;\r\n }\r\n\r\n Object.defineProperty(Q.Authorization, \"userDefinition\", {\r\n get: function () {\r\n return Q.getRemoteData(\"UserData\");\r\n }\r\n });\r\n\r\n Object.defineProperty(Q.Authorization, \"isLoggedIn\", {\r\n get: function () {\r\n var ud = Authorization.userDefinition;\r\n return ud && !!ud.Username;\r\n }\r\n });\r\n\r\n Object.defineProperty(Q.Authorization, \"username\", {\r\n get: function () {\r\n var ud = Authorization.userDefinition;\r\n if (ud)\r\n return ud.Username;\r\n\r\n return null;\r\n }\r\n });\r\n}\r\n\r\nnamespace Serenity {\r\n export interface UserDefinition {\r\n Username?: string;\r\n DisplayName?: string;\r\n IsAdmin?: boolean;\r\n Permissions?: { [key: string]: boolean };\r\n }\r\n}","\r\nnamespace Q.Router {\r\n let oldURL: string;\r\n let resolving: number = 0;\r\n let autoinc: number = 0;\r\n let listenerTimeout: number;\r\n let ignoreHash: number = 0;\r\n let ignoreTime: number = 0;\r\n\r\n export let enabled: boolean = true;\r\n\r\n function isEqual(url1: string, url2: string) {\r\n return url1 == url2 || url1 == url2 + '#' || url2 == url1 + '#';\r\n }\r\n\r\n export function navigate(hash: string, tryBack?: boolean, silent?: boolean) {\r\n if (!enabled || resolving > 0)\r\n return;\r\n\r\n hash = hash || '';\r\n hash = hash.replace(/^#/, '');\r\n hash = (!hash ? \"\" : '#' + hash);\r\n var newURL = window.location.href.replace(/#$/, '')\r\n .replace(/#.*$/, '') + hash;\r\n if (newURL != window.location.href) {\r\n if (tryBack && oldURL != null && isEqual(oldURL, newURL)) {\r\n if (silent)\r\n ignoreChange();\r\n\r\n var prior = window.location.href;\r\n oldURL = null;\r\n window.history.back();\r\n return;\r\n }\r\n\r\n if (silent)\r\n ignoreChange();\r\n\r\n oldURL = window.location.href;\r\n window.location.hash = hash;\r\n }\r\n }\r\n\r\n export function replace(hash: string, tryBack?: boolean) {\r\n navigate(hash, tryBack, true);\r\n }\r\n\r\n export function replaceLast(hash: string, tryBack?: boolean) {\r\n if (!enabled)\r\n return;\r\n\r\n var current = window.location.hash || '';\r\n if (current.charAt(0) == '#')\r\n current = current.substr(1, current.length - 1);\r\n\r\n var parts = current.split('/+/');\r\n\r\n if (parts.length > 1) {\r\n if (hash && hash.length) {\r\n parts[parts.length - 1] = hash;\r\n hash = parts.join(\"/+/\");\r\n }\r\n else {\r\n parts.splice(parts.length - 1, 1);\r\n hash = parts.join(\"/+/\");\r\n }\r\n }\r\n replace(hash, tryBack);\r\n }\r\n\r\n function visibleDialogs() {\r\n return $('.ui-dialog-content:visible, .ui-dialog.panel-hidden>.ui-dialog-content, .s-Panel').toArray().sort((a, b) => {\r\n return ($(a).data('qrouterorder') || 0) - ($(b).data('qrouterorder') || 0);\r\n });\r\n }\r\n\r\n function dialogOpen(owner: JQuery, element: JQuery, hash: () => string) {\r\n var route = [];\r\n var isDialog = owner.hasClass(\".ui-dialog-content\") || owner.hasClass('.s-Panel');\r\n var dialog = isDialog ? owner :\r\n owner.closest('.ui-dialog-content, .s-Panel');\r\n var value = hash();\r\n\r\n var idPrefix: string;\r\n if (dialog.length) {\r\n var dialogs = visibleDialogs();\r\n var index = dialogs.indexOf(dialog[0]);\r\n\r\n for (var i = 0; i <= index; i++) {\r\n var q = $(dialogs[i]).data(\"qroute\") as string;\r\n if (q && q.length)\r\n route.push(q);\r\n }\r\n\r\n if (!isDialog) {\r\n idPrefix = dialog.attr(\"id\");\r\n if (idPrefix) {\r\n idPrefix += \"_\";\r\n var id = owner.attr(\"id\");\r\n if (id && Q.startsWith(id, idPrefix))\r\n value = id.substr(idPrefix.length) + '@' + value;\r\n }\r\n }\r\n }\r\n else {\r\n var id = owner.attr(\"id\");\r\n if (id && (!owner.hasClass(\"route-handler\") ||\r\n $('.route-handler').first().attr(\"id\") != id))\r\n value = id + \"@\" + value;\r\n }\r\n\r\n route.push(value);\r\n element.data(\"qroute\", value);\r\n replace(route.join(\"/+/\"));\r\n\r\n element.bind(\"dialogclose.qrouter panelclose.qrouter\", e => {\r\n element.data(\"qroute\", null);\r\n element.unbind(\".qrouter\");\r\n var prhash = element.data(\"qprhash\");\r\n var tryBack = $(e.target).closest('.s-MessageDialog').length > 0 || (e && e.originalEvent &&\r\n ((e.originalEvent.type == \"keydown\" && (e.originalEvent as any).keyCode == 27) ||\r\n $(e.originalEvent.target).hasClass(\"ui-dialog-titlebar-close\") ||\r\n $(e.originalEvent.target).hasClass(\"panel-titlebar-close\")));\r\n if (prhash != null)\r\n replace(prhash, tryBack);\r\n else\r\n replaceLast('', tryBack);\r\n });\r\n }\r\n\r\n export function dialog(owner: JQuery, element: JQuery, hash: () => string) {\r\n if (!enabled)\r\n return;\r\n \r\n element.on(\"dialogopen.qrouter panelopen.qrouter\", e => {\r\n dialogOpen(owner, element, hash);\r\n });\r\n }\r\n\r\n export function resolve(hash?: string) {\r\n if (!enabled)\r\n return;\r\n\r\n resolving++;\r\n try {\r\n hash = Q.coalesce(Q.coalesce(hash, window.location.hash), '');\r\n if (hash.charAt(0) == '#')\r\n hash = hash.substr(1, hash.length - 1);\r\n\r\n var dialogs = visibleDialogs();\r\n var newParts = hash.split(\"/+/\");\r\n var oldParts = dialogs.map(el => $(el).data('qroute') as string);\r\n\r\n var same = 0;\r\n while (same < dialogs.length &&\r\n same < newParts.length &&\r\n oldParts[same] == newParts[same]) {\r\n same++;\r\n }\r\n\r\n for (var i = same; i < dialogs.length; i++) {\r\n var d = $(dialogs[i]);\r\n if (d.hasClass('ui-dialog-content'))\r\n d.dialog('close');\r\n else if (d.hasClass('s-Panel'))\r\n Serenity.TemplatedDialog.closePanel(d);\r\n }\r\n\r\n for (var i = same; i < newParts.length; i++) {\r\n var route = newParts[i];\r\n var routeParts = route.split('@');\r\n var handler: JQuery;\r\n if (routeParts.length == 2) {\r\n var dialog = i > 0 ? $(dialogs[i - 1]) : $([]);\r\n if (dialog.length) {\r\n var idPrefix = dialog.attr(\"id\");\r\n if (idPrefix) {\r\n handler = $('#' + idPrefix + \"_\" + routeParts[0]);\r\n if (handler.length) {\r\n route = routeParts[1];\r\n }\r\n }\r\n }\r\n\r\n if (!handler || !handler.length) {\r\n handler = $('#' + routeParts[0]);\r\n if (handler.length) {\r\n route = routeParts[1];\r\n }\r\n }\r\n }\r\n\r\n if (!handler || !handler.length) {\r\n handler = i > 0 ? $(dialogs[i - 1]) :\r\n $('.route-handler').first();\r\n }\r\n\r\n handler.triggerHandler(\"handleroute\", {\r\n handled: false,\r\n route: route,\r\n parts: newParts,\r\n index: i\r\n });\r\n }\r\n }\r\n finally {\r\n resolving--;\r\n }\r\n }\r\n\r\n function hashChange(e: any, o: string) {\r\n if (ignoreHash > 0) {\r\n if (new Date().getTime() - ignoreTime > 1000) {\r\n ignoreHash = 0;\r\n }\r\n else {\r\n ignoreHash--;\r\n return;\r\n }\r\n }\r\n resolve();\r\n }\r\n\r\n function ignoreChange() {\r\n ignoreHash++;\r\n ignoreTime = new Date().getTime();\r\n }\r\n\r\n window.addEventListener(\"hashchange\", hashChange as any, false);\r\n\r\n let routerOrder = 1;\r\n\r\n $(document).on(\"dialogopen panelopen\", \".ui-dialog-content, .s-Panel\", function (event, ui) {\r\n if (!enabled)\r\n return;\r\n\r\n var dlg = $(event.target);\r\n dlg.data(\"qrouterorder\", routerOrder++);\r\n\r\n if (dlg.data(\"qroute\"))\r\n return;\r\n\r\n dlg.data(\"qprhash\", window.location.hash);\r\n var owner = $(visibleDialogs).not(dlg).last();\r\n if (!owner.length)\r\n owner = $('html');\r\n\r\n dialogOpen(owner, dlg, () => {\r\n return \"!\" + (++autoinc).toString(36);\r\n });\r\n });\r\n}","\r\nnamespace Serenity {\r\n\r\n export namespace Decorators {\r\n function distinct(arr: any[]) {\r\n return arr.filter((item, pos) => arr.indexOf(item) === pos);\r\n }\r\n\r\n function merge(arr1: any[], arr2: any[]) {\r\n if (!arr1 || !arr2)\r\n return (arr1 || arr2 || []).slice();\r\n\r\n return distinct(arr1.concat(arr2));\r\n }\r\n\r\n function registerType(target: any, name: string, intf: any[]) {\r\n if (name != null) {\r\n target.__typeName = name;\r\n target.__assembly = ss.__assemblies['App'];\r\n target.__assembly.__types[name] = target;\r\n }\r\n else if (!target.__typeName)\r\n target.__register = true;\r\n\r\n if (intf)\r\n target.__interfaces = merge(target.__interfaces, intf);\r\n }\r\n\r\n export function registerClass(nameOrIntf?: string | any[], intf2?: any[]) {\r\n return function (target: Function) {\r\n if (typeof nameOrIntf == \"string\")\r\n registerType(target, nameOrIntf, intf2);\r\n else\r\n registerType(target, null, nameOrIntf);\r\n\r\n (target as any).__class = true;\r\n }\r\n }\r\n\r\n export function registerInterface(nameOrIntf?: string | any[], intf2?: any[]) {\r\n return function (target: Function) {\r\n\r\n if (typeof nameOrIntf == \"string\")\r\n registerType(target, nameOrIntf, intf2);\r\n else\r\n registerType(target, null, nameOrIntf);\r\n\r\n (target as any).__interface = true;\r\n (target as any).isAssignableFrom = function (type: any) {\r\n return (ss as any).contains((ss as any).getInterfaces(type), this);\r\n };\r\n }\r\n }\r\n\r\n export function registerEditor(nameOrIntf?: string | any[], intf2?: any[]) {\r\n return registerClass(nameOrIntf, intf2);\r\n }\r\n }\r\n}\r\n\r\nnamespace System.ComponentModel {\r\n\r\n @Serenity.Decorators.registerClass('System.DisplayNameAttribute')\r\n export class DisplayNameAttribute {\r\n constructor(public displayName: string) {\r\n }\r\n }\r\n}\r\n\r\nnamespace Serenity {\r\n\r\n @Decorators.registerInterface('Serenity.ISlickFormatter')\r\n export class ISlickFormatter {\r\n }\r\n\r\n function Attr(name: string) {\r\n return Decorators.registerClass('Serenity.' + name + 'Attribute')\r\n }\r\n\r\n @Attr('Category')\r\n export class CategoryAttribute {\r\n constructor(public category: string) {\r\n }\r\n }\r\n\r\n @Attr('ColumnsKey')\r\n export class ColumnsKeyAttribute {\r\n constructor(public value: string) {\r\n }\r\n }\r\n\r\n\r\n @Attr('CssClass')\r\n export class CssClassAttribute {\r\n constructor(public cssClass: string) {\r\n }\r\n }\r\n\r\n @Attr('DefaultValue')\r\n export class DefaultValueAttribute {\r\n constructor(public value: any) {\r\n }\r\n }\r\n\r\n @Attr('DialogType')\r\n export class DialogTypeAttribute {\r\n constructor(public value: WidgetDialogClass) {\r\n }\r\n }\r\n\r\n @Attr('Editor')\r\n export class EditorAttribute {\r\n constructor() { }\r\n key: string;\r\n }\r\n\r\n @Attr('EditorOption')\r\n export class EditorOptionAttribute {\r\n constructor(public key: string, public value: any) {\r\n }\r\n }\r\n\r\n @Decorators.registerClass('Serenity.EditorTypeAttributeBase')\r\n export class EditorTypeAttributeBase {\r\n constructor(public editorType: string) {\r\n }\r\n\r\n public setParams(editorParams: any): void {\r\n }\r\n }\r\n\r\n @Attr('EditorType')\r\n export class EditorTypeAttribute extends EditorTypeAttributeBase {\r\n constructor(editorType: string) {\r\n super(editorType);\r\n }\r\n }\r\n\r\n @Attr('Element')\r\n export class ElementAttribute {\r\n constructor(public value: string) {\r\n }\r\n }\r\n\r\n @Attr('EntityType')\r\n export class EntityTypeAttribute {\r\n constructor(public value: string) {\r\n }\r\n }\r\n\r\n @Attr('EnumKey')\r\n export class EnumKeyAttribute {\r\n constructor(public value: string) {\r\n }\r\n }\r\n\r\n @Attr('Flexify')\r\n export class FlexifyAttribute {\r\n constructor(public value = true) {\r\n }\r\n }\r\n\r\n @Attr('Filterable')\r\n export class FilterableAttribute {\r\n constructor(public value = true) {\r\n }\r\n }\r\n\r\n @Attr('FormKey')\r\n export class FormKeyAttribute {\r\n constructor(public value: string) {\r\n }\r\n }\r\n\r\n @Attr('GeneratedCode')\r\n export class GeneratedCodeAttribute {\r\n constructor(public origin?: string) {\r\n }\r\n }\r\n\r\n @Attr('Hidden')\r\n export class HiddenAttribute {\r\n constructor() {\r\n }\r\n }\r\n\r\n @Attr('Hint')\r\n export class HintAttribute {\r\n constructor(public hint: string) {\r\n }\r\n }\r\n\r\n @Attr('IdProperty')\r\n export class IdPropertyAttribute {\r\n constructor(public value: string) {\r\n }\r\n }\r\n\r\n @Attr('Insertable')\r\n export class InsertableAttribute {\r\n constructor(public value = true) {\r\n }\r\n }\r\n\r\n @Attr('IsActiveProperty')\r\n export class IsActivePropertyAttribute {\r\n constructor(public value: string) {\r\n }\r\n }\r\n\r\n @Attr('ItemName')\r\n export class ItemNameAttribute {\r\n constructor(public value: string) {\r\n }\r\n }\r\n\r\n @Attr('LocalTextPrefix')\r\n export class LocalTextPrefixAttribute {\r\n constructor(public value: string) {\r\n }\r\n }\r\n\r\n @Attr('Maximizable')\r\n export class MaximizableAttribute {\r\n constructor(public value = true) {\r\n }\r\n }\r\n\r\n @Attr('MaxLength')\r\n export class MaxLengthAttribute {\r\n constructor(public maxLength: number) {\r\n }\r\n }\r\n\r\n @Attr('NameProperty')\r\n export class NamePropertyAttribute {\r\n constructor(public value: string) {\r\n }\r\n }\r\n\r\n @Attr('OneWay')\r\n export class OneWayAttribute {\r\n }\r\n\r\n @Attr('Option')\r\n export class OptionAttribute {\r\n constructor() {\r\n }\r\n }\r\n\r\n @Attr('OptionsType')\r\n export class OptionsTypeAttribute {\r\n constructor(public value: Function) {\r\n }\r\n }\r\n\r\n @Attr('Panel')\r\n export class PanelAttribute {\r\n constructor(public value = true) {\r\n }\r\n }\r\n\r\n @Attr('Placeholder')\r\n export class PlaceholderAttribute {\r\n constructor(public value: string) {\r\n }\r\n }\r\n\r\n @Attr('ReadOnly')\r\n export class ReadOnlyAttribute {\r\n constructor(public value = true) {\r\n }\r\n }\r\n\r\n @Attr('Required')\r\n export class RequiredAttribute {\r\n constructor(public isRequired = true) {\r\n }\r\n }\r\n\r\n @Attr('Resizable')\r\n export class ResizableAttribute {\r\n constructor(public value = true) {\r\n }\r\n }\r\n\r\n @Attr('Responsive')\r\n export class ResponsiveAttribute {\r\n constructor(public value = true) {\r\n }\r\n }\r\n\r\n @Attr('Service')\r\n export class ServiceAttribute {\r\n constructor(public value: string) {\r\n }\r\n }\r\n\r\n @Attr('Updatable')\r\n export class UpdatableAttribute {\r\n constructor(public value = true) {\r\n }\r\n }\r\n}\r\n\r\nnamespace Serenity.Decorators {\r\n\r\n export function registerFormatter(nameOrIntf: string | any[] = [ISlickFormatter], intf2: any[] = [ISlickFormatter]) {\r\n return registerClass(nameOrIntf, intf2);\r\n }\r\n\r\n export function addAttribute(type: any, attr: any) {\r\n type.__metadata = type.__metadata || {};\r\n type.__metadata.attr = type.__metadata.attr || [];\r\n type.__metadata.attr.push(attr);\r\n }\r\n\r\n export function dialogType(value: WidgetDialogClass) {\r\n return function (target: Function) {\r\n addAttribute(target, new DialogTypeAttribute(value));\r\n }\r\n }\r\n\r\n export function editor(key?: string) {\r\n return function (target: Function) {\r\n var attr = new EditorAttribute();\r\n if (key !== undefined)\r\n attr.key = key;\r\n addAttribute(target, attr);\r\n }\r\n }\r\n\r\n export function element(value: string) {\r\n return function (target: Function) {\r\n addAttribute(target, new ElementAttribute(value));\r\n }\r\n }\r\n\r\n export function enumKey(value: string) {\r\n return function (target: Function) {\r\n addAttribute(target, new EnumKeyAttribute(value));\r\n }\r\n }\r\n\r\n export function flexify(value = true) {\r\n return function (target: Function) {\r\n addAttribute(target, new FlexifyAttribute(value));\r\n }\r\n }\r\n\r\n export function registerEnum(target: any, enumKey?: string, name?: string) {\r\n if (!target.__enum) {\r\n Object.defineProperty(target, '__enum', {\r\n get: function () {\r\n return true;\r\n }\r\n });\r\n\r\n target.prototype = target.prototype || {};\r\n for (var k of Object.keys(target))\r\n if (isNaN(Q.parseInteger(k)) && target[k] != null && !isNaN(Q.parseInteger(target[k])))\r\n target.prototype[k] = target[k];\r\n\r\n if (name != null) {\r\n target.__typeName = name;\r\n target.__assembly = ss.__assemblies['App'];\r\n target.__assembly.__types[name] = target;\r\n }\r\n else if (!target.__typeName)\r\n target.__register = true;\r\n\r\n if (enumKey)\r\n addAttribute(target, new EnumKeyAttribute(enumKey));\r\n }\r\n }\r\n\r\n export function registerEnumType(target: any, name?: string, enumKey?: string) {\r\n registerEnum(target, Q.coalesce(enumKey, name), name);\r\n }\r\n\r\n export function filterable(value = true) {\r\n return function (target: Function) {\r\n addAttribute(target, new FilterableAttribute(value));\r\n }\r\n }\r\n\r\n export function itemName(value: string) {\r\n return function (target: Function) {\r\n addAttribute(target, new ItemNameAttribute(value));\r\n }\r\n }\r\n\r\n export function maximizable(value = true) {\r\n return function (target: Function) {\r\n addAttribute(target, new MaximizableAttribute(value));\r\n }\r\n }\r\n\r\n export function option() {\r\n return function (target: Object, propertyKey: string): void {\r\n\r\n var isGetSet = Q.startsWith(propertyKey, 'get_') || Q.startsWith(propertyKey, 'set_');\r\n var memberName = isGetSet ? propertyKey.substr(4) : propertyKey;\r\n\r\n var type: any = target.constructor;\r\n type.__metadata = type.__metadata || {};\r\n type.__metadata.members = type.__metadata.members || [];\r\n let member: any = undefined;\r\n for (var m of type.__metadata.members) {\r\n if (m.name == memberName) {\r\n member = m;\r\n break;\r\n }\r\n }\r\n\r\n if (!member) {\r\n member = {\r\n attr: [new Serenity.OptionAttribute()],\r\n name: memberName,\r\n returnType: Object\r\n };\r\n\r\n if (isGetSet) {\r\n member.type = 16;\r\n\r\n member.getter = {\r\n name: 'get_' + memberName,\r\n type: 8,\r\n sname: 'get_' + memberName,\r\n returnType: Object,\r\n params: []\r\n };\r\n\r\n member.setter = {\r\n name: 'set_' + memberName,\r\n type: 8,\r\n sname: 'set_' + memberName,\r\n returnType: Object,\r\n params: [Object]\r\n };\r\n }\r\n else {\r\n member.type = 4;\r\n member.sname = memberName;\r\n }\r\n\r\n type.__metadata.members.push(member);\r\n }\r\n else {\r\n member.attr = member.attr || [];\r\n member.attr.push(new OptionAttribute());\r\n }\r\n }\r\n }\r\n\r\n export function optionsType(value: Function) {\r\n return function (target: Function) {\r\n addAttribute(target, new OptionsTypeAttribute(value));\r\n }\r\n }\r\n\r\n export function panel(value = true) {\r\n return function (target: Function) {\r\n addAttribute(target, new PanelAttribute(value));\r\n }\r\n }\r\n\r\n export function resizable(value = true) {\r\n return function (target: Function) {\r\n addAttribute(target, new ResizableAttribute(value));\r\n }\r\n }\r\n\r\n export function responsive(value = true) {\r\n return function (target: Function) {\r\n addAttribute(target, new ResponsiveAttribute(value));\r\n }\r\n }\r\n\r\n export function service(value: string) {\r\n return function (target: Function) {\r\n addAttribute(target, new ServiceAttribute(value));\r\n }\r\n }\r\n}","namespace Serenity {\r\n\r\n export function Criteria(field: string): any[] {\r\n return [field];\r\n }\r\n\r\n export namespace Criteria {\r\n import C = Criteria;\r\n\r\n export function isEmpty(c: any[]): boolean {\r\n return c == null ||\r\n c.length === 0 ||\r\n (c.length === 1 &&\r\n typeof c[0] == \"string\" &&\r\n c[0].length === 0);\r\n }\r\n\r\n export function join(c1: any[], op: string, c2: any[]): any[] {\r\n if (C.isEmpty(c1))\r\n return c2;\r\n\r\n if (C.isEmpty(c2))\r\n return c1;\r\n\r\n return [c1, op, c2];\r\n }\r\n\r\n export function paren(c: any[]): any[] {\r\n return C.isEmpty(c) ? c : ['()', c];\r\n }\r\n\r\n export function and(c1: any[], c2: any[], ...rest: any[][]): any[] {\r\n var result = join(c1, 'and', c2);\r\n if (rest) {\r\n for (let k of rest)\r\n result = join(result, 'and', k);\r\n }\r\n\r\n return result;\r\n }\r\n\r\n export function or(c1: any[], c2: any[], ...rest: any[][]): any[] {\r\n var result = join(c1, 'or', c2);\r\n\r\n if (rest) {\r\n for (let k of rest)\r\n result = join(result, 'or', k);\r\n }\r\n\r\n return result;\r\n }\r\n\r\n export const enum Operator {\r\n paren = \"()\",\r\n not = \"not\",\r\n isNull = \"is null\",\r\n isNotNull = \"is not null\",\r\n exists = \"exists\",\r\n and = \"and\",\r\n or = \"or\",\r\n xor = \"xor\",\r\n eq = \"=\",\r\n ne = \"!=\",\r\n gt = \">\",\r\n ge = \">=\",\r\n lt = \"<\",\r\n le = \"<=\",\r\n in = \"in\",\r\n notIn = \"not in\",\r\n like = \"like\",\r\n notLike = \"not like\"\r\n }\r\n }\r\n}","namespace Serenity {\r\n\r\n export interface QuickSearchField {\r\n name: string;\r\n title: string;\r\n }\r\n\r\n export interface GridRowSelectionMixinOptions {\r\n selectable?: (item: any) => boolean;\r\n }\r\n\r\n @Decorators.registerClass('Serenity.GridRowSelectionMixin')\r\n export class GridRowSelectionMixin {\r\n\r\n private idField: string;\r\n private include: Q.Dictionary<boolean>;\r\n private grid: IDataGrid;\r\n private options: GridRowSelectionMixinOptions;\r\n\r\n constructor(grid: IDataGrid, options?: GridRowSelectionMixinOptions) {\r\n\r\n this.include = {};\r\n this.grid = grid;\r\n this.idField = (grid.getView() as any).idField;\r\n this.options = options || {};\r\n\r\n grid.getGrid().onClick.subscribe((e, p) => {\r\n if ($(e.target).hasClass('select-item')) {\r\n e.preventDefault();\r\n var item = grid.getView().getItem(p.row);\r\n var id = item[this.idField].toString();\r\n\r\n if (this.include[id]) {\r\n delete this.include[id];\r\n }\r\n else {\r\n this.include[id] = true;\r\n }\r\n\r\n for (var i = 0; i < (grid.getView() as any).getLength(); i++) {\r\n grid.getGrid().updateRow(i);\r\n }\r\n\r\n this.updateSelectAll();\r\n }\r\n });\r\n\r\n grid.getGrid().onHeaderClick.subscribe((e1, u) => {\r\n if (e1.isDefaultPrevented()) {\r\n return;\r\n }\r\n if ($(e1.target).hasClass('select-all-items')) {\r\n e1.preventDefault();\r\n var view = grid.getView();\r\n if (Object.keys(this.include).length > 0) {\r\n (ss as any).clearKeys(this.include);\r\n }\r\n else {\r\n var items = grid.getView().getItems();\r\n for (var x of items.filter(this.isSelectable.bind(this))) {\r\n var id1 = x[this.idField];\r\n this.include[id1] = true;\r\n }\r\n }\r\n this.updateSelectAll();\r\n grid.getView().setItems(grid.getView().getItems(), true);\r\n }\r\n });\r\n\r\n (grid.getView() as any).onRowsChanged.subscribe(() => {\r\n return this.updateSelectAll();\r\n });\r\n }\r\n\r\n updateSelectAll(): void {\r\n var selectAllButton = this.grid.getElement()\r\n .find('.select-all-header .slick-column-name .select-all-items');\r\n\r\n if (selectAllButton) {\r\n var keys = Object.keys(this.include);\r\n selectAllButton.toggleClass('checked',\r\n keys.length > 0 &&\r\n this.grid.getView().getItems().filter(\r\n this.isSelectable.bind(this)).length <= keys.length);\r\n }\r\n }\r\n\r\n clear(): void {\r\n (ss as any).clearKeys(this.include);\r\n this.updateSelectAll();\r\n }\r\n\r\n resetCheckedAndRefresh(): void {\r\n this.include = {};\r\n this.updateSelectAll();\r\n this.grid.getView().populate();\r\n }\r\n\r\n selectKeys(keys: string[]): void {\r\n for (var k of keys) {\r\n this.include[k] = true;\r\n }\r\n\r\n this.updateSelectAll();\r\n }\r\n\r\n getSelectedKeys(): string[] {\r\n return Object.keys(this.include);\r\n }\r\n\r\n getSelectedAsInt32(): number[] {\r\n return Object.keys(this.include).map(function (x) {\r\n return parseInt(x, 10);\r\n });\r\n }\r\n\r\n getSelectedAsInt64(): number[] {\r\n return Object.keys(this.include).map(function (x) {\r\n return parseInt(x, 10);\r\n });\r\n }\r\n\r\n setSelectedKeys(keys: string[]): void {\r\n this.clear();\r\n for (var k of keys) {\r\n this.include[k] = true;\r\n }\r\n\r\n this.updateSelectAll();\r\n }\r\n\r\n private isSelectable(item: any) {\r\n return item && (\r\n this.options.selectable == null ||\r\n this.options.selectable(item));\r\n }\r\n\r\n static createSelectColumn(getMixin: () => GridRowSelectionMixin): Slick.Column {\r\n return {\r\n name: '<span class=\"select-all-items check-box no-float \"></span>',\r\n toolTip: ' ',\r\n field: '__select__',\r\n width: 27,\r\n minWidth: 27,\r\n headerCssClass: 'select-all-header',\r\n sortable: false,\r\n format: function (ctx) {\r\n var item = ctx.item;\r\n var mixin = getMixin();\r\n if (!mixin || !mixin.isSelectable(item)) {\r\n return '';\r\n }\r\n var isChecked = mixin.include[ctx.item[mixin.idField]];\r\n return '<span class=\"select-item check-box no-float ' + (isChecked ? ' checked' : '') + '\"></span>';\r\n }\r\n };\r\n }\r\n }\r\n\r\n export interface GridRadioSelectionMixinOptions {\r\n selectable?: (item: any) => boolean;\r\n }\r\n\r\n @Serenity.Decorators.registerClass('Serenity.GridRadioSelectionMixin')\r\n export class GridRadioSelectionMixin {\r\n\r\n private idField: string;\r\n private include: Q.Dictionary<boolean>;\r\n private grid: Serenity.IDataGrid;\r\n private options: GridRadioSelectionMixinOptions;\r\n\r\n constructor(grid: Serenity.IDataGrid, options?: GridRadioSelectionMixinOptions) {\r\n\r\n this.include = {};\r\n this.grid = grid;\r\n this.idField = (grid.getView() as any).idField;\r\n this.options = options || {};\r\n\r\n grid.getGrid().onClick.subscribe((e, p) => {\r\n if ($(e.target).hasClass('rad-select-item')) {\r\n e.preventDefault();\r\n var item = grid.getView().getItem(p.row);\r\n\r\n if (!this.isSelectable(item)) {\r\n return;\r\n }\r\n\r\n var id = item[this.idField].toString();\r\n\r\n if (this.include[id] == true) {\r\n (ss as any).clearKeys(this.include);\r\n }\r\n else {\r\n (ss as any).clearKeys(this.include);\r\n this.include[id] = true;\r\n }\r\n\r\n for (var i = 0; i < (grid.getView() as any).getLength(); i++) {\r\n grid.getGrid().updateRow(i);\r\n }\r\n }\r\n });\r\n }\r\n\r\n private isSelectable(item: any) {\r\n return item && (\r\n this.options.selectable == null ||\r\n this.options.selectable(item));\r\n }\r\n\r\n clear(): void {\r\n (ss as any).clearKeys(this.include);\r\n }\r\n\r\n resetCheckedAndRefresh(): void {\r\n this.include = {};\r\n this.grid.getView().populate();\r\n }\r\n\r\n getSelectedKey(): string {\r\n var items = Object.keys(this.include);\r\n if (items != null && items.length > 0) {\r\n return items[0];\r\n }\r\n\r\n return null;\r\n }\r\n\r\n getSelectedAsInt32(): number {\r\n var items = Object.keys(this.include).map(function (x) {\r\n return parseInt(x, 10);\r\n });\r\n\r\n if (items != null && items.length > 0) {\r\n return items[0];\r\n }\r\n\r\n return null;\r\n }\r\n\r\n getSelectedAsInt64(): number {\r\n var items = Object.keys(this.include).map(function (x) {\r\n return parseInt(x, 10);\r\n });\r\n\r\n if (items != null && items.length > 0) {\r\n return items[0];\r\n }\r\n\r\n return null;\r\n }\r\n\r\n setSelectedKey(key: string): void {\r\n this.clear();\r\n this.include[key] = true;\r\n }\r\n\r\n static createSelectColumn(getMixin: () => Serenity.GridRadioSelectionMixin): Slick.Column {\r\n return {\r\n name: '',\r\n toolTip: ' ',\r\n field: '__select__',\r\n width: 27,\r\n minWidth: 27,\r\n headerCssClass: '',\r\n sortable: false,\r\n formatter: function (row, cell, value, column, item) {\r\n var mixin = getMixin();\r\n if (!mixin || !mixin.isSelectable(item)) {\r\n return '';\r\n }\r\n\r\n var isChecked = mixin.include[item[mixin.idField]];\r\n return '<input type=\"radio\" name=\"radio-selection-group\" class=\"rad-select-item no-float\" style=\"cursor: pointer;width: 13px; height:13px;\" ' + (isChecked ? ' checked' : '') + ' /> ';\r\n }\r\n };\r\n }\r\n }\r\n\r\n export namespace GridSelectAllButtonHelper {\r\n export function update(grid: IDataGrid, getSelected: (p1: any) => boolean): void {\r\n var toolbar = (grid as any).element.children('.s-Toolbar') as JQuery;\r\n if (toolbar.length === 0) {\r\n return;\r\n }\r\n var btn = toolbar.getWidget(Toolbar).findButton('select-all-button');\r\n var items = grid.getView().getItems();\r\n btn.toggleClass('checked', items.length > 0 && !items.some(function (x) {\r\n return !getSelected(x);\r\n }));\r\n }\r\n\r\n export function define(getGrid: () => IDataGrid, getId: (p1: any) => any,\r\n getSelected: (p1: any) => boolean,\r\n setSelected: (p1: any, p2: boolean) => void,\r\n text?: string, onClick?: () => void): ToolButton {\r\n\r\n if (text == null) {\r\n text = Q.coalesce(Q.tryGetText('Controls.CheckTreeEditor.SelectAll'),\r\n 'Select All');\r\n }\r\n return {\r\n title: text,\r\n cssClass: 'select-all-button',\r\n onClick: function () {\r\n var grid = getGrid();\r\n var view = grid.getView();\r\n var btn = (grid as any).element.children('.s-Toolbar')\r\n .getWidget(Toolbar).findButton('select-all-button');\r\n var makeSelected = !btn.hasClass('checked');\r\n view.beginUpdate();\r\n try {\r\n for (var item of view.getItems()) {\r\n setSelected(item, makeSelected);\r\n view.updateItem(getId(item), item);\r\n }\r\n onClick && onClick();\r\n }\r\n finally {\r\n view.endUpdate();\r\n }\r\n\r\n btn.toggleClass('checked', makeSelected);\r\n }\r\n };\r\n }\r\n }\r\n\r\n export namespace GridUtils {\r\n export function addToggleButton(toolDiv: JQuery, cssClass: string,\r\n callback: (p1: boolean) => void, hint: string, initial?: boolean): void {\r\n\r\n var div = $('<div><a href=\"#\"></a></div>')\r\n .addClass('s-ToggleButton').addClass(cssClass)\r\n .prependTo(toolDiv);\r\n div.children('a').click(function (e) {\r\n e.preventDefault();\r\n div.toggleClass('pressed');\r\n var pressed = div.hasClass('pressed');\r\n callback && callback(pressed);\r\n }).attr('title', Q.coalesce(hint, ''));\r\n if (initial) {\r\n div.addClass('pressed');\r\n }\r\n }\r\n\r\n export function addIncludeDeletedToggle(toolDiv: JQuery,\r\n view: Slick.RemoteView<any>, hint?: string, initial?: boolean): void {\r\n\r\n var includeDeleted = false;\r\n var oldSubmit = view.onSubmit;\r\n view.onSubmit = function (v) {\r\n v.params.IncludeDeleted = includeDeleted;\r\n if (oldSubmit != null) {\r\n return oldSubmit(v);\r\n }\r\n return true;\r\n };\r\n\r\n if (hint == null) \r\n hint = Q.text('Controls.EntityGrid.IncludeDeletedToggle');\r\n \r\n addToggleButton(toolDiv, 's-IncludeDeletedToggle',\r\n function (pressed) {\r\n includeDeleted = pressed;\r\n view.seekToPage = 1;\r\n view.populate();\r\n }, hint, initial);\r\n toolDiv.bind('remove', function () {\r\n view.onSubmit = null;\r\n oldSubmit = null;\r\n });\r\n }\r\n\r\n export function addQuickSearchInput(toolDiv: JQuery,\r\n view: Slick.RemoteView<any>, fields?: QuickSearchField[]): void {\r\n\r\n var oldSubmit = view.onSubmit;\r\n var searchText = '';\r\n var searchField = '';\r\n view.onSubmit = function (v) {\r\n if (searchText != null && searchText.length > 0) {\r\n v.params.ContainsText = searchText;\r\n }\r\n else {\r\n delete v.params['ContainsText'];\r\n }\r\n if (searchField != null && searchField.length > 0) {\r\n v.params.ContainsField = searchField;\r\n }\r\n else {\r\n delete v.params['ContainsField'];\r\n }\r\n\r\n if (oldSubmit != null) \r\n return oldSubmit(v);\r\n \r\n return true;\r\n };\r\n\r\n var lastDoneEvent: any = null;\r\n addQuickSearchInputCustom(toolDiv, (field, query, done) => {\r\n searchText = query;\r\n searchField = field;\r\n view.seekToPage = 1;\r\n lastDoneEvent = done;\r\n view.populate();\r\n }, fields);\r\n\r\n view.onDataLoaded.subscribe(function (e, ui) {\r\n if (lastDoneEvent != null) {\r\n lastDoneEvent(view.getLength() > 0);\r\n lastDoneEvent = null;\r\n }\r\n });\r\n }\r\n\r\n export function addQuickSearchInputCustom(container: JQuery,\r\n onSearch: (p1: string, p2: string, done: (p3: boolean) => void) => void,\r\n fields?: QuickSearchField[]) {\r\n\r\n var div = $('<div><input type=\"text\"/></div>')\r\n .addClass('s-QuickSearchBar').prependTo(container);\r\n\r\n if (fields != null && fields.length > 0) {\r\n div.addClass('has-quick-search-fields');\r\n }\r\n\r\n new QuickSearchInput(div.children(), {\r\n fields: fields,\r\n onSearch: onSearch as any\r\n });\r\n }\r\n\r\n export function makeOrderable(grid: Slick.Grid,\r\n handleMove: (p1: any, p2: number) => void): void {\r\n\r\n var moveRowsPlugin = new Slick.RowMoveManager({ cancelEditOnDrag: true });\r\n moveRowsPlugin.onBeforeMoveRows.subscribe(function (e, data) {\r\n for (var i = 0; !!(i < data.rows.length); i++) {\r\n if (!!(data.rows[i] === data.insertBefore ||\r\n data.rows[i] === data.insertBefore - 1)) {\r\n e.stopPropagation();\r\n return false;\r\n }\r\n }\r\n\r\n return true;\r\n });\r\n\r\n moveRowsPlugin.onMoveRows.subscribe(function (e1, data1) {\r\n handleMove(data1.rows, data1.insertBefore);\r\n try {\r\n grid.setSelectedRows([]);\r\n }\r\n catch ($t1) {\r\n }\r\n });\r\n grid.registerPlugin(moveRowsPlugin);\r\n }\r\n\r\n export function makeOrderableWithUpdateRequest(grid: DataGrid<any, any>,\r\n getId: (p1: any) => number, getDisplayOrder: (p1: any) => any, service: string,\r\n getUpdateRequest: (p1: number, p2: number) => SaveRequest<any>): void {\r\n\r\n makeOrderable(grid.slickGrid, function (rows, insertBefore) {\r\n if (rows.length === 0) {\r\n return;\r\n }\r\n\r\n var order: number;\r\n var index = insertBefore;\r\n if (index < 0) {\r\n order = 1;\r\n }\r\n else if (insertBefore >= grid.rowCount()) {\r\n order = Q.coalesce(getDisplayOrder(\r\n grid.itemAt(grid.rowCount() - 1)), 0);\r\n if (order === 0) {\r\n order = insertBefore + 1;\r\n }\r\n else {\r\n order = order + 1;\r\n }\r\n }\r\n else {\r\n order = Q.coalesce(getDisplayOrder(\r\n grid.itemAt(insertBefore)), 0);\r\n if (order === 0) {\r\n order = insertBefore + 1;\r\n }\r\n }\r\n\r\n var i = 0;\r\n var next: any = null;\r\n next = function () {\r\n Q.serviceCall({\r\n service: service,\r\n request: getUpdateRequest(getId(\r\n grid.itemAt(rows[i])), order++),\r\n onSuccess: function (response) {\r\n i++;\r\n if (i < rows.length) {\r\n next();\r\n }\r\n else {\r\n grid.view.populate();\r\n }\r\n }\r\n });\r\n };\r\n next();\r\n });\r\n }\r\n }\r\n\r\n export namespace PropertyItemSlickConverter {\r\n export function toSlickColumns(items: PropertyItem[]): Slick.Column[] {\r\n var result: Slick.Column[] = [];\r\n if (items == null) {\r\n return result;\r\n }\r\n for (var i = 0; i < items.length; i++) {\r\n result.push(toSlickColumn(items[i]));\r\n }\r\n return result;\r\n }\r\n\r\n export function toSlickColumn(item: PropertyItem): Slick.Column {\r\n var result: Slick.Column = {\r\n field: item.name,\r\n sourceItem: item,\r\n cssClass: item.cssClass,\r\n headerCssClass: item.headerCssClass,\r\n sortable: item.sortable !== false,\r\n sortOrder: Q.coalesce(item.sortOrder, 0),\r\n width: item.width != null ? item.width : 80,\r\n minWidth: Q.coalesce(item.minWidth, 30),\r\n maxWidth: (item.maxWidth == null || item.maxWidth === 0) ? null : item.maxWidth,\r\n resizable: item.resizable == null || !!item.resizable\r\n };\r\n\r\n result.visible = item.visible !== false && item.filterOnly !== true &&\r\n (item.readPermission == null || Q.Authorization.hasPermission(item.readPermission));\r\n\r\n var name = Q.tryGetText(item.title);\r\n if (name == null)\r\n name = item.title;\r\n result.name = name;\r\n\r\n if (item.alignment != null && item.alignment.length > 0) {\r\n if (!Q.isEmptyOrNull(result.cssClass)) {\r\n result.cssClass += ' align-' + item.alignment;\r\n }\r\n else {\r\n result.cssClass = 'align-' + item.alignment;\r\n }\r\n }\r\n\r\n if (item.formatterType != null && item.formatterType.length > 0) {\r\n\r\n var formatter = (ss as any).cast((ss as any).createInstance(\r\n Serenity.FormatterTypeRegistry.get(item.formatterType)), Serenity.ISlickFormatter);\r\n\r\n if (item.formatterParams != null) {\r\n ReflectionOptionsSetter.set(formatter, item.formatterParams);\r\n }\r\n\r\n var initializer = (ss as any).safeCast(formatter, Serenity.IInitializeColumn);\r\n if (initializer != null) {\r\n initializer.initializeColumn(result);\r\n }\r\n\r\n result.format = (ctx) => formatter.format(ctx);\r\n }\r\n\r\n return result;\r\n }\r\n }\r\n\r\n export namespace SlickFormatting {\r\n export function getEnumText(enumKey: string, name: string): string {\r\n return Serenity.EnumFormatter.getText(enumKey, name);\r\n }\r\n\r\n export function treeToggle<TItem>(getView: () => Slick.RemoteView<TItem>, getId: (x: TItem) => any,\r\n formatter: Slick.Format): Slick.Format {\r\n return function (ctx: Slick.FormatterContext) {\r\n var text = formatter(ctx);\r\n var view = getView();\r\n var indent = Q.coalesce(ctx.item._indent, 0);\r\n var spacer = '<span class=\"s-TreeIndent\" style=\"width:' + 15 * indent + 'px\"></span>';\r\n var id = getId(ctx.item);\r\n var idx = view.getIdxById(id);\r\n var next = view.getItemByIdx(idx + 1);\r\n if (next != null) {\r\n var nextIndent = Q.coalesce(next._indent, 0);\r\n if (nextIndent > indent) {\r\n if (!!!!ctx.item._collapsed) {\r\n return spacer + '<span class=\"s-TreeToggle s-TreeExpand\"></span>' + text;\r\n }\r\n else {\r\n return spacer + '<span class=\"s-TreeToggle s-TreeCollapse\"></span>' + text;\r\n }\r\n }\r\n }\r\n return spacer + '<span class=\"s-TreeToggle\"></span>' + text;\r\n };\r\n }\r\n\r\n export function date(format?: string): Slick.Format {\r\n if (format == null) {\r\n format = Q.Culture.dateFormat;\r\n }\r\n\r\n return function (ctx: Slick.FormatterContext) {\r\n return Q.htmlEncode(Serenity.DateFormatter.format(ctx.value, format));\r\n };\r\n }\r\n\r\n export function dateTime(format?: string): Slick.Format {\r\n if (format == null) {\r\n format = Q.Culture.dateTimeFormat;\r\n }\r\n return function (ctx: Slick.FormatterContext) {\r\n return Q.htmlEncode(Serenity.DateFormatter.format(ctx.value, format));\r\n };\r\n }\r\n\r\n export function checkBox(): Slick.Format {\r\n return function (ctx: Slick.FormatterContext) {\r\n return '<span class=\"check-box no-float ' + (!!ctx.value ? ' checked' : '') + '\"></span>';\r\n };\r\n }\r\n\r\n export function number(format: string): Slick.Format {\r\n return function (ctx: Slick.FormatterContext) {\r\n return Serenity.NumberFormatter.format(ctx.value, format);\r\n };\r\n }\r\n\r\n export function getItemType(link: JQuery): string {\r\n return link.data('item-type');\r\n }\r\n\r\n export function getItemId(link: JQuery): string {\r\n var value = link.data('item-id');\r\n return value == null ? null : value.toString();\r\n }\r\n\r\n export function itemLinkText(itemType: string, id: any, text: any,\r\n extraClass: string, encode: boolean): string {\r\n return '<a' + (id != null ? (' href=\"#' + Q.replaceAll(itemType, '.', '-') +\r\n '/' + id + '\"') : '') + ' data-item-type=\"' +\r\n Q.attrEncode(itemType) + '\"' + ' data-item-id=\"' +\r\n Q.attrEncode(id) + '\"' + ' class=\"s-EditLink s-' +\r\n Q.replaceAll(itemType, '.', '-') + 'Link' +\r\n (Q.isEmptyOrNull(extraClass) ? '' : (' ' + extraClass)) + '\">' +\r\n (encode ? Q.htmlEncode(Q.coalesce(text, '')) : Q.coalesce(text, '')) + '</a>';\r\n }\r\n\r\n export function itemLink(itemType: string, idField: string, getText: Slick.Format,\r\n cssClass?: Slick.Format, encode?: boolean): Slick.Format {\r\n return function (ctx: Slick.FormatterContext) {\r\n return itemLinkText(itemType, ctx.item[idField],\r\n (getText == null ? ctx.value : getText(ctx)),\r\n (cssClass == null ? '' : cssClass(ctx)), encode);\r\n };\r\n }\r\n }\r\n\r\n export namespace SlickHelper {\r\n export function setDefaults(columns: Slick.Column[], localTextPrefix?: string): any {\r\n for (var col of columns) {\r\n col.sortable = (col.sortable != null ? col.sortable : true);\r\n var id = col.id;\r\n if (id == null) {\r\n id = col.field;\r\n }\r\n col.id = id;\r\n\r\n if (localTextPrefix != null && col.id != null &&\r\n (col.name == null || Q.startsWith(col.name, '~'))) {\r\n var key = (col.name != null ? col.name.substr(1) : col.id);\r\n col.name = Q.text(localTextPrefix + key);\r\n }\r\n\r\n if (col.formatter == null && col.format != null) {\r\n col.formatter = convertToFormatter(col.format);\r\n }\r\n else if (col.formatter == null) {\r\n col.formatter = function (row, cell, value, column, item) {\r\n return Q.htmlEncode(value);\r\n };\r\n }\r\n }\r\n\r\n return columns;\r\n }\r\n\r\n export function convertToFormatter(format: Slick.Format): Slick.ColumnFormatter {\r\n if (format == null) {\r\n return null;\r\n }\r\n else {\r\n return function (row: number, cell: number, value: any, column: Slick.Column, item: any) {\r\n return format({\r\n row: row,\r\n cell: cell,\r\n value: value,\r\n column: column,\r\n item: item\r\n });\r\n }\r\n }\r\n }\r\n }\r\n\r\n export namespace SlickTreeHelper {\r\n export function filterCustom<TItem>(item: TItem, getParent: (x: TItem) => any): boolean {\r\n var parent = getParent(item);\r\n var loop = 0;\r\n while (parent != null) {\r\n if (!!parent._collapsed) {\r\n return false;\r\n }\r\n parent = getParent(parent);\r\n if (loop++ > 1000) {\r\n throw new (ss as any).InvalidOperationException(\r\n 'Possible infinite loop, check parents has no circular reference!');\r\n }\r\n }\r\n return true;\r\n }\r\n\r\n export function filterById<TItem>(item: TItem, view: Slick.RemoteView<TItem>,\r\n getParentId: (x: TItem) => any): boolean {\r\n return filterCustom(item, function (x) {\r\n var parentId = getParentId(x);\r\n if (parentId == null) {\r\n return null;\r\n }\r\n return view.getItemById(parentId);\r\n });\r\n }\r\n\r\n export function setCollapsed<TItem>(items: TItem[], collapsed: boolean): void {\r\n if (items != null) {\r\n for (var item of items) {\r\n (item as any)._collapsed = collapsed;\r\n }\r\n }\r\n }\r\n\r\n export function setCollapsedFlag<TItem>(item: TItem, collapsed: boolean): void {\r\n (item as any)._collapsed = collapsed;\r\n }\r\n\r\n export function setIndents<TItem>(items: TItem[], getId: (x: TItem) => any,\r\n getParentId: (x: TItem) => any, setCollapsed?: boolean): void {\r\n var depth = 0;\r\n var depths = {};\r\n for (var line = 0; line < items.length; line++) {\r\n var item = items[line];\r\n if (line > 0) {\r\n var parentId = getParentId(item);\r\n if (parentId != null && parentId === getId(items[line - 1])) {\r\n depth += 1;\r\n }\r\n else if (parentId == null) {\r\n depth = 0;\r\n }\r\n else if (parentId !== getParentId(items[line - 1])) {\r\n if (depths[parentId] != null) {\r\n depth = depths[parentId] + 1;\r\n }\r\n else {\r\n depth = 0;\r\n }\r\n }\r\n }\r\n depths[getId(item)] = depth;\r\n (item as any)._indent = depth;\r\n if (setCollapsed != null) {\r\n (item as any)._collapsed = setCollapsed;\r\n }\r\n }\r\n }\r\n\r\n export function toggleClick<TItem>(e: JQueryEventObject, row: number, cell: number,\r\n view: Slick.RemoteView<TItem>, getId: (x: TItem) => any): void {\r\n var target = $(e.target);\r\n if (!target.hasClass('s-TreeToggle')) {\r\n return;\r\n }\r\n if (target.hasClass('s-TreeCollapse') || target.hasClass('s-TreeExpand')) {\r\n var item = view.getItem(row);\r\n if (item != null) {\r\n if (!!!item._collapsed) {\r\n item._collapsed = true;\r\n }\r\n else {\r\n item._collapsed = false;\r\n }\r\n view.updateItem(getId(item), item);\r\n }\r\n if (e.shiftKey) {\r\n view.beginUpdate();\r\n try {\r\n setCollapsed(view.getItems(), !!item._collapsed);\r\n view.setItems(view.getItems(), true);\r\n }\r\n finally {\r\n view.endUpdate();\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n}","namespace Serenity {\r\n export namespace LazyLoadHelper {\r\n let autoIncrement = 0;\r\n\r\n export function executeOnceWhenShown(element: JQuery, callback: Function) {\r\n autoIncrement++;\r\n var eventClass = 'ExecuteOnceWhenShown' + autoIncrement;\r\n var executed = false;\r\n if (element.is(':visible')) {\r\n callback();\r\n }\r\n else {\r\n var uiTabs = element.closest('.ui-tabs');\r\n if (uiTabs.length > 0) {\r\n uiTabs.bind('tabsactivate.' + eventClass, function (e) {\r\n if (element.is(':visible')) {\r\n uiTabs.unbind('tabsactivate.' + eventClass);\r\n if (!executed) {\r\n executed = true;\r\n element.unbind('shown.' + eventClass);\r\n callback();\r\n }\r\n }\r\n });\r\n }\r\n var bsTabs = element.closest('.nav-tabs');\r\n if (bsTabs.length > 0) {\r\n bsTabs.one('shown.bs.tab', e => {\r\n if (!executed && element.is(':visible')) {\r\n executed = true;\r\n callback();\r\n }\r\n });\r\n }\r\n var dialog: JQuery;\r\n if (element.hasClass('ui-dialog')) {\r\n dialog = element.children('.ui-dialog-content');\r\n }\r\n else {\r\n dialog = element.closest('.ui-dialog-content, .s-TemplatedDialog');\r\n }\r\n if (dialog.length > 0) {\r\n dialog.bind('dialogopen.' + eventClass + ' panelopen.' + eventClass, function () {\r\n dialog.unbind('dialogopen.' + eventClass);\r\n dialog.unbind('panelopen.' + eventClass);\r\n if (element.is(':visible') && !executed) {\r\n executed = true;\r\n element.unbind('shown.' + eventClass);\r\n callback();\r\n }\r\n });\r\n }\r\n element.bind('shown.' + eventClass, function () {\r\n if (element.is(':visible')) {\r\n element.unbind('shown.' + eventClass);\r\n if (!executed) {\r\n executed = true;\r\n callback();\r\n }\r\n }\r\n });\r\n }\r\n }\r\n\r\n export function executeEverytimeWhenShown(element: JQuery, callback: Function, callNowIfVisible: boolean) {\r\n autoIncrement++;\r\n var eventClass = 'ExecuteEverytimeWhenShown' + autoIncrement;\r\n var wasVisible = element.is(':visible');\r\n\r\n if (wasVisible && callNowIfVisible) {\r\n callback();\r\n }\r\n\r\n var check = function (e: any) {\r\n if (element.is(':visible')) {\r\n if (!wasVisible) {\r\n wasVisible = true;\r\n callback();\r\n }\r\n }\r\n else {\r\n wasVisible = false;\r\n }\r\n };\r\n\r\n var uiTabs = element.closest('.ui-tabs');\r\n if (uiTabs.length > 0) {\r\n uiTabs.bind('tabsactivate.' + eventClass, check);\r\n }\r\n\r\n var dialog = element.closest('.ui-dialog-content, .s-TemplatedDialog');\r\n if (dialog.length > 0) {\r\n dialog.bind('dialogopen.' + eventClass + ' panelopen.' + eventClass, check);\r\n }\r\n\r\n element.bind('shown.' + eventClass, check);\r\n }\r\n }\r\n}","namespace Serenity {\r\n export namespace SubDialogHelper {\r\n export function bindToDataChange(dialog: any, owner: Serenity.Widget<any>,\r\n dataChange: (p1: any, p2: DataChangeInfo) => void, useTimeout?: boolean): any {\r\n var widgetName = (owner as any).widgetName;\r\n dialog.element.bind('ondatachange.' + widgetName, function (e: JQueryEventObject, dci: any) {\r\n if (useTimeout) {\r\n window.setTimeout(function () {\r\n dataChange(e, dci);\r\n }, 0);\r\n }\r\n else {\r\n dataChange(e, dci);\r\n }\r\n }).bind('remove.' + widgetName, function () {\r\n dialog.element.unbind('ondatachange.' + widgetName);\r\n });\r\n return dialog;\r\n }\r\n\r\n export function triggerDataChange(dialog: Serenity.Widget<any>): any {\r\n dialog.element.triggerHandler('ondatachange');\r\n return dialog;\r\n }\r\n\r\n export function triggerDataChanged(element: JQuery): JQuery {\r\n element.triggerHandler('ondatachange');\r\n return element;\r\n }\r\n\r\n export function bubbleDataChange(dialog: any, owner: Serenity.Widget<any>, useTimeout?: boolean): any {\r\n return bindToDataChange(dialog, owner, function (e, dci) {\r\n owner.element.triggerHandler('ondatachange');\r\n }, useTimeout);\r\n }\r\n\r\n export function cascade(cascadedDialog: any, ofElement: JQuery): any {\r\n cascadedDialog.element.one('dialogopen', function (e: JQueryEventObject) {\r\n cascadedDialog.element.dialog().dialog('option', 'position', cascadedDialogOffset(ofElement));\r\n });\r\n return cascadedDialog;\r\n }\r\n\r\n export function cascadedDialogOffset(element: JQuery): any {\r\n return { my: 'left top', at: 'left+20 top+20', of: element[0] };\r\n }\r\n }\r\n}","namespace Serenity {\r\n export namespace TabsExtensions {\r\n export function setDisabled(tabs: JQuery, tabKey: string, isDisabled: boolean) {\r\n if (!tabs)\r\n return;\r\n\r\n var ibk = indexByKey(tabs);\r\n if (!ibk)\r\n return;\r\n\r\n var index = ibk[tabKey];\r\n if (index == null) {\r\n return;\r\n }\r\n\r\n if (isDisabled && index === tabs.tabs('option', 'active')) {\r\n tabs.tabs('option', 'active', 0);\r\n }\r\n\r\n tabs.tabs(isDisabled ? 'disable' : 'enable', index);\r\n }\r\n\r\n export function toggle(tabs: JQuery, tabKey: string, visible: boolean) {\r\n if (!tabs)\r\n return;\r\n\r\n var ibk = indexByKey(tabs);\r\n if (!ibk)\r\n return;\r\n\r\n var index = ibk[tabKey];\r\n if (index == null) {\r\n return;\r\n }\r\n\r\n if (!visible && index === tabs.tabs('option', 'active')) {\r\n tabs.tabs('option', 'active', 0);\r\n }\r\n\r\n tabs.children('ul').children('li').eq(index).toggle(visible);\r\n }\r\n\r\n export function activeTabKey(tabs: JQuery) {\r\n var href = tabs.children('ul')\r\n .children('li')\r\n .eq(tabs.tabs('option', 'active'))\r\n .children('a')\r\n .attr('href')\r\n .toString();\r\n\r\n var prefix = '_Tab';\r\n var lastIndex = href.lastIndexOf(prefix);\r\n if (lastIndex >= 0) {\r\n href = href.substr(lastIndex + prefix.length);\r\n }\r\n return href;\r\n }\r\n\r\n export function indexByKey(tabs: JQuery): any {\r\n var indexByKey = tabs.data('indexByKey');\r\n if (!indexByKey) {\r\n indexByKey = {};\r\n tabs.children('ul').children('li').children('a').each(function (index, el) {\r\n var href = el.getAttribute('href').toString();\r\n var prefix = '_Tab';\r\n var lastIndex = href.lastIndexOf(prefix);\r\n if (lastIndex >= 0) {\r\n href = href.substr(lastIndex + prefix.length);\r\n }\r\n indexByKey[href] = index;\r\n });\r\n tabs.data('indexByKey', indexByKey);\r\n }\r\n\r\n return indexByKey;\r\n }\r\n \r\n export function selectTab(tabs: JQuery, tabKey: string) {\r\n var ibk = indexByKey(tabs);\r\n if (!ibk)\r\n return;\r\n var index = ibk[tabKey];\r\n if (index == null) {\r\n return;\r\n }\r\n if (index !== tabs.tabs('option', 'active')) {\r\n tabs.tabs('option', 'active', index);\r\n }\r\n }\r\n }\r\n}\r\n","namespace Serenity {\r\n export namespace UploadHelper {\r\n\r\n export function addUploadInput(options: UploadInputOptions): JQuery {\r\n options.container.addClass('fileinput-button');\r\n var uploadInput = $('<input/>').attr('type', 'file')\r\n .attr('name', options.inputName + '[]')\r\n .attr('data-url', Q.resolveUrl('~/File/TemporaryUpload'))\r\n .attr('multiple', 'multiple').appendTo(options.container);\r\n\r\n if (options.allowMultiple) {\r\n uploadInput.attr('multiple', 'multiple');\r\n }\r\n\r\n (uploadInput as any).fileupload({\r\n dataType: 'json',\r\n dropZone: options.zone,\r\n pasteZone: options.zone,\r\n done: function (e: JQueryEventObject, data: any) {\r\n var response = data.result;\r\n if (options.fileDone != null) {\r\n options.fileDone(response, data.files[0].name, data);\r\n }\r\n },\r\n start: function () {\r\n Q.blockUI(null);\r\n if (options.progress != null) {\r\n options.progress.show();\r\n }\r\n },\r\n stop: function () {\r\n Q.blockUndo();\r\n if (options.progress != null) {\r\n options.progress.hide();\r\n }\r\n },\r\n progress: function (e1: JQueryEventObject, data1: any) {\r\n if (options.progress != null) {\r\n var percent = data1.loaded / data1.total * 100;\r\n options.progress.children().css('width', percent.toString() + '%');\r\n }\r\n }\r\n });\r\n return uploadInput;\r\n }\r\n\r\n export function checkImageConstraints(file: UploadResponse,\r\n opt: ImageUploadEditorOptions): boolean {\r\n\r\n if (!file.IsImage && !opt.allowNonImage) {\r\n Q.alert(Q.text('Controls.ImageUpload.NotAnImageFile'));\r\n return false;\r\n }\r\n if (opt.minSize > 0 && file.Size < opt.minSize) {\r\n Q.alert(Q.format(Q.text('Controls.ImageUpload.UploadFileTooSmall'),\r\n UploadHelper.fileSizeDisplay(opt.minSize)));\r\n return false;\r\n }\r\n if (opt.maxSize > 0 && file.Size > opt.maxSize) {\r\n Q.alert(Q.format(Q.text('Controls.ImageUpload.UploadFileTooBig'),\r\n UploadHelper.fileSizeDisplay(opt.maxSize)));\r\n return false;\r\n }\r\n if (!file.IsImage) {\r\n return true;\r\n }\r\n if (opt.minWidth > 0 && file.Width < opt.minWidth) {\r\n Q.alert(Q.format(Q.text('Controls.ImageUpload.MinWidth'), opt.minWidth));\r\n return false;\r\n }\r\n if (opt.maxWidth > 0 && file.Width > opt.maxWidth) {\r\n Q.alert(Q.format(Q.text('Controls.ImageUpload.MaxWidth'), opt.maxWidth));\r\n return false;\r\n }\r\n if (opt.minHeight > 0 && file.Height < opt.minHeight) {\r\n Q.alert(Q.format(Q.text('Controls.ImageUpload.MinHeight'), opt.minHeight));\r\n return false;\r\n }\r\n if (opt.maxHeight > 0 && file.Height > opt.maxHeight) {\r\n Q.alert(Q.format(Q.text('Controls.ImageUpload.MaxHeight'), opt.maxHeight));\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n export function fileNameSizeDisplay(name: string, bytes: number): string {\r\n return name + ' (' + fileSizeDisplay(bytes) + ')';\r\n }\r\n\r\n export function fileSizeDisplay(bytes: number): string {\r\n var byteSize = (ss as any).round(bytes * 100 / 1024) * 0.01;\r\n var suffix = 'KB';\r\n if (byteSize >= 1024) {\r\n byteSize = (ss as any).round(byteSize * 100 / 1024) * 0.01;\r\n suffix = 'MB';\r\n }\r\n var sizeParts = byteSize.toString().split(String.fromCharCode(46));\r\n var value;\r\n if (sizeParts.length > 1) {\r\n value = sizeParts[0] + '.' + sizeParts[1].substr(0, 2);\r\n }\r\n else {\r\n value = sizeParts[0];\r\n }\r\n return value + ' ' + suffix;\r\n }\r\n\r\n export function hasImageExtension(filename: string): boolean {\r\n if (Q.isEmptyOrNull(filename)) {\r\n return false;\r\n }\r\n filename = filename.toLowerCase();\r\n return Q.endsWith(filename, '.jpg') || Q.endsWith(filename, '.jpeg') ||\r\n Q.endsWith(filename, '.gif') || Q.endsWith(filename, '.png');\r\n }\r\n\r\n export function thumbFileName(filename: string): string {\r\n filename = Q.coalesce(filename, '');\r\n var idx = filename.lastIndexOf('.');\r\n if (idx >= 0) {\r\n filename = filename.substr(0, idx);\r\n }\r\n return filename + '_t.jpg';\r\n }\r\n\r\n export function dbFileUrl(filename: string): string {\r\n filename = Q.replaceAll(Q.coalesce(filename, ''), '\\\\', '/');\r\n return Q.resolveUrl('~/upload/') + filename;\r\n }\r\n\r\n export function colorBox(link: JQuery, options: any): void {\r\n (link as any).colorbox({\r\n current: Q.text('Controls.ImageUpload.ColorboxCurrent'),\r\n previous: Q.text('Controls.ImageUpload.ColorboxPrior'),\r\n next: Q.text('Controls.ImageUpload.ColorboxNext'),\r\n close: Q.text('Controls.ImageUpload.ColorboxClose')\r\n });\r\n }\r\n\r\n export function populateFileSymbols(container: JQuery, items: UploadedFile[],\r\n displayOriginalName?: boolean, urlPrefix?: string): void {\r\n\r\n items = items || [];\r\n container.html('');\r\n for (var index = 0; index < items.length; index++) {\r\n var item = items[index];\r\n var li = $('<li/>').addClass('file-item').data('index', index);\r\n var isImage = hasImageExtension(item.Filename);\r\n if (isImage) {\r\n li.addClass('file-image');\r\n }\r\n else {\r\n li.addClass('file-binary');\r\n }\r\n var editLink = '#' + index;\r\n var thumb = $('<a/>').addClass('thumb').appendTo(li);\r\n var originalName = Q.coalesce(item.OriginalName, '');\r\n var fileName = item.Filename;\r\n if (urlPrefix != null && fileName != null &&\r\n !Q.startsWith(fileName, 'temporary/')) {\r\n fileName = urlPrefix + fileName;\r\n }\r\n\r\n thumb.attr('href', dbFileUrl(fileName));\r\n thumb.attr('target', '_blank');\r\n if (!Q.isEmptyOrNull(originalName)) {\r\n thumb.attr('title', originalName);\r\n }\r\n\r\n if (isImage) {\r\n thumb.css('backgroundImage', \"url('\" + dbFileUrl(\r\n thumbFileName(item.Filename)) + \"')\");\r\n colorBox(thumb, new Object());\r\n }\r\n\r\n if (displayOriginalName) {\r\n $('<div/>').addClass('filename').text(originalName)\r\n .attr('title', originalName).appendTo(li);\r\n }\r\n\r\n li.appendTo(container);\r\n }\r\n }\r\n }\r\n\r\n export interface UploadedFile {\r\n Filename?: string;\r\n OriginalName?: string;\r\n }\r\n\r\n export interface UploadInputOptions {\r\n container?: JQuery;\r\n zone?: JQuery;\r\n progress?: JQuery;\r\n inputName?: string;\r\n allowMultiple?: boolean;\r\n fileDone?: (p1: UploadResponse, p2: string, p3: any) => void;\r\n }\r\n\r\n export interface UploadResponse {\r\n TemporaryFile: string;\r\n Size: number;\r\n IsImage: boolean;\r\n Width: number;\r\n Height: number;\r\n }\r\n}\r\n","namespace Serenity {\r\n\r\n @Decorators.registerInterface('Serenity.IAsyncInit')\r\n export class IAsyncInit {\r\n }\r\n\r\n export interface WidgetClass<TOptions = object> {\r\n new(element: JQuery, options?: TOptions): Widget<TOptions>;\r\n element: JQuery;\r\n }\r\n\r\n export interface WidgetDialogClass<TOptions = object> {\r\n new(options?: TOptions): Widget<TOptions> & IDialog;\r\n element: JQuery;\r\n }\r\n\r\n export type AnyWidgetClass<TOptions = object> = WidgetClass<TOptions> | WidgetDialogClass<TOptions>;\r\n\r\n if (typeof React === \"undefined\") {\r\n if (window['preact'] != null) {\r\n window['React'] = window['ReactDOM'] = window['preact'];\r\n (React as any).Fragment = Q.coalesce((React as any).Fragment, \"x-fragment\");\r\n }\r\n else if (window['Nerv'] != null) {\r\n window['React'] = window['ReactDOM'] = window['Nerv'];\r\n (React as any).Fragment = Q.coalesce((React as any).Fragment, \"x-fragment\");\r\n }\r\n else {\r\n window['React'] = {\r\n Component: function () { } as any,\r\n Fragment: \"x-fragment\" as any,\r\n createElement: function () { return { _reactNotLoaded: true }; } as any\r\n } as any\r\n window['ReactDOM'] = {\r\n render: function () { throw Error(\"To use React, it should be included before Serenity.CoreLib.js\"); }\r\n }\r\n }\r\n }\r\n\r\n @Serenity.Decorators.registerClass()\r\n export class Widget<TOptions> extends React.Component<TOptions, any> {\r\n private static nextWidgetNumber = 0;\r\n public element: JQuery;\r\n protected options: TOptions;\r\n protected widgetName: string;\r\n protected uniqueName: string;\r\n protected asyncPromise: PromiseLike<void>;\r\n\r\n constructor(element: JQuery, options?: TOptions) {\r\n super(options);\r\n\r\n this.element = element;\r\n this.options = options || ({} as TOptions);\r\n\r\n this.widgetName = Widget.getWidgetName((ss as any).getInstanceType(this));\r\n this.uniqueName = this.widgetName + (Widget.nextWidgetNumber++).toString();\r\n\r\n if (element.data(this.widgetName)) {\r\n throw new ss.Exception(Q.format(\"The element already has widget '{0}'!\", this.widgetName));\r\n }\r\n\r\n element.bind('remove.' + this.widgetName, e => {\r\n if (e.bubbles || e.cancelable) {\r\n return;\r\n }\r\n this.destroy();\r\n }).data(this.widgetName, this);\r\n\r\n this.addCssClass();\r\n\r\n if (this.isAsyncWidget()) {\r\n window.setTimeout(() => {\r\n if (element && !this.asyncPromise) {\r\n this.asyncPromise = this.initializeAsync();\r\n }\r\n }, 0);\r\n }\r\n }\r\n\r\n public destroy(): void {\r\n this.element.removeClass('s-' + (ss as any).getTypeName((ss as any).getInstanceType(this)));\r\n this.element.unbind('.' + this.widgetName).unbind('.' + this.uniqueName).removeData(this.widgetName);\r\n this.element = null;\r\n this.asyncPromise = null;\r\n }\r\n\r\n protected addCssClass(): void {\r\n this.element.addClass(this.getCssClass());\r\n }\r\n\r\n protected getCssClass(): string {\r\n var type = (ss as any).getInstanceType(this);\r\n var klass = 's-' + (ss as any).getTypeName(type);\r\n var fullClass = Q.replaceAll((ss as any).getTypeFullName(type), '.', '-');\r\n\r\n for (let k of Q.Config.rootNamespaces) {\r\n if (Q.startsWith(fullClass, k + '-')) {\r\n fullClass = fullClass.substr(k.length + 1);\r\n break;\r\n }\r\n }\r\n\r\n fullClass = 's-' + fullClass;\r\n if (klass === fullClass) {\r\n return klass;\r\n }\r\n\r\n return klass + ' ' + fullClass;\r\n }\r\n\r\n protected initializeAsync(): PromiseLike<void> {\r\n return Promise.resolve();\r\n }\r\n\r\n protected isAsyncWidget(): boolean {\r\n return (ss as any).isInstanceOfType(this, Serenity.IAsyncInit);\r\n }\r\n\r\n public static getWidgetName(type: Function): string {\r\n return Q.replaceAll((ss as any).getTypeFullName(type), '.', '_');\r\n }\r\n\r\n public static elementFor<TWidget>(editorType: { new (...args: any[]): TWidget }): JQuery {\r\n var elementAttr = (ss as any).getAttributes(editorType, Serenity.ElementAttribute, true);\r\n var elementHtml = ((elementAttr.length > 0) ? elementAttr[0].value : '<input/>');\r\n return $(elementHtml);\r\n };\r\n\r\n public static create<TWidget extends Widget<TOpt>, TOpt>(params: CreateWidgetParams<TWidget, TOpt>) {\r\n let widget: TWidget;\r\n\r\n if ((ss as any).isAssignableFrom(Serenity.IDialog, params.type)) {\r\n widget = new (params.type as any)(params.options);\r\n if (params.container)\r\n widget.element.appendTo(params.container);\r\n params.element && params.element(widget.element);\r\n }\r\n else {\r\n var e = Widget.elementFor(params.type);\r\n if (params.container)\r\n e.appendTo(params.container);\r\n params.element && params.element(e);\r\n widget = new params.type(e, params.options);\r\n }\r\n\r\n if (widget.isAsyncWidget())\r\n widget.init(params.init);\r\n else {\r\n widget.init(null);\r\n params.init && params.init(widget);\r\n }\r\n\r\n return widget;\r\n }\r\n\r\n public init(action?: (widget: any) => void): this {\r\n var promise = this.initialize();\r\n if (action) {\r\n promise.then(() => action(this));\r\n }\r\n return this;\r\n }\r\n\r\n public initialize(): PromiseLike<void> {\r\n if (!this.isAsyncWidget()) {\r\n return Promise.resolve();\r\n }\r\n\r\n if (!this.asyncPromise) {\r\n this.asyncPromise = this.initializeAsync();\r\n }\r\n\r\n return this.asyncPromise;\r\n }\r\n\r\n private static __isWidgetType = true;\r\n props: Readonly<{ children?: React.ReactNode }> & Readonly<TOptions> & WidgetComponentProps<this>;\r\n }\r\n\r\n export interface WidgetComponentProps<W extends Serenity.Widget<any>> {\n id?: string;\n name?: string;\n className?: string;\n maxLength?: number;\n placeholder?: string;\n setOptions?: any;\n required?: boolean;\n readOnly?: boolean;\n oneWay?: boolean;\n onChange?: (e: JQueryEventObject) => void;\n onChangeSelect2?: (e: JQueryEventObject) => void;\n value?: any;\n defaultValue?: any;\n }\r\n\r\n export declare interface Widget<TOptions> {\r\n addValidationRule(eventClass: string, rule: (p1: JQuery) => string): JQuery;\r\n getGridField(): JQuery;\r\n change(handler: (e: JQueryEventObject) => void): void;\r\n changeSelect2(handler: (e: JQueryEventObject) => void): void;\r\n }\r\n\r\n Widget.prototype.addValidationRule = function (eventClass: string, rule: (p1: JQuery) => string): JQuery {\r\n return VX.addValidationRule(this.element, eventClass, rule);\r\n }\r\n}","\r\nnamespace Serenity {\r\n export namespace ValidationHelper {\r\n export function asyncSubmit(form: JQuery, validateBeforeSave: () => boolean, submitHandler: () => void): boolean {\r\n var validator = form.validate();\r\n var valSettings = validator.settings;\r\n if ((valSettings as any).abortHandler) {\r\n return false;\r\n }\r\n if (validateBeforeSave != null && validateBeforeSave() === false) {\r\n return false;\r\n }\r\n valSettings['abortHandler'] = Q.validatorAbortHandler;\r\n valSettings['submitHandler'] = function () {\r\n if (submitHandler != null) {\r\n submitHandler();\r\n }\r\n return false;\r\n };\r\n form.trigger('submit');\r\n return true;\r\n }\r\n\r\n export function submit(form: JQuery, validateBeforeSave: () => boolean, submitHandler: () => void): boolean {\r\n var validator = form.validate();\r\n var valSettings = validator.settings;\r\n if ((valSettings as any).abortHandler != null) {\r\n return false;\r\n }\r\n if (validateBeforeSave != null && validateBeforeSave() === false) {\r\n return false;\r\n }\r\n if (!validator.form()) {\r\n return false;\r\n }\r\n if (submitHandler != null) {\r\n submitHandler();\r\n }\r\n return true;\r\n }\r\n\r\n export function getValidator(element: JQuery): JQueryValidation.Validator {\r\n var form = element.closest('form');\r\n if (form.length === 0) {\r\n return null;\r\n }\r\n return form.data('validator');\r\n }\r\n }\r\n\r\n export namespace VX {\r\n export function addValidationRule(element: JQuery, eventClass: string, rule: (p1: JQuery) => string): JQuery {\r\n if(element.length === 0) {\r\n return element;\r\n }\r\n if (rule == null) {\r\n throw new ss.Exception('rule is null!');\r\n }\r\n element.addClass('customValidate').bind('customValidate.' + eventClass, rule as any);\r\n return element;\r\n }\r\n\r\n export function removeValidationRule(element: JQuery, eventClass: string): JQuery {\r\n element.unbind('customValidate.' + eventClass);\r\n return element;\r\n }\r\n\r\n export function validateElement(validator: JQueryValidation.Validator, widget: Serenity.Widget<any>): boolean {\r\n return validator.element(widget.element[0] as any);\r\n }\r\n }\r\n}","namespace Serenity {\r\n\r\n @Serenity.Decorators.registerClass()\r\n export class TemplatedWidget<TOptions> extends Widget<TOptions> {\r\n\r\n protected idPrefix: string;\r\n private static templateNames: Q.Dictionary<string> = {};\r\n\r\n constructor(container: JQuery, options?: TOptions) {\r\n super(container, options);\r\n\r\n this.idPrefix = this.uniqueName + '_';\r\n\r\n var widgetMarkup = this.getTemplate().replace(new RegExp('~_', 'g'), this.idPrefix);\r\n\r\n // for compability with older templates based on JsRender\r\n var end = 0;\r\n while (true) {\r\n var idx = widgetMarkup.indexOf('{{text:\"', end);\r\n if (idx < 0)\r\n break;\r\n var end = widgetMarkup.indexOf('\"}}', idx);\r\n if (end < 0)\r\n break;\r\n var key = widgetMarkup.substr(idx + 8, end - idx - 8);\r\n var text = Q.text(key);\r\n widgetMarkup = widgetMarkup.substr(0, idx) + text + widgetMarkup.substr(end + 3);\r\n end = idx + text.length;\r\n }\r\n\r\n this.element.html(widgetMarkup);\r\n }\r\n\r\n protected byId(id: string): JQuery {\r\n return $('#' + this.idPrefix + id);\r\n }\r\n\r\n private byID<TWidget>(id: string, type: { new (...args: any[]): TWidget }) {\r\n return Serenity.WX.getWidget(this.byId(id), type);\r\n }\r\n\r\n private static noGeneric(s: string): string {\r\n var dollar = s.indexOf('$');\r\n if (dollar >= 0) {\r\n return s.substr(0, dollar);\r\n }\r\n return s;\r\n }\r\n\r\n private getDefaultTemplateName(): string {\r\n return TemplatedWidget.noGeneric((ss as any).getTypeName(\r\n (ss as any).getInstanceType(this)));\r\n }\r\n\r\n protected getTemplateName(): string {\r\n\r\n var type = (ss as any).getInstanceType(this);\r\n var fullName = (ss as any).getTypeFullName(type);\r\n\r\n var templateNames = TemplatedWidget.templateNames;\r\n\r\n var cachedName = TemplatedWidget.templateNames[fullName];\r\n if (cachedName != null) {\r\n return cachedName;\r\n }\r\n \r\n while (type && type !== Serenity.Widget) {\r\n var name = TemplatedWidget.noGeneric((ss as any).getTypeFullName(type));\r\n\r\n for (let k of Q.Config.rootNamespaces) {\r\n if (Q.startsWith(name, k + '.')) {\r\n name = name.substr(k.length + 1);\r\n break;\r\n }\r\n }\r\n\r\n if (Q.canLoadScriptData('Template.' + name)) {\r\n templateNames[fullName] = name;\r\n return name;\r\n }\r\n\r\n name = Q.replaceAll(name, '.', '_');\r\n if (Q.canLoadScriptData('Template.' + name) ||\r\n $('script#Template_' + name).length > 0) {\r\n templateNames[fullName] = name;\r\n return name;\r\n }\r\n\r\n name = TemplatedWidget.noGeneric((ss as any).getTypeName(type));\r\n if (Q.canLoadScriptData('Template.' + name) ||\r\n $('script#Template_' + name).length > 0) {\r\n TemplatedWidget.templateNames[fullName] = name;\r\n return name;\r\n }\r\n\r\n type = (ss as any).getBaseType(type);\r\n }\r\n\r\n templateNames[fullName] = cachedName = this.getDefaultTemplateName();\r\n return cachedName;\r\n }\r\n\r\n protected getFallbackTemplate(): string {\r\n return null;\r\n }\r\n\r\n protected getTemplate(): string {\r\n var templateName = this.getTemplateName();\r\n\r\n var script = $('script#Template_' + templateName);\r\n if (script.length > 0) {\r\n return script.html();\r\n }\r\n\r\n let template: string;\r\n if (!Q.canLoadScriptData('Template.' + templateName) &&\r\n this.getDefaultTemplateName() == templateName) {\r\n template = this.getFallbackTemplate();\r\n if (template != null)\r\n return template;\r\n }\r\n \r\n template = Q.getTemplate(templateName);\r\n\r\n if (template == null) {\r\n throw new Error(Q.format(\r\n \"Can't locate template for widget '{0}' with name '{1}'!\",\r\n (ss as any).getTypeName((ss as any).getInstanceType(this)), templateName));\r\n }\r\n\r\n return template;\r\n }\r\n }\r\n}","namespace Serenity {\r\n\r\n @Serenity.Decorators.registerInterface()\r\n export class IBooleanValue {\r\n }\r\n\r\n export interface IBooleanValue {\r\n get_value(): boolean;\r\n set_value(value: boolean): void;\r\n }\r\n\r\n}","namespace Serenity {\r\n\r\n @Serenity.Decorators.registerInterface()\r\n export class IDoubleValue {\r\n }\r\n\r\n export interface IDoubleValue {\r\n get_value(): any;\r\n set_value(value: any): void;\r\n }\r\n}","namespace Serenity {\r\n\r\n @Serenity.Decorators.registerInterface()\r\n export class IGetEditValue {\r\n }\r\n\r\n export interface IGetEditValue {\r\n getEditValue(property: PropertyItem, target: any): void;\r\n }\r\n}","namespace Serenity {\r\n\r\n @Serenity.Decorators.registerInterface()\r\n export class ISetEditValue {\r\n }\r\n\r\n export interface ISetEditValue {\r\n setEditValue(source: any, property: PropertyItem): void;\r\n }\r\n}","namespace Serenity {\r\n\r\n @Serenity.Decorators.registerInterface()\r\n export class IStringValue {\r\n }\r\n\r\n export interface IStringValue {\r\n get_value(): string;\r\n set_value(value: string): void;\r\n }\r\n}","namespace Serenity {\r\n\r\n export interface IReadOnly {\r\n get_readOnly(): boolean;\r\n set_readOnly(value: boolean): void;\r\n }\r\n\r\n @Serenity.Decorators.registerInterface('Serenity.IReadOnly')\r\n export class IReadOnly {\r\n }\r\n}","namespace Serenity {\r\n export type Constructor<T> = new (...args: any[]) => T;\r\n\r\n export interface PropertyItem {\r\n name?: string;\r\n title?: string;\r\n hint?: string;\r\n placeholder?: string;\r\n editorType?: string | React.ComponentType<any>;\r\n editorParams?: any;\r\n category?: string;\r\n collapsible?: boolean;\r\n collapsed?: boolean;\r\n tab?: string;\r\n cssClass?: string;\r\n headerCssClass?: string;\r\n formCssClass?: string;\r\n maxLength?: number;\r\n required?: boolean;\r\n insertable?: boolean;\r\n insertPermission?: string;\r\n hideOnInsert?: boolean;\r\n updatable?: boolean;\r\n updatePermission?: string;\r\n hideOnUpdate?: boolean;\r\n readOnly?: boolean;\r\n readPermission?: string;\r\n oneWay?: boolean;\r\n defaultValue?: any;\r\n localizable?: boolean;\r\n visible?: boolean;\r\n allowHide?: boolean;\r\n formatterType?: string;\r\n formatterParams?: any;\r\n displayFormat?: string;\r\n alignment?: string;\r\n width?: number;\r\n widthSet?: boolean;\r\n minWidth?: number;\r\n maxWidth?: number;\r\n labelWidth?: string;\r\n resizable?: boolean;\r\n sortable?: boolean;\r\n sortOrder?: number;\r\n groupOrder?: number;\r\n summaryType?: SummaryType;\r\n editLink?: boolean;\r\n editLinkItemType?: string;\r\n editLinkIdField?: string;\r\n editLinkCssClass?: string;\r\n filteringType?: string;\r\n filteringParams?: any;\r\n filteringIdField?: string;\r\n notFilterable?: boolean;\r\n filterOnly?: boolean;\r\n quickFilter?: boolean;\r\n quickFilterParams?: any;\r\n quickFilterSeparator?: boolean;\r\n quickFilterCssClass?: string;\r\n }\r\n\r\n export enum SummaryType {\r\n Disabled = -1,\r\n None = 0,\r\n Sum = 1,\r\n Avg = 2,\r\n Min = 3,\r\n Max = 4\r\n }\r\n\r\n Serenity.Decorators.registerEnum(SummaryType, \"Serenity.SummaryType\")\r\n}","namespace Serenity {\r\n\r\n import Option = Serenity.Decorators.option\r\n\r\n @Decorators.registerEditor('Serenity.DateEditor', [IStringValue, IReadOnly])\r\n @Decorators.element('<input type=\"text\"/>')\r\n export class DateEditor extends Widget<any> implements IStringValue, IReadOnly {\r\n\r\n private minValue: string;\r\n private maxValue: string;\r\n private minDate: string;\r\n private maxDate: string;\r\n private sqlMinMax: boolean;\r\n\r\n constructor(input: JQuery) {\r\n super(input);\r\n\r\n input.addClass('dateQ');\r\n input.datepicker({\r\n showOn: 'button',\r\n beforeShow: (inp, inst) => {\r\n return !input.hasClass('readonly') as any;\r\n },\r\n yearRange: Q.coalesce(this.yearRange, '-100:+50')\r\n });\r\n\r\n input.bind('keyup.' + this.uniqueName, e => {\r\n if (e.which === 32 && !this.get_readOnly()) {\r\n if (this.get_valueAsDate() != (ss as any).today()) {\r\n this.set_valueAsDate((ss as any).today());\r\n this.element.trigger('change');\r\n }\r\n }\r\n else {\r\n Serenity.DateEditor.dateInputKeyup(e);\r\n }\r\n });\r\n\r\n input.bind('change.' + this.uniqueName, Serenity.DateEditor.dateInputChange);\r\n\r\n Serenity.VX.addValidationRule(input, this.uniqueName, e1 => {\r\n var value = this.get_value();\r\n if (Q.isEmptyOrNull(value)) {\r\n return null;\r\n }\r\n\r\n if (!Q.isEmptyOrNull(this.get_minValue()) && (ss as any).compareStrings(value, this.get_minValue()) < 0) {\r\n return Q.format(Q.text('Validation.MinDate'), Q.formatDate(this.get_minValue(), null));\r\n }\r\n\r\n if (!Q.isEmptyOrNull(this.get_maxValue()) && (ss as any).compareStrings(value, this.get_maxValue()) >= 0) {\r\n return Q.format(Q.text('Validation.MaxDate'), Q.formatDate(this.get_maxValue(), null));\r\n }\r\n\r\n return null;\r\n });\r\n\r\n this.set_sqlMinMax(true)\r\n }\r\n\r\n get_value(): string {\r\n var value = this.element.val().trim();\r\n if (value != null && value.length === 0) {\r\n return null;\r\n }\r\n\r\n\t\t\treturn Q.formatDate(value, 'yyyy-MM-dd');\r\n }\r\n\r\n get value(): string {\r\n return this.get_value();\r\n }\r\n\r\n set_value(value: string) {\r\n if (value == null) {\r\n this.element.val('');\r\n }\r\n\t\t\telse if (value.toLowerCase() === 'today' || value.toLowerCase() === 'now') {\r\n this.element.val(Q.formatDate((ss as any).today(), null));\r\n }\r\n\t\t\telse {\r\n this.element.val(Q.formatDate(value, null));\r\n }\r\n }\r\n\r\n set value(v: string) {\r\n this.set_value(v);\r\n }\r\n\r\n private get_valueAsDate(): Date {\r\n if (Q.isEmptyOrNull(this.get_value())) {\r\n return null;\r\n }\r\n\r\n\t\t\treturn Q.parseISODateTime(this.get_value());\r\n }\r\n\r\n get valueAsDate(): Date {\r\n return this.get_valueAsDate();\r\n }\r\n\r\n private set_valueAsDate(value: Date): void {\r\n if (value == null) {\r\n this.set_value(null);\r\n }\r\n\r\n\t\t\tthis.set_value(Q.formatDate(value, 'yyyy-MM-dd'));\r\n }\r\n\r\n set valueAsDate(v: Date) {\r\n this.set_valueAsDate(v);\r\n }\r\n\r\n get_readOnly(): boolean {\r\n return this.element.hasClass('readonly');\r\n }\r\n\r\n set_readOnly(value: boolean): void {\r\n\r\n if (value !== this.get_readOnly()) {\r\n if (value) {\r\n this.element.addClass('readonly').attr('readonly', 'readonly');\r\n this.element.nextAll('.ui-datepicker-trigger').css('opacity', '0.1');\r\n }\r\n else {\r\n this.element.removeClass('readonly').removeAttr('readonly');\r\n this.element.nextAll('.ui-datepicker-trigger').css('opacity', '1');\r\n }\r\n }\r\n }\r\n\r\n @Option()\r\n public yearRange: string;\r\n\r\n @Option()\r\n get_minValue(): string {\r\n return this.minValue;\r\n }\r\n\r\n set_minValue(value: string) {\r\n this.minValue = value;\r\n }\r\n\r\n @Option()\r\n get_maxValue(): string {\r\n return this.maxValue;\r\n }\r\n\r\n set_maxValue(value: string): void {\r\n this.maxValue = value;\r\n }\r\n\r\n get_minDate(): Date {\r\n return Q.parseISODateTime(this.get_minValue());\r\n }\r\n\r\n set_minDate(value: Date): void {\r\n this.set_minValue(Q.formatDate(value, 'yyyy-MM-dd'));\r\n }\r\n\r\n @Option()\r\n get_maxDate(): Date {\r\n return Q.parseISODateTime(this.get_maxValue());\r\n }\r\n\r\n set_maxDate(value: Date) {\r\n this.set_maxValue(Q.formatDate(value, 'yyyy-MM-dd'));\r\n }\r\n\r\n @Option()\r\n get_sqlMinMax(): boolean {\r\n return this.get_minValue() === '1753-01-01' && this.get_maxValue() === '9999-12-31';\r\n }\r\n\r\n set_sqlMinMax(value: boolean) {\r\n if (value) {\r\n this.set_minValue('1753-01-01');\r\n this.set_maxValue('9999-12-31');\r\n }\r\n\t\t\telse {\r\n this.set_minValue(null);\r\n this.set_maxValue(null);\r\n }\r\n }\r\n\r\n static dateInputChange = function (e: JQueryEventObject) {\r\n if (Q.Culture.dateOrder !== 'dmy') {\r\n return;\r\n }\r\n var input = $(e.target);\r\n if (!input.is(':input')) {\r\n return;\r\n }\r\n var val = Q.coalesce(input.val(), '');\r\n var x = {};\r\n if (val.length >= 6 && (ss as any).Int32.tryParse(val, x)) {\r\n input.val(val.substr(0, 2) + Q.Culture.dateSeparator + val.substr(2, 2) + Q.Culture.dateSeparator + val.substr(4));\r\n }\r\n val = Q.coalesce(input.val(), '');\r\n if (!!(val.length >= 5 && Q.parseDate(val) !== false)) {\r\n var d = Q.parseDate(val);\r\n input.val(Q.formatDate(d, null));\r\n }\r\n };\r\n\r\n static dateInputKeyup(e: JQueryEventObject) {\r\n\r\n if (Q.Culture.dateOrder !== 'dmy') {\r\n return;\r\n }\r\n\r\n var input = $(e.target);\r\n if (!input.is(':input')) {\r\n return;\r\n }\r\n\r\n if (input.is('[readonly]') || input.is(':disabled')) {\r\n return;\r\n }\r\n\r\n var val: string = Q.coalesce(input.val(), '');\r\n if (!!(val.length === 0 || (input[0] as any).selectionEnd !== val.length)) {\r\n return;\r\n }\r\n\r\n if (val.indexOf(Q.Culture.dateSeparator + Q.Culture.dateSeparator) !== -1) {\r\n input.val(Q.replaceAll(val, Q.Culture.dateSeparator + Q.Culture.dateSeparator,\r\n Q.Culture.dateSeparator));\r\n return;\r\n }\r\n\r\n function isNumeric(c: number): boolean {\r\n return c >= 48 && c <= 57;\r\n }\r\n\r\n if (e.which === 47 || e.which === 111) {\r\n\r\n if (val.length >= 2 && val.charAt(val.length - 1) === Q.Culture.dateSeparator &&\r\n val.charAt(val.length - 2) === Q.Culture.dateSeparator) {\r\n input.val(val.substr(0, val.length - 1));\r\n return;\r\n }\r\n\r\n if (val.charAt(val.length - 1) !== Q.Culture.dateSeparator) {\r\n return;\r\n }\r\n\r\n switch (val.length) {\r\n case 2: {\r\n if (isNumeric(val.charCodeAt(0))) {\r\n val = '0' + val;\r\n break;\r\n }\r\n else {\r\n return;\r\n }\r\n }\r\n\r\n case 4: {\r\n if (isNumeric(val.charCodeAt(0)) &&\r\n isNumeric(val.charCodeAt(2)) &&\r\n val.charAt(1) == Q.Culture.dateSeparator) {\r\n val = '0' + val.charAt(0) + Q.Culture.dateSeparator + '0' +\r\n val.charAt(2) + Q.Culture.dateSeparator;\r\n break;\r\n }\r\n else {\r\n return;\r\n }\r\n }\r\n\r\n case 5: {\r\n if (isNumeric(val.charCodeAt(0)) &&\r\n isNumeric(val.charCodeAt(2)) &&\r\n isNumeric(val.charCodeAt(3)) &&\r\n val.charAt(1) === Q.Culture.dateSeparator) {\r\n val = '0' + val;\r\n break;\r\n }\r\n else if (isNumeric(val.charCodeAt(0)) &&\r\n isNumeric(val.charCodeAt(1)) &&\r\n isNumeric(val.charCodeAt(3)) &&\r\n val.charAt(2) === Q.Culture.dateSeparator) {\r\n val = val.charAt(0) + val.charAt(1) +\r\n Q.Culture.dateSeparator + '0' + val.charAt(3) + Q.Culture.dateSeparator;\r\n break;\r\n }\r\n else {\r\n break;\r\n }\r\n }\r\n default: {\r\n return;\r\n }\r\n }\r\n input.val(val);\r\n }\r\n\r\n if (val.length < 6 && (e.which >= 48 && e.which <= 57 || e.which >= 96 && e.which <= 105) &&\r\n isNumeric(val.charCodeAt(val.length - 1))) {\r\n switch (val.length) {\r\n case 1: {\r\n if (val.charCodeAt(0) <= 51) {\r\n return;\r\n }\r\n val = '0' + val;\r\n break;\r\n }\r\n\r\n case 2: {\r\n if (!isNumeric(val.charCodeAt(0))) {\r\n return;\r\n }\r\n break;\r\n }\r\n\r\n case 3: {\r\n if (!isNumeric(val.charCodeAt(0)) ||\r\n val.charAt(1) !== Q.Culture.dateSeparator ||\r\n val.charCodeAt(2) <= 49) {\r\n return;\r\n }\r\n\r\n val = '0' + val.charAt(0) + Q.Culture.dateSeparator + '0' + val.charAt(2);\r\n break;\r\n }\r\n\r\n case 4: {\r\n if (val.charAt(1) == Q.Culture.dateSeparator) {\r\n if (!isNumeric(val.charCodeAt(0)) ||\r\n !isNumeric(val.charCodeAt(2))) {\r\n return;\r\n }\r\n\r\n val = '0' + val;\r\n break;\r\n }\r\n else if (val.charAt(2) == Q.Culture.dateSeparator) {\r\n if (!isNumeric(val.charCodeAt(0)) ||\r\n !isNumeric(val.charCodeAt(1)) ||\r\n val.charCodeAt(3) <= 49) {\r\n return;\r\n }\r\n\r\n val = val.charAt(0) + val.charAt(1) + Q.Culture.dateSeparator +\r\n '0' + val.charAt(3);\r\n break;\r\n }\r\n else {\r\n return;\r\n }\r\n }\r\n case 5: {\r\n if (val.charAt(2) !== Q.Culture.dateSeparator ||\r\n !isNumeric(val.charCodeAt(0)) ||\r\n !isNumeric(val.charCodeAt(1)) ||\r\n !isNumeric(val.charCodeAt(3))) {\r\n return;\r\n }\r\n\r\n break;\r\n }\r\n\r\n default: {\r\n return;\r\n }\r\n }\r\n\r\n input.val(val + Q.Culture.dateSeparator);\r\n }\r\n };\r\n }\r\n}","namespace Serenity {\r\n\r\n import Option = Serenity.Decorators.option\r\n\r\n @Decorators.registerEditor('Serenity.DateTimeEditor', [IStringValue, IReadOnly])\r\n @Decorators.element('<input type=\"text\"/>')\r\n export class DateTimeEditor extends Widget<DateTimeEditorOptions> implements IStringValue, IReadOnly {\r\n\r\n private minValue: string;\r\n private maxValue: string;\r\n private minDate: string;\r\n private maxDate: string;\r\n private sqlMinMax: boolean;\r\n private time: JQuery;\r\n\r\n constructor(input: JQuery, opt?: DateTimeEditorOptions) {\r\n super(input, opt);\r\n\r\n input.addClass('dateQ s-DateTimeEditor').datepicker({\r\n showOn: 'button',\r\n beforeShow: function () {\r\n return !input.hasClass('readonly');\r\n } as any,\r\n yearRange: Q.coalesce(this.options.yearRange, '-100:+50')\r\n });\r\n\r\n input.bind('keyup.' + this.uniqueName, e => {\r\n if (e.which === 32 && !this.get_readOnly()) {\r\n if (this.get_valueAsDate() !== new Date()) {\r\n this.set_valueAsDate(new Date());\r\n this.element.trigger('change');\r\n }\r\n }\r\n else {\r\n Serenity.DateEditor.dateInputKeyup(e);\r\n }\r\n });\r\n\r\n input.bind('change.' + this.uniqueName,\r\n DateEditor.dateInputChange);\r\n\r\n this.time = $('<select/>').addClass('editor s-DateTimeEditor time');\r\n var after = input.next('.ui-datepicker-trigger');\r\n if (after.length > 0) {\r\n this.time.insertAfter(after);\r\n }\r\n else {\r\n after = input.prev('.ui-datepicker-trigger');\r\n if (after.length > 0) {\r\n this.time.insertBefore(after);\r\n }\r\n else {\r\n this.time.insertAfter(input);\r\n }\r\n }\r\n\r\n var timeOpt = DateTimeEditor.getTimeOptions(\r\n Q.coalesce(this.options.startHour, 0), 0,\r\n Q.coalesce(this.options.endHour, 23), 59,\r\n Q.coalesce(this.options.intervalMinutes, 5));\r\n\r\n for (var t of timeOpt) {\r\n Q.addOption(this.time, t, t);\r\n }\r\n\r\n VX.addValidationRule(input, this.uniqueName, e1 => {\r\n var value = this.get_value();\r\n if (Q.isEmptyOrNull(value)) {\r\n return null;\r\n }\r\n\r\n if (!Q.isEmptyOrNull(this.get_minValue()) &&\r\n (ss as any).compareStrings(value, this.get_minValue()) < 0) {\r\n return Q.format(Q.text('Validation.MinDate'),\r\n Q.formatDate(this.get_minValue(), null));\r\n }\r\n\r\n if (!Q.isEmptyOrNull(this.get_maxValue()) &&\r\n (ss as any).compareStrings(value, this.get_maxValue()) >= 0) {\r\n return Q.format(Q.text('Validation.MaxDate'),\r\n Q.formatDate(this.get_maxValue(), null));\r\n }\r\n return null;\r\n });\r\n\r\n this.set_sqlMinMax(true);\r\n\r\n $(\"<div class='inplace-button inplace-now'><b></b></div>\")\r\n .attr('title', 'set to now')\r\n .insertAfter(this.time).click(e2 => {\r\n if (this.element.hasClass('readonly')) {\r\n return;\r\n }\r\n this.set_valueAsDate(new Date());\r\n input.triggerHandler('change');\r\n });\r\n\r\n this.time.on('change', function (e3) {\r\n input.triggerHandler('change');\r\n });\r\n }\r\n\r\n get_value(): string {\r\n var value = this.element.val().trim();\r\n if (value != null && value.length === 0) {\r\n return null;\r\n }\r\n\r\n\t\t\tvar datePart = Q.formatDate(value, 'yyyy-MM-dd');\r\n var timePart = this.time.val();\r\n var result = datePart + 'T' + timePart + ':00.000';\r\n\r\n if (this.options.useUtc) {\r\n result = Q.formatISODateTimeUTC(Q.parseISODateTime(result));\r\n }\r\n\r\n\t\t\treturn result;\r\n }\r\n\r\n get value(): string {\r\n return this.get_value();\r\n }\r\n\r\n set_value(value: string) {\r\n if (Q.isEmptyOrNull(value)) {\r\n this.element.val('');\r\n this.time.val('00:00');\r\n }\r\n\t\t\telse if (value.toLowerCase() === 'today') {\r\n this.element.val(Q.formatDate((ss as any).today(), null));\r\n this.time.val('00:00');\r\n }\r\n\t\t\telse {\r\n var val = ((value.toLowerCase() === 'now') ? new Date() : Q.parseISODateTime(value));\r\n val = Serenity.DateTimeEditor.roundToMinutes(val, Q.coalesce(this.options.intervalMinutes, 5));\r\n this.element.val(Q.formatDate(val, null));\r\n this.time.val(Q.formatDate(val, 'HH:mm'));\r\n }\r\n }\r\n\r\n set value(v: string) {\r\n this.set_value(v);\r\n }\r\n\r\n private get_valueAsDate(): Date {\r\n if (Q.isEmptyOrNull(this.get_value())) {\r\n return null;\r\n }\r\n\r\n\t\t\treturn Q.parseISODateTime(this.get_value());\r\n }\r\n\r\n get valueAsDate() {\r\n return this.get_valueAsDate();\r\n }\r\n\r\n private set_valueAsDate(value: Date) {\r\n if (value == null) {\r\n this.set_value(null);\r\n }\r\n\r\n\t\t\tthis.set_value(Q.formatDate(value, 'yyyy-MM-ddTHH:mm'));\r\n }\r\n\r\n set valueAsDate(value: Date) {\r\n this.set_valueAsDate(value);\r\n }\r\n\r\n @Option()\r\n get_minValue(): string {\r\n return this.minValue;\r\n }\r\n\r\n set_minValue(value: string) {\r\n this.minValue = value;\r\n }\r\n\r\n @Option()\r\n get_maxValue(): string {\r\n return this.maxValue;\r\n }\r\n\r\n set_maxValue(value: string): void {\r\n this.maxValue = value;\r\n }\r\n\r\n get_minDate(): Date {\r\n return Q.parseISODateTime(this.get_minValue());\r\n }\r\n\r\n set_minDate(value: Date): void {\r\n this.set_minValue(Q.formatDate(value, 'yyyy-MM-ddTHH:mm:ss'));\r\n }\r\n\r\n @Option()\r\n get_maxDate(): Date {\r\n return Q.parseISODateTime(this.get_maxValue());\r\n }\r\n\r\n set_maxDate(value: Date) {\r\n this.set_maxValue(Q.formatDate(value, 'yyyy-MM-ddTHH:mm:ss'));\r\n }\r\n\r\n @Option()\r\n get_sqlMinMax(): boolean {\r\n return this.get_minValue() === '1753-01-01' && this.get_maxValue() === '9999-12-31';\r\n }\r\n\r\n set_sqlMinMax(value: boolean) {\r\n if (value) {\r\n this.set_minValue('1753-01-01');\r\n this.set_maxValue('9999-12-31');\r\n }\r\n else {\r\n this.set_minValue(null);\r\n this.set_maxValue(null);\r\n }\r\n }\r\n\r\n get_readOnly(): boolean {\r\n return this.element.hasClass('readonly');\r\n }\r\n\r\n set_readOnly(value: boolean): void {\r\n\r\n if (value !== this.get_readOnly()) {\r\n if (value) {\r\n this.element.addClass('readonly').attr('readonly', 'readonly');\r\n this.element.nextAll('.ui-datepicker-trigger').css('opacity', '0.1');\r\n this.element.nextAll('.inplace-now').css('opacity', '0.1');\r\n\r\n }\r\n else {\r\n this.element.removeClass('readonly').removeAttr('readonly');\r\n this.element.nextAll('.ui-datepicker-trigger').css('opacity', '1');\r\n this.element.nextAll('.inplace-now').css('opacity', '1');\r\n }\r\n Serenity.EditorUtils.setReadonly(this.time, value);\r\n }\r\n }\r\n\r\n static roundToMinutes(date: Date, minutesStep: number) {\r\n date = new Date(date.getTime());\r\n var m = (ss as any).Int32.trunc((ss as any).round(date.getMinutes() / minutesStep) * minutesStep);\r\n date.setMinutes(m);\r\n date.setSeconds(0);\r\n date.setMilliseconds(0);\r\n return date;\r\n }\r\n\r\n static getTimeOptions = function (fromHour: number, fromMin: number,\r\n toHour: number, toMin: number, stepMins: number) {\r\n var list = [];\r\n if (toHour >= 23) {\r\n toHour = 23;\r\n }\r\n if (toMin >= 60) {\r\n toMin = 59;\r\n }\r\n var hour = fromHour;\r\n var min = fromMin;\r\n while (true) {\r\n if (hour > toHour || hour === toHour && min > toMin) {\r\n break;\r\n }\r\n var t = ((hour >= 10) ? '' : '0') + hour + ':' + ((min >= 10) ? '' : '0') + min;\r\n list.push(t);\r\n min += stepMins;\r\n if (min >= 60) {\r\n min -= 60;\r\n hour++;\r\n }\r\n }\r\n return list;\r\n };\r\n }\r\n\r\n export interface DateTimeEditorOptions {\r\n startHour?: any;\r\n endHour?: any;\r\n intervalMinutes?: any;\r\n yearRange?: string;\r\n useUtc?: boolean;\r\n }\r\n}\r\n","\r\nnamespace Serenity {\r\n\r\n export interface Select2CommonOptions {\r\n allowClear?: boolean;\r\n delimited?: boolean;\r\n minimumResultsForSearch?: any;\r\n multiple?: boolean;\r\n }\r\n\r\n export interface Select2FilterOptions {\r\n cascadeFrom?: string;\r\n cascadeField?: string;\r\n cascadeValue?: any;\r\n filterField?: string;\r\n filterValue?: any;\r\n }\r\n\r\n export interface Select2InplaceAddOptions {\r\n inplaceAdd?: boolean;\r\n inplaceAddPermission?: string;\r\n dialogType?: string;\r\n autoComplete?: boolean;\r\n }\r\n\r\n export interface Select2EditorOptions extends Select2FilterOptions, Select2InplaceAddOptions, Select2CommonOptions {\r\n }\r\n\r\n @Serenity.Decorators.registerClass('Serenity.Select2Editor',\r\n [Serenity.ISetEditValue, Serenity.IGetEditValue, Serenity.IStringValue, Serenity.IReadOnly])\r\n @Serenity.Decorators.element(\"<input type=\\\"hidden\\\"/>\")\r\n export class Select2Editor<TOptions, TItem> extends Widget<TOptions> implements\r\n Serenity.ISetEditValue, Serenity.IGetEditValue, Serenity.IStringValue, Serenity.IReadOnly {\r\n\r\n public items: Select2Item[];\r\n protected itemById: Q.Dictionary<Select2Item>\r\n protected pageSize: number = 100;\r\n protected lastCreateTerm: string;\r\n\r\n constructor(hidden: JQuery, opt?: any) {\r\n super(hidden, opt);\r\n\r\n this.items = [];\r\n this.itemById = {};\r\n var emptyItemText = this.emptyItemText();\r\n if (emptyItemText != null) {\r\n hidden.attr('placeholder', emptyItemText);\r\n }\r\n var select2Options = this.getSelect2Options();\r\n hidden.select2(select2Options);\r\n hidden.attr('type', 'text');\r\n\r\n // jquery validate to work\r\n hidden.bind('change.' + this.uniqueName, <any>function (e: JQueryEventObject, x: boolean) {\r\n if (!!(Serenity.WX.hasOriginalEvent(e) || !x)) {\r\n if (Serenity.ValidationHelper.getValidator(hidden) != null) {\r\n hidden.valid();\r\n }\r\n }\r\n });\r\n\r\n this.setCascadeFrom((this.options as Select2EditorOptions).cascadeFrom);\r\n\r\n if (this.useInplaceAdd())\r\n this.addInplaceCreate(Q.text('Controls.SelectEditor.InplaceAdd'), null);\r\n }\r\n\r\n destroy() {\r\n if (this.element != null) {\r\n this.element.select2('destroy');\r\n }\r\n\r\n\t\t\tsuper.destroy();\r\n }\r\n\r\n protected emptyItemText() {\r\n return Q.coalesce(this.element.attr('placeholder'),\r\n Q.text('Controls.SelectEditor.EmptyItemText'));\r\n }\r\n\r\n protected allowClear() {\r\n return (this.options as Select2EditorOptions).allowClear != null ?\r\n !!(this.options as Select2EditorOptions).allowClear : this.emptyItemText() != null;\r\n }\r\n\r\n protected isMultiple() {\r\n return !!(this.options as Select2EditorOptions).multiple;\r\n }\r\n\r\n protected getSelect2Options(): Select2Options {\r\n var emptyItemText = this.emptyItemText();\r\n var opt: Select2Options = {\r\n data: this.items,\r\n multiple: this.isMultiple(),\r\n placeHolder: (!Q.isEmptyOrNull(emptyItemText) ? emptyItemText : null),\r\n allowClear: this.allowClear(),\r\n createSearchChoicePosition: 'bottom',\r\n query: (query) => {\r\n var term = (Q.isEmptyOrNull(query.term) ? '' : Select2.util.stripDiacritics(\r\n Q.coalesce(query.term, '')).toUpperCase());\r\n\r\n var results = this.items.filter(function (item) {\r\n return term == null || Q.startsWith(Select2.util.stripDiacritics(\r\n Q.coalesce(item.text, '')).toUpperCase(), term);\r\n });\r\n\r\n results.push(...this.items.filter(item1 =>\r\n term != null && !Q.startsWith(Select2.util.stripDiacritics(\r\n Q.coalesce(item1.text, '')).toUpperCase(), term) &&\r\n Select2.util.stripDiacritics(Q.coalesce(item1.text, ''))\r\n .toUpperCase().indexOf(term) >= 0));\r\n\r\n query.callback({\r\n results: results.slice((query.page - 1) * this.pageSize, query.page * this.pageSize),\r\n more: results.length >= query.page * this.pageSize\r\n });\r\n },\r\n initSelection: (element, callback) => {\r\n var val = element.val();\r\n var isAutoComplete = this.isAutoComplete();\r\n if (this.isMultiple()) {\r\n var list = [];\r\n var $t1 = val.split(',');\r\n for (var $t2 = 0; $t2 < $t1.length; $t2++) {\r\n var z = $t1[$t2];\r\n var item2 = this.itemById[z];\r\n if (item2 == null && isAutoComplete) {\r\n item2 = { id: z, text: z };\r\n this.addItem(item2);\r\n }\r\n if (item2 != null) {\r\n list.push(item2);\r\n }\r\n }\r\n callback(list);\r\n return;\r\n }\r\n var it = this.itemById[val];\r\n if (it == null && isAutoComplete) {\r\n it = { id: val, text: val };\r\n this.addItem(it);\r\n }\r\n callback(it);\r\n }\r\n }\r\n\r\n if ((this.options as Select2EditorOptions).minimumResultsForSearch != null)\r\n opt.minimumResultsForSearch = (this.options as Select2EditorOptions).minimumResultsForSearch;\r\n\r\n if (this.isAutoComplete() || this.useInplaceAdd())\r\n opt.createSearchChoice = this.getCreateSearchChoice(null);\r\n\r\n return opt;\r\n }\r\n\r\n get_delimited() {\r\n return !!(this.options as Select2EditorOptions).delimited;\r\n }\r\n\r\n public clearItems() {\r\n (ss as any).clear(this.items);\r\n this.itemById = {};\r\n }\r\n\r\n public addItem(item: Select2Item) {\r\n this.items.push(item);\r\n this.itemById[item.id] = item;\r\n }\r\n\r\n public addOption(key: string, text: string, source?: any, disabled?: boolean) {\r\n this.addItem({\r\n id: key,\r\n text: text,\r\n source: source,\r\n disabled: disabled\r\n });\r\n }\r\n\r\n protected addInplaceCreate(addTitle: string, editTitle: string) {\r\n var self = this;\r\n addTitle = Q.coalesce(addTitle, Q.text('Controls.SelectEditor.InplaceAdd'));\r\n editTitle = Q.coalesce(editTitle, Q.text('Controls.SelectEditor.InplaceEdit'));\r\n var inplaceButton = $('<a><b/></a>')\r\n .addClass('inplace-button inplace-create')\r\n .attr('title', addTitle)\r\n .insertAfter(this.element).click(function (e) {\r\n self.inplaceCreateClick(e);\r\n });\r\n\r\n this.get_select2Container().add(this.element).addClass('has-inplace-button');\r\n\r\n Serenity.WX.change(this, (e1: JQueryEventObject) => {\r\n var isNew = this.isMultiple() || Q.isEmptyOrNull(this.get_value());\r\n inplaceButton.attr('title', (isNew ? addTitle : editTitle)).toggleClass('edit', !isNew);\r\n });\r\n\r\n Serenity.WX.changeSelect2(this, (e2: JQueryEventObject) => {\r\n if (this.isMultiple()) {\r\n var values = this.get_values();\r\n if (values.length > 0 && values[values.length - 1] == (-2147483648).toString()) {\r\n this.set_values(values.slice(0, values.length - 1));\r\n this.inplaceCreateClick(e2);\r\n }\r\n }\r\n else if (this.get_value() == (-2147483648).toString()) {\r\n this.set_value(null);\r\n this.inplaceCreateClick(e2);\r\n }\r\n });\r\n\r\n if (this.isMultiple()) {\r\n this.get_select2Container().on('dblclick.' + this.uniqueName, '.select2-search-choice', (e3: JQueryEventObject) => {\r\n var q = $(e3.target);\r\n if (!q.hasClass('select2-search-choice')) {\r\n q = q.closest('.select2-search-choice');\r\n }\r\n var index = q.index();\r\n var values1 = this.get_values();\r\n if (index < 0 || index >= this.get_values().length) {\r\n return;\r\n }\r\n e3['editItem'] = values1[index];\r\n this.inplaceCreateClick(e3);\r\n });\r\n }\r\n }\r\n\r\n protected useInplaceAdd(): boolean {\r\n return !this.isAutoComplete() &&\r\n (this.options as Select2EditorOptions).inplaceAdd &&\r\n ((this.options as Select2EditorOptions).inplaceAddPermission == null ||\r\n Q.Authorization.hasPermission((this.options as Select2EditorOptions).inplaceAddPermission));\r\n }\r\n\r\n protected isAutoComplete(): boolean {\r\n return !!(this.options as Select2EditorOptions).autoComplete;\r\n }\r\n\r\n public getCreateSearchChoice(getName: (z: any) => string) {\r\n return (s: string) => {\r\n\r\n this.lastCreateTerm = s;\r\n s = Q.coalesce(Select2.util.stripDiacritics(s), '').toLowerCase();\r\n\r\n if (Q.isTrimmedEmpty(s)) {\r\n return null;\r\n }\r\n\r\n if (Q.any(this.get_items(), (x: Select2Item) => {\r\n var text = getName ? getName(x.source) : x.text;\r\n return Select2.util.stripDiacritics(Q.coalesce(text, '')).toLowerCase() == s;\r\n }))\r\n return null;\r\n\r\n if (!Q.any(this.get_items(), x1 => {\r\n return Q.coalesce(Select2.util.stripDiacritics(x1.text), '').toLowerCase().indexOf(s) !== -1;\r\n })) {\r\n if (this.isAutoComplete()) {\r\n return {\r\n id: this.lastCreateTerm,\r\n text: this.lastCreateTerm\r\n };\r\n }\r\n\r\n return {\r\n id: (-2147483648).toString(),\r\n text: Q.text('Controls.SelectEditor.NoResultsClickToDefine')\r\n };\r\n }\r\n\r\n if (this.isAutoComplete()) {\r\n return {\r\n id: this.lastCreateTerm,\r\n text: this.lastCreateTerm\r\n };\r\n }\r\n\r\n return {\r\n id: (-2147483648).toString(),\r\n text: Q.text('Controls.SelectEditor.ClickToDefine')\r\n };\r\n }\r\n }\r\n\r\n setEditValue(source: any, property: PropertyItem) {\r\n var val = source[property.name];\r\n if(Q.isArray(val)) {\r\n this.set_values(val);\r\n }\r\n\t\t\telse {\r\n this.set_value((val == null ? null : val.toString()));\r\n }\r\n }\r\n\r\n getEditValue(property: PropertyItem, target: any) {\r\n if (!this.isMultiple() || this.get_delimited()) {\r\n target[property.name] = this.get_value();\r\n }\r\n\t\t\telse {\r\n target[property.name] = this.get_values();\r\n }\r\n }\r\n\r\n protected get_select2Container() {\r\n return this.element.prevAll('.select2-container');\r\n }\r\n\r\n protected get_items() {\r\n return this.items;\r\n }\r\n\r\n protected get_itemByKey() {\r\n return this.itemById;\r\n }\r\n\r\n get_value() {\r\n var val;\r\n if (this.element.data('select2')) {\r\n val = this.element.select2('val');\r\n if (val != null && Q.isArray(val)) {\r\n return val.join(',');\r\n }\r\n }\r\n else\r\n val = this.element.val();\r\n\r\n\t\t\treturn val;\r\n }\r\n\r\n get value(): string {\r\n return this.get_value();\r\n }\r\n\r\n set_value(value: string) {\r\n\r\n if (value != this.get_value()) {\r\n var val: any = value;\r\n if (!Q.isEmptyOrNull(value) && this.isMultiple()) {\r\n val = value.split(String.fromCharCode(44)).map(function (x) {\r\n return Q.trimToNull(x);\r\n }).filter(function (x1) {\r\n return x1 != null;\r\n });\r\n }\r\n\r\n this.element.select2('val', val)\r\n .triggerHandler('change', [true]);\r\n\r\n this.updateInplaceReadOnly();\r\n }\r\n }\r\n\r\n set value(v: string) {\r\n this.set_value(v);\r\n }\r\n\r\n get selectedItem(): TItem {\r\n let selectedValue = this.get_value();\r\n if (selectedValue && this.itemById) {\r\n let item = this.itemById[selectedValue];\r\n if (item)\r\n return item.source;\r\n }\r\n return null;\r\n }\r\n\r\n protected get_values(): string[] {\r\n\r\n var val = this.element.select2('val');\r\n if (val == null) {\r\n return [];\r\n }\r\n\r\n\t\t\tif (Q.isArray(val)) {\r\n return val;\r\n }\r\n\r\n var str = val;\r\n if (Q.isEmptyOrNull(str)) {\r\n return [];\r\n }\r\n\r\n\t\t\treturn [str];\r\n }\r\n\r\n get values(): string[] {\r\n return this.get_values();\r\n }\r\n\r\n protected set_values(value: string[]) {\r\n\r\n if (value == null || value.length === 0) {\r\n this.set_value(null);\r\n return;\r\n }\r\n\r\n\t\t\tthis.set_value(value.join(','));\r\n }\r\n\r\n set values(value: string[]) {\r\n this.set_values(value);\r\n }\r\n\r\n protected get_text(): string {\r\n return Q.coalesce(this.element.select2('data'), {}).text;\r\n }\r\n\r\n get text(): string {\r\n return this.get_text();\r\n }\r\n\r\n get_readOnly(): boolean {\r\n return !Q.isEmptyOrNull(this.element.attr('readonly'));\r\n }\r\n\r\n get readOnly(): boolean {\r\n return this.get_readOnly();\r\n }\r\n\r\n private updateInplaceReadOnly(): void {\r\n var readOnly = this.get_readOnly() &&\r\n (this.isMultiple() || !this.value);\r\n\r\n this.element.nextAll('.inplace-create')\r\n .attr('disabled', (readOnly ? 'disabled' : ''))\r\n .css('opacity', (readOnly ? '0.1' : ''))\r\n .css('cursor', (readOnly ? 'default' : ''));\r\n }\r\n\r\n set_readOnly(value: boolean) {\r\n if (value !== this.get_readOnly()) {\r\n Serenity.EditorUtils.setReadonly(this.element, value);\r\n this.updateInplaceReadOnly();\r\n }\r\n }\r\n\r\n set readOnly(value: boolean) {\r\n this.set_readOnly(value);\r\n }\r\n\r\n protected getCascadeFromValue(parent: Serenity.Widget<any>) {\r\n return Serenity.EditorUtils.getValue(parent);\r\n }\r\n\r\n protected cascadeLink: Serenity.CascadedWidgetLink<Widget<any>>;\r\n\r\n protected setCascadeFrom(value: string) {\r\n\r\n if (Q.isEmptyOrNull(value)) {\r\n if (this.cascadeLink != null) {\r\n this.cascadeLink.set_parentID(null);\r\n this.cascadeLink = null;\r\n }\r\n (this.options as Select2EditorOptions).cascadeFrom = null;\r\n return;\r\n }\r\n\r\n this.cascadeLink = new Serenity.CascadedWidgetLink<Widget<any>>(Widget, this, p => {\r\n this.set_cascadeValue(this.getCascadeFromValue(p));\r\n });\r\n\r\n this.cascadeLink.set_parentID(value);\r\n (this.options as Select2EditorOptions).cascadeFrom = value;\r\n }\r\n\r\n protected get_cascadeFrom(): string {\r\n return (this.options as Select2EditorOptions).cascadeFrom;\r\n }\r\n\r\n get cascadeFrom(): string {\r\n return this.get_cascadeFrom();\r\n }\r\n\r\n protected set_cascadeFrom(value: string) {\r\n if (value !== (this.options as Select2EditorOptions).cascadeFrom) {\r\n this.setCascadeFrom(value);\r\n this.updateItems();\r\n }\r\n }\r\n\r\n set cascadeFrom(value: string) {\r\n this.set_cascadeFrom(value);\r\n }\r\n\r\n protected get_cascadeField() {\r\n return Q.coalesce((this.options as Select2EditorOptions).cascadeField, (this.options as Select2EditorOptions).cascadeFrom);\r\n }\r\n\r\n get cascadeField(): string {\r\n return this.get_cascadeField();\r\n }\r\n\r\n protected set_cascadeField(value: string) {\r\n (this.options as Select2EditorOptions).cascadeField = value;\r\n }\r\n\r\n set cascadeField(value: string) {\r\n this.set_cascadeField(value);\r\n }\r\n\r\n protected get_cascadeValue(): any {\r\n return (this.options as Select2EditorOptions).cascadeValue;\r\n }\r\n\r\n get cascadeValue(): any {\r\n return this.get_cascadeValue();\r\n }\r\n\r\n protected set_cascadeValue(value: any) {\r\n if ((this.options as Select2EditorOptions).cascadeValue !== value) {\r\n (this.options as Select2EditorOptions).cascadeValue = value;\r\n this.set_value(null);\r\n this.updateItems();\r\n }\r\n }\r\n\r\n set cascadeValue(value: any) {\r\n this.set_cascadeValue(value);\r\n }\r\n\r\n protected get_filterField() {\r\n return (this.options as Select2EditorOptions).filterField;\r\n }\r\n\r\n get filterField(): string {\r\n return this.get_filterField();\r\n }\r\n\r\n protected set_filterField(value: string) {\r\n (this.options as Select2EditorOptions).filterField = value;\r\n }\r\n\r\n set filterField(value: string) {\r\n this.set_filterField(value);\r\n }\r\n\r\n protected get_filterValue(): any {\r\n return (this.options as Select2EditorOptions).filterValue;\r\n }\r\n\r\n get filterValue(): any {\r\n return this.get_filterValue();\r\n }\r\n\r\n protected set_filterValue(value: any) {\r\n if ((this.options as Select2EditorOptions).filterValue !== value) {\r\n (this.options as Select2EditorOptions).filterValue = value;\r\n this.set_value(null);\r\n this.updateItems();\r\n }\r\n }\r\n\r\n set filterValue(value: any) {\r\n this.set_filterValue(value);\r\n }\r\n\r\n protected cascadeItems(items: TItem[]) {\r\n\r\n var val = this.get_cascadeValue();\r\n\r\n if (val == null || val === '') {\r\n\r\n if (!Q.isEmptyOrNull(this.get_cascadeField())) {\r\n return [];\r\n }\r\n\r\n return items;\r\n }\r\n\r\n var key = val.toString();\r\n var fld = this.get_cascadeField();\r\n\r\n return items.filter(x => {\r\n var itemKey = Q.coalesce(x[fld], Serenity.ReflectionUtils.getPropertyValue(x, fld));\r\n return !!(itemKey != null && itemKey.toString() === key);\r\n });\r\n }\r\n\r\n protected filterItems(items: TItem[]) {\r\n var val = this.get_filterValue();\r\n\r\n if (val == null || val === '') {\r\n return items;\r\n }\r\n\r\n var key = val.toString();\r\n var fld = this.get_filterField();\r\n\r\n return items.filter(x => {\r\n var itemKey = Q.coalesce(x[fld], Serenity.ReflectionUtils.getPropertyValue(x, fld));\r\n return !!(itemKey != null && itemKey.toString() === key);\r\n });\r\n }\r\n\r\n protected updateItems() {\r\n }\r\n\r\n protected getDialogTypeKey() {\r\n if ((this.options as Select2EditorOptions).dialogType != null) {\r\n return (this.options as Select2EditorOptions).dialogType;\r\n }\r\n\r\n return null;\r\n }\r\n\r\n protected createEditDialog(callback: (dlg: IEditDialog) => void) {\r\n var dialogTypeKey = this.getDialogTypeKey();\r\n var dialogType = Serenity.DialogTypeRegistry.get(dialogTypeKey);\r\n Serenity.Widget.create({\r\n type: dialogType,\r\n init: x => callback(x as any)\r\n });\r\n }\r\n\r\n public onInitNewEntity: (entity: TItem) => void;\r\n\r\n protected initNewEntity(entity: TItem) {\r\n if (!Q.isEmptyOrNull(this.get_cascadeField())) {\r\n entity[this.get_cascadeField()] = this.get_cascadeValue();\r\n }\r\n\r\n if (!Q.isEmptyOrNull(this.get_filterField())) {\r\n entity[this.get_filterField()] = this.get_filterValue();\r\n }\r\n\r\n if (this.onInitNewEntity != null) {\r\n this.onInitNewEntity(entity);\r\n }\r\n }\r\n\r\n protected setEditDialogReadOnly(dialog: any): void {\r\n // an ugly workaround\r\n dialog.element && dialog.element\r\n .find('.tool-button.delete-button')\r\n .addClass('disabled')\r\n .unbind('click');\r\n }\r\n\r\n protected editDialogDataChange() {\r\n }\r\n\r\n protected setTermOnNewEntity(entity: TItem, term: string) {\r\n }\r\n\r\n protected inplaceCreateClick(e: JQueryEventObject) {\r\n\r\n if (this.get_readOnly() &&\r\n ((this.isMultiple() && !e['editItem']) || !this.value))\r\n return;\r\n\r\n this.createEditDialog(dialog => {\r\n\r\n if (this.get_readOnly())\r\n this.setEditDialogReadOnly(dialog);\r\n\r\n Serenity.SubDialogHelper.bindToDataChange(dialog, this, (x, dci) => {\r\n this.editDialogDataChange();\r\n this.updateItems();\r\n this.lastCreateTerm = null;\r\n\r\n if ((dci.type === 'create' || dci.type === 'update') &&\r\n dci.entityId != null) {\r\n var id = dci.entityId.toString();\r\n\r\n if (this.isMultiple()) {\r\n var values = this.get_values().slice();\r\n if (values.indexOf(id) < 0) {\r\n values.push(id);\r\n }\r\n this.set_values(null);\r\n this.set_values(values.slice());\r\n }\r\n else {\r\n this.set_value(null);\r\n this.set_value(id);\r\n }\r\n }\r\n else if (this.isMultiple() && dci.type === 'delete' &&\r\n dci.entityId != null) {\r\n var id1 = dci.entityId.toString();\r\n var values1 = this.get_values().slice();\r\n\r\n var idx1 = values1.indexOf(id1);\r\n if (idx1 >= 0)\r\n values1.splice(idx1, 1);\r\n\r\n this.set_values(values1.slice());\r\n }\r\n else if (!this.isMultiple()) {\r\n this.set_value(null);\r\n }\r\n }, true);\r\n\r\n var editItem = e['editItem'];\r\n if (editItem != null) {\r\n dialog.load(editItem, () => {\r\n (dialog as any).dialogOpen(this.openDialogAsPanel);\r\n }, null);\r\n }\r\n else if (this.isMultiple() || Q.isEmptyOrNull(this.get_value())) {\r\n var entity: TItem = {} as any;\r\n this.setTermOnNewEntity(entity, Q.trimToEmpty(this.lastCreateTerm));\r\n this.initNewEntity(entity);\r\n dialog.load(entity, () => {\r\n (dialog as any).dialogOpen(this.openDialogAsPanel);\r\n }, null);\r\n }\r\n else {\r\n dialog.load(this.get_value(), () => {\r\n (dialog as any).dialogOpen(this.openDialogAsPanel);\r\n }, null);\r\n }\r\n });\r\n }\r\n\r\n public openDialogAsPanel: boolean;\r\n }\r\n\r\n declare namespace Select2Extensions {\r\n function select2(element: JQuery): JQuery;\r\n function select2(element: JQuery, options: Select2Options): JQuery;\r\n function select2(element: JQuery, action: string): JQuery;\r\n function select2(element: JQuery, option: string, value: any): JQuery;\r\n function select2(element: JQuery, option: string): any;\r\n }\r\n\r\n export interface Select2Item {\r\n id: string;\r\n text: string;\r\n source?: any;\r\n disabled?: boolean;\r\n }\r\n\r\n @Serenity.Decorators.registerClass('Serenity.SelectEditor')\r\n export class SelectEditor extends Select2Editor<SelectEditorOptions, Select2Item> {\r\n constructor(hidden: JQuery, opt?: SelectEditorOptions) {\r\n super(hidden, opt);\r\n this.updateItems();\r\n }\r\n\r\n getItems() {\r\n return this.options.items || [];\r\n }\r\n\r\n protected emptyItemText() {\r\n if (!Q.isEmptyOrNull(this.options.emptyOptionText)) {\r\n return this.options.emptyOptionText;\r\n }\r\n return super.emptyItemText();\r\n }\r\n\r\n updateItems() {\r\n var items = this.getItems();\r\n this.clearItems();\r\n\r\n if (items.length > 0) {\r\n var isStrings = typeof (items[0]) === 'string';\r\n for (var item of items) {\r\n var key = isStrings ? item : item[0];\r\n var text = isStrings ? item : Q.coalesce(item[1], item[0]);\r\n this.addOption(key, text, item, false);\r\n }\r\n }\r\n }\r\n }\r\n\r\n export interface SelectEditorOptions extends Select2CommonOptions {\r\n items?: any[];\r\n emptyOptionText?: string;\r\n }\r\n}","namespace Serenity {\r\n\r\n @Decorators.registerEditor('Serenity.DateYearEditor')\r\n export class DateYearEditor extends SelectEditor {\r\n\r\n constructor(hidden: JQuery, opt: DateYearEditorOptions) {\r\n super(hidden, opt);\r\n\r\n this.updateItems();\r\n }\r\n\r\n getItems() {\r\n var opt = this.options as DateYearEditorOptions;\r\n\r\n if (opt.items != null && opt.items.length >= 1) {\r\n return opt.items;\r\n }\r\n\r\n var years = [];\r\n var minYear = (new Date()).getFullYear();\r\n var maxYear = (new Date()).getFullYear();\r\n\r\n opt.minYear = Q.coalesce(opt.minYear, '-10').toString();\r\n if (Q.startsWith(opt.minYear, '-')) {\r\n minYear -= parseInt(opt.minYear.substr(1), 10);\r\n }\r\n else if (Q.startsWith(opt.minYear, '+')) {\r\n minYear += parseInt(opt.minYear.substr(1), 10);\r\n }\r\n else {\r\n minYear = parseInt(opt.minYear, 10);\r\n }\r\n\r\n opt.maxYear = Q.coalesce(opt.maxYear, '+10').toString();\r\n if (Q.startsWith(opt.maxYear, '-')) {\r\n maxYear -= parseInt(opt.maxYear.substr(1), 10);\r\n }\r\n else if (Q.startsWith(opt.maxYear, '+')) {\r\n maxYear += parseInt(opt.maxYear.substr(1), 10);\r\n }\r\n else {\r\n maxYear = parseInt(opt.maxYear, 10);\r\n }\r\n\r\n if (opt.descending) {\r\n for (var i = maxYear; i >= minYear; i--) {\r\n years.push(i.toString());\r\n }\r\n }\r\n else {\r\n for (var i1 = minYear; i1 <= maxYear; i1++) {\r\n years.push(i1.toString());\r\n }\r\n }\r\n\r\n return years;\r\n }\r\n }\r\n\r\n export interface DateYearEditorOptions extends SelectEditorOptions {\r\n minYear?: string;\r\n maxYear?: string;\r\n descending?: boolean;\r\n }\r\n\r\n}","namespace Serenity {\r\n\r\n export interface LookupEditorOptions extends Select2EditorOptions {\r\n lookupKey?: string;\r\n }\r\n\r\n @Serenity.Decorators.registerEditor(\"Serenity.LookupEditorBase\")\r\n export class LookupEditorBase<TOptions extends LookupEditorOptions, TItem> extends Select2Editor<TOptions, TItem> {\r\n\r\n constructor(input: JQuery, opt?: TOptions) {\r\n super(input, opt);\r\n\r\n var self = this;\r\n if (!this.isAsyncWidget()) {\r\n this.updateItems();\r\n Q.ScriptData.bindToChange('Lookup.' + this.getLookupKey(), this.uniqueName, function () {\r\n self.updateItems();\r\n });\r\n }\r\n }\r\n\r\n protected initializeAsync(): PromiseLike<void> {\r\n return this.updateItemsAsync().then(() => {\r\n Q.ScriptData.bindToChange('Lookup.' + this.getLookupKey(), this.uniqueName, () => {\r\n this.updateItemsAsync();\r\n });\r\n }, null);\r\n }\r\n\r\n destroy(): void {\r\n Q.ScriptData.unbindFromChange(this.uniqueName);\r\n super.destroy();\r\n }\r\n\r\n protected getLookupKey(): string {\r\n if (this.options.lookupKey != null) {\r\n return this.options.lookupKey;\r\n }\r\n\r\n var key = (ss as any).getTypeFullName((ss as any).getInstanceType(this));\r\n\r\n var idx = key.indexOf('.');\r\n if (idx >= 0) {\r\n key = key.substring(idx + 1);\r\n }\r\n\r\n if (Q.endsWith(key, 'Editor')) {\r\n key = key.substr(0, key.length - 6);\r\n }\r\n\r\n return key;\r\n }\r\n\r\n protected getLookup(): Q.Lookup<TItem> {\r\n return Q.getLookup<TItem>(this.getLookupKey());\r\n }\r\n\r\n protected getLookupAsync(): PromiseLike<Q.Lookup<TItem>> {\r\n return Promise.resolve().then(() => {\r\n var key = this.getLookupKey();\r\n return Q.getLookupAsync<TItem>(key);\r\n }, null);\r\n }\r\n\r\n protected getItems(lookup: Q.Lookup<TItem>) {\r\n return this.filterItems(this.cascadeItems(lookup.items));\r\n }\r\n\r\n protected getItemText(item: TItem, lookup: Q.Lookup<TItem>) {\r\n var textValue = lookup.textFormatter ? lookup.textFormatter(item) : item[lookup.textField];\r\n return textValue == null ? '' : textValue.toString();\r\n }\r\n\r\n protected getItemDisabled(item: TItem, lookup: Q.Lookup<TItem>) {\r\n return false;\r\n }\r\n\r\n public updateItems() {\r\n var lookup = this.getLookup();\r\n this.clearItems();\r\n var items = this.getItems(lookup);\r\n for (var $t1 = 0; $t1 < items.length; $t1++) {\r\n var item = items[$t1];\r\n var text = this.getItemText(item, lookup);\r\n var disabled = this.getItemDisabled(item, lookup);\r\n var idValue = item[lookup.idField];\r\n var id = (idValue == null ? '' : idValue.toString());\r\n this.addItem({\r\n id: id,\r\n text: text,\r\n source: item,\r\n disabled: disabled\r\n });\r\n }\r\n }\r\n\r\n public updateItemsAsync(): PromiseLike<void> {\r\n return this.getLookupAsync().then((lookup) => {\r\n this.clearItems();\r\n var items = this.getItems(lookup);\r\n for (var $t1 = 0; $t1 < items.length; $t1++) {\r\n var item = items[$t1];\r\n var text = this.getItemText(item, lookup);\r\n var disabled = this.getItemDisabled(item, lookup);\r\n var idValue = item[lookup.idField];\r\n var id = (idValue == null ? '' : idValue.toString());\r\n this.addItem({ id: id, text: text, source: item, disabled: disabled });\r\n }\r\n }, null);\r\n }\r\n\r\n protected getDialogTypeKey() {\r\n var dialogTypeKey = super.getDialogTypeKey();\r\n if (dialogTypeKey)\r\n return dialogTypeKey;\r\n\r\n return this.getLookupKey();\r\n }\r\n\r\n protected setCreateTermOnNewEntity(entity: TItem, term: string) {\r\n entity[this.getLookup().textField] = term;\r\n }\r\n\r\n protected editDialogDataChange() {\r\n Q.reloadLookup(this.getLookupKey());\r\n }\r\n } \r\n\r\n @Decorators.registerEditor('Serenity.LookupEditor')\r\n export class LookupEditor extends LookupEditorBase<LookupEditorOptions, any> {\r\n constructor(hidden: JQuery, opt?: LookupEditorOptions) {\r\n super(hidden, opt);\r\n }\r\n }\r\n}","namespace Serenity {\r\n\r\n import Option = Serenity.Decorators.option\r\n\r\n export namespace EditorTypeRegistry {\r\n let knownTypes: Q.Dictionary<WidgetClass>;\r\n\r\n export function get(key: string): WidgetClass {\r\n\r\n if (Q.isEmptyOrNull(key)) {\r\n throw new (ss as any).ArgumentNullException('key');\r\n }\r\n\r\n initialize();\r\n\r\n var editorType = knownTypes[key.toLowerCase()];\r\n if (editorType == null) {\r\n\r\n var type = Q.typeByFullName(key);\r\n if (type != null) {\r\n knownTypes[key.toLowerCase()] = type;\r\n return type;\r\n }\r\n\r\n throw new ss.Exception(Q.format(\"Can't find {0} editor type!\", key));\r\n }\r\n return editorType;\r\n\r\n }\r\n\r\n function initialize(): void {\r\n\r\n if (knownTypes != null)\r\n return;\r\n\r\n knownTypes = {};\r\n\r\n var assemblies = (ss as any).getAssemblies();\r\n for (var assembly of assemblies) {\r\n for (var type of (ss as any).getAssemblyTypes(assembly)) {\r\n\r\n if (!(type.prototype instanceof Serenity.Widget)) {\r\n continue;\r\n }\r\n\r\n if ((ss as any).isGenericTypeDefinition(type)) {\r\n continue;\r\n }\r\n\r\n var fullName = (ss as any).getTypeFullName(type).toLowerCase();\r\n knownTypes[fullName] = type;\r\n\r\n var editorAttr = (ss as any).getAttributes(type, Serenity.EditorAttribute, false);\r\n if (editorAttr != null && editorAttr.length > 0) {\r\n var attrKey = editorAttr[0].key;\r\n if (!Q.isEmptyOrNull(attrKey)) {\r\n knownTypes[attrKey.toLowerCase()] = type;\r\n }\r\n }\r\n\r\n for (var k of Q.Config.rootNamespaces) {\r\n if (Q.startsWith(fullName, k.toLowerCase() + '.')) {\r\n var kx = fullName.substr(k.length + 1).toLowerCase();\r\n if (knownTypes[kx] == null) {\r\n knownTypes[kx] = type;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n setTypeKeysWithoutEditorSuffix();\r\n }\r\n\r\n export function reset(): void {\r\n knownTypes = null;\r\n }\r\n\r\n function setTypeKeysWithoutEditorSuffix() {\r\n var suffix = 'editor';\r\n var keys = Object.keys(knownTypes);\r\n for (var k of keys) {\r\n setWithoutSuffix(k, knownTypes[k]);\r\n }\r\n }\r\n\r\n function setWithoutSuffix(key: string, t: Serenity.WidgetClass) {\r\n var suffix = 'editor';\r\n\r\n if (!Q.endsWith(key, suffix))\r\n return;\r\n\r\n var p = key.substr(0, key.length - suffix.length);\r\n\r\n if (Q.isEmptyOrNull(p))\r\n return;\r\n\r\n if (knownTypes[p] != null)\r\n return;\r\n\r\n knownTypes[p] = knownTypes[key];\r\n }\r\n }\r\n\r\n export namespace EditorUtils {\r\n\r\n export function getDisplayText(editor: Serenity.Widget<any>): string {\r\n\r\n var select2 = editor.element.data('select2');\r\n\r\n if (select2 != null) {\r\n var data = editor.element.select2('data');\r\n if (data == null)\r\n return '';\r\n\r\n return Q.coalesce(data.text, '');\r\n }\r\n\r\n var value = getValue(editor);\r\n if (value == null) {\r\n return '';\r\n }\r\n\r\n if (typeof value === \"string\")\r\n return value;\r\n\r\n if (value instanceof Boolean)\r\n return (!!value ? Q.coalesce(Q.tryGetText('Controls.FilterPanel.OperatorNames.true'), 'True') :\r\n Q.coalesce(Q.tryGetText('Controls.FilterPanel.OperatorNames.true'), 'False'));\r\n\r\n return value.toString();\r\n }\r\n\r\n var dummy: PropertyItem = { name: '_' };\r\n\r\n export function getValue(editor: Serenity.Widget<any>): any {\r\n var target = {};\r\n saveValue(editor, dummy, target);\r\n return target['_'];\r\n }\r\n\r\n export function saveValue(editor: Serenity.Widget<any>, item: PropertyItem, target: any): void {\r\n\r\n var getEditValue = (ss as any).safeCast(editor, Serenity.IGetEditValue);\r\n\r\n if (getEditValue != null) {\r\n getEditValue.getEditValue(item, target);\r\n return;\r\n }\r\n\r\n var stringValue = (ss as any).safeCast(editor, Serenity.IStringValue);\r\n if (stringValue != null) {\r\n target[item.name] = stringValue.get_value();\r\n return;\r\n }\r\n\r\n var booleanValue = (ss as any).safeCast(editor, Serenity.IBooleanValue);\r\n if (booleanValue != null) {\r\n target[item.name] = booleanValue.get_value();\r\n return;\r\n }\r\n\r\n var doubleValue = (ss as any).safeCast(editor, Serenity.IDoubleValue);\r\n if (doubleValue != null) {\r\n var value = doubleValue.get_value();\r\n target[item.name] = (isNaN(value) ? null : value);\r\n return;\r\n }\r\n\r\n if ((editor as any).getEditValue != null) {\r\n (editor as any).getEditValue(item, target);\r\n return;\r\n }\r\n\r\n if (editor.element.is(':input')) {\r\n target[item.name] = editor.element.val();\r\n return;\r\n }\r\n }\r\n\r\n export function setValue(editor: Serenity.Widget<any>, value: any): void {\r\n var source = { _: value };\r\n loadValue(editor, dummy, source);\r\n }\r\n\r\n export function loadValue(editor: Serenity.Widget<any>, item: PropertyItem, source: any): void {\r\n\r\n var setEditValue = (ss as any).safeCast(editor, Serenity.ISetEditValue);\r\n if (setEditValue != null) {\r\n setEditValue.setEditValue(source, item);\r\n return;\r\n }\r\n\r\n var stringValue = (ss as any).safeCast(editor, Serenity.IStringValue);\r\n if (stringValue != null) {\r\n var value = source[item.name];\r\n if (value != null) {\r\n value = value.toString();\r\n }\r\n stringValue.set_value((ss as any).cast(value, String));\r\n return;\r\n }\r\n\r\n var booleanValue = (ss as any).safeCast(editor, Serenity.IBooleanValue);\r\n if (booleanValue != null) {\r\n var value1 = source[item.name];\r\n if (typeof (value1) === 'number') {\r\n booleanValue.set_value(value1 > 0);\r\n }\r\n else {\r\n booleanValue.set_value(!!value1);\r\n }\r\n return;\r\n }\r\n\r\n var doubleValue = (ss as any).safeCast(editor, Serenity.IDoubleValue);\r\n if (doubleValue != null) {\r\n var d = source[item.name];\r\n if (!!(d == null || (ss as any).isInstanceOfType(d, String) && Q.isTrimmedEmpty((ss as any).cast(d, String)))) {\r\n doubleValue.set_value(null);\r\n }\r\n else if ((ss as any).isInstanceOfType(d, String)) {\r\n doubleValue.set_value((ss as any).cast(Q.parseDecimal((ss as any).cast(d, String)), Number));\r\n }\r\n else if ((ss as any).isInstanceOfType(d, Boolean)) {\r\n doubleValue.set_value((!!d ? 1 : 0));\r\n }\r\n else {\r\n doubleValue.set_value((ss as any).cast(d, Number));\r\n }\r\n return;\r\n }\r\n\r\n if ((editor as any).setEditValue != null) {\r\n (editor as any).setEditValue(source, item);\r\n return;\r\n }\r\n\r\n if (editor.element.is(':input')) {\r\n var v = source[item.name];\r\n if (v == null) {\r\n editor.element.val('');\r\n }\r\n else {\r\n editor.element.val(v);\r\n }\r\n return;\r\n }\r\n }\r\n\r\n export function setReadonly(elements: JQuery, isReadOnly: boolean): JQuery {\r\n elements.each(function (index, el) {\r\n var elx = $(el);\r\n var type = elx.attr('type');\r\n if (elx.is('select') || type === 'radio' || type === 'checkbox') {\r\n if (isReadOnly) {\r\n elx.addClass('readonly').attr('disabled', 'disabled');\r\n }\r\n else {\r\n elx.removeClass('readonly').removeAttr('disabled');\r\n }\r\n }\r\n else if (isReadOnly) {\r\n elx.addClass('readonly').attr('readonly', 'readonly');\r\n }\r\n else {\r\n elx.removeClass('readonly').removeAttr('readonly');\r\n }\r\n return true;\r\n });\r\n return elements;\r\n }\r\n\r\n export function setReadOnly(widget: Serenity.Widget<any>, isReadOnly: boolean): void {\r\n\r\n var readOnly = (ss as any).safeCast(widget, Serenity.IReadOnly);\r\n\r\n if (readOnly != null) {\r\n readOnly.set_readOnly(isReadOnly);\r\n }\r\n else if (widget.element.is(':input')) {\r\n setReadonly(widget.element, isReadOnly);\r\n }\r\n }\r\n\r\n export function setRequired(widget: Serenity.Widget<any>, isRequired: boolean): void {\r\n var req = (ss as any).safeCast(widget, IValidateRequired);\r\n if (req != null) {\r\n req.set_required(isRequired);\r\n }\r\n else if (widget.element.is(':input')) {\r\n widget.element.toggleClass('required', !!isRequired);\r\n }\r\n var gridField = WX.getGridField(widget);\r\n var hasSupItem = gridField.find('sup').get().length > 0;\r\n if (isRequired && !hasSupItem) {\r\n $('<sup>*</sup>').attr('title', Q.text('Controls.PropertyGrid.RequiredHint'))\r\n .prependTo(gridField.find('.caption')[0]);\r\n }\r\n else if (!isRequired && hasSupItem) {\r\n $(gridField.find('sup')[0]).remove();\r\n }\r\n }\r\n\r\n export function setContainerReadOnly(container: JQuery, readOnly: boolean) {\r\n\r\n if (!readOnly) {\r\n\r\n if (!container.hasClass('readonly-container'))\r\n return;\r\n\r\n container.removeClass('readonly-container').find(\".editor.container-readonly\")\r\n .removeClass('container-readonly').each((i, e) => {\r\n var w = $(e).tryGetWidget(Serenity.Widget);\r\n if (w != null)\r\n Serenity.EditorUtils.setReadOnly(w, false);\r\n else\r\n Serenity.EditorUtils.setReadonly($(e), false);\r\n });\r\n\r\n return;\r\n }\r\n\r\n container.addClass('readonly-container').find(\".editor\")\r\n .not('.container-readonly')\r\n .each((i, e) => {\r\n var w = $(e).tryGetWidget(Serenity.Widget);\r\n if (w != null) {\r\n\r\n if (w['get_readOnly']) {\r\n if (w['get_readOnly']())\r\n return;\r\n }\r\n else if ($(e).is('[readonly]') || $(e).is('[disabled]') || $(e).is('.readonly') || $(e).is('.disabled'))\r\n return;\r\n\r\n $(e).addClass('container-readonly');\r\n Serenity.EditorUtils.setReadOnly(w, true);\r\n\r\n }\r\n else {\r\n if ($(e).is('[readonly]') || $(e).is('[disabled]') || $(e).is('.readonly') || $(e).is('.disabled'))\r\n return;\r\n\r\n Serenity.EditorUtils.setReadonly($(e).addClass('container-readonly'), true);\r\n }\r\n });\r\n }\r\n }\r\n\r\n function Editor(name: string, intf?: any[]) {\r\n return Decorators.registerEditor('Serenity.' + name + 'Editor', intf)\r\n }\r\n\r\n import Element = Decorators.element\r\n\r\n @Editor('Boolean', [IBooleanValue])\r\n @Element('<input type=\"checkbox\"/>')\r\n export class BooleanEditor extends Widget<any> {\r\n\r\n constructor(input: JQuery) {\r\n super(input);\r\n\r\n input.removeClass(\"flexify\");\r\n }\r\n\r\n public get value(): boolean {\r\n return this.element.is(\":checked\");\r\n }\r\n\r\n protected get_value(): boolean {\r\n return this.value;\r\n }\r\n\r\n public set value(value: boolean) {\r\n this.element.prop(\"checked\", !!value);\r\n }\r\n\r\n protected set_value(value: boolean): void {\r\n this.value = value;\r\n }\r\n }\r\n\r\n @Editor('Decimal', [IDoubleValue])\r\n @Element('<input type=\"text\"/>')\r\n export class DecimalEditor extends Widget<DecimalEditorOptions> implements IDoubleValue {\r\n\r\n constructor(input: JQuery, opt?: DecimalEditorOptions) {\r\n super(input, opt);\r\n\r\n input.addClass('decimalQ');\r\n\t\t\tvar numericOptions = $.extend(Serenity.DecimalEditor.defaultAutoNumericOptions(), {\r\n\t\t\t\tvMin: Q.coalesce(this.options.minValue, this.options.allowNegatives ? (this.options.maxValue != null ? (\"-\" + this.options.maxValue) : '-999999999999.99') : '0.00'),\r\n vMax: Q.coalesce(this.options.maxValue, '999999999999.99')\r\n });\r\n\r\n if (this.options.decimals != null) {\r\n numericOptions.mDec = this.options.decimals;\r\n }\r\n\r\n if (this.options.padDecimals != null) {\r\n numericOptions.aPad = this.options.padDecimals;\r\n }\r\n\r\n (input as any).autoNumeric(numericOptions);\r\n }\r\n\r\n get_value(): number {\r\n var val = (this.element as any).autoNumeric('get');\r\n\r\n if (!!(val == null || val === ''))\r\n return null;\r\n\r\n return parseFloat(val);\r\n }\r\n\r\n get value(): number {\r\n return this.get_value();\r\n }\r\n\r\n set_value(value: number) {\r\n if (value == null || (value as any) === '') {\r\n this.element.val('');\r\n }\r\n else {\r\n (this.element as any).autoNumeric('set', value);\r\n }\r\n }\r\n\r\n set value(v: number) {\r\n this.set_value(v);\r\n }\r\n\r\n get_isValid(): boolean {\r\n return !isNaN(this.get_value());\r\n }\r\n\r\n static defaultAutoNumericOptions(): any {\r\n return {\r\n aDec: Q.Culture.decimalSeparator,\r\n altDec: ((Q.Culture.decimalSeparator === '.') ? ',' : '.'),\r\n aSep: ((Q.Culture.decimalSeparator === '.') ? ',' : '.'),\r\n aPad: true\r\n };\r\n }\r\n }\r\n\r\n export interface IntegerEditorOptions {\r\n minValue?: number;\r\n\t\tmaxValue?: number;\r\n\t\tallowNegatives?: boolean;\r\n }\r\n\r\n @Editor('Integer', [IDoubleValue])\r\n @Element('<input type=\"text\"/>')\r\n export class IntegerEditor extends Widget<IntegerEditorOptions> implements IDoubleValue {\r\n\r\n constructor(input: JQuery, opt?: IntegerEditorOptions) {\r\n super(input, opt);\r\n\r\n input.addClass('integerQ');\r\n var numericOptions = $.extend(Serenity.DecimalEditor.defaultAutoNumericOptions(),\r\n {\r\n\t\t\t\t\tvMin: Q.coalesce(this.options.minValue, this.options.allowNegatives ? (this.options.maxValue != null ? (\"-\" + this.options.maxValue) : '-2147483647') : '0'),\r\n vMax: Q.coalesce(this.options.maxValue, 2147483647),\r\n aSep: null\r\n });\r\n\r\n (input as any).autoNumeric(numericOptions);\r\n }\r\n\r\n get_value(): number {\r\n var val = (this.element as any).autoNumeric('get');\r\n if (!!Q.isTrimmedEmpty(val)) {\r\n return null;\r\n }\r\n else {\r\n return parseInt(val, 10);\r\n }\r\n }\r\n\r\n get value(): number {\r\n return this.get_value();\r\n }\r\n\r\n set_value(value: number) {\r\n if (value == null || (value as any) === '') {\r\n this.element.val('');\r\n }\r\n else {\r\n (this.element as any).autoNumeric('set', value);\r\n }\r\n }\r\n\r\n set value(v: number) {\r\n this.set_value(v);\r\n }\r\n\r\n get_isValid(): boolean {\r\n return !isNaN(this.get_value());\r\n }\r\n }\r\n\r\n\r\n export interface DecimalEditorOptions {\r\n minValue?: string;\r\n maxValue?: string;\r\n decimals?: any;\r\n\t\tpadDecimals?: any;\r\n\t\tallowNegatives?: boolean;\r\n }\r\n\r\n export interface EmailEditorOptions {\r\n domain?: string;\r\n readOnlyDomain?: boolean;\r\n }\r\n\r\n @Editor('Email', [IStringValue, IReadOnly])\r\n @Element('<input type=\"text\"/>')\r\n export class EmailEditor extends Widget<EmailEditorOptions> {\r\n\r\n constructor(input: JQuery, opt: EmailEditorOptions) {\r\n super(input, opt);\r\n\r\n EmailEditor.registerValidationMethods();\r\n\r\n input.addClass('emailuser').removeClass('flexify');\r\n\r\n var spanAt = $('<span/>').text('@').addClass('emailat').insertAfter(input);\r\n\r\n var domain = $('<input type=\"text\"/>').addClass('emaildomain').addClass('flexify').insertAfter(spanAt);\r\n domain.bind('blur.' + this.uniqueName, function () {\r\n var validator = domain.closest('form').data('validator');\r\n if (validator != null) {\r\n validator.element(input[0]);\r\n }\r\n });\r\n\r\n if (!Q.isEmptyOrNull(this.options.domain)) {\r\n domain.val(this.options.domain);\r\n }\r\n\r\n if (this.options.readOnlyDomain) {\r\n domain.attr('readonly', 'readonly').addClass('disabled').attr('tabindex', '-1');\r\n }\r\n\r\n input.bind('keypress.' + this.uniqueName, e => {\r\n if (e.which === 64) {\r\n e.preventDefault();\r\n if (!this.options.readOnlyDomain) {\r\n domain.focus();\r\n domain.select();\r\n }\r\n }\r\n });\r\n\r\n domain.bind('keypress.' + this.uniqueName, function (e1) {\r\n if (e1.which === 64) {\r\n e1.preventDefault();\r\n }\r\n });\r\n\r\n if (!this.options.readOnlyDomain) {\r\n input.change(e2 => this.set_value(input.val()));\r\n }\r\n }\r\n\r\n static registerValidationMethods(): void {\r\n if ($.validator.methods['emailuser'] != null)\r\n return;\r\n\r\n $.validator.addMethod('emailuser', function (value, element) {\r\n\r\n var domain = $(element).nextAll('.emaildomain');\r\n if (domain.length > 0 && domain.attr('readonly') == null) {\r\n\r\n if (this.optional(element) && this.optional(domain[0])) {\r\n return true;\r\n }\r\n\r\n value = value + '@' + domain.val();\r\n\r\n if (Q.Config.emailAllowOnlyAscii) {\r\n return (new RegExp(\"^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}\" +\r\n \"[a-zA-Z0-9])?(?:\\\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$\"))\r\n .test(value);\r\n }\r\n\r\n return (new RegExp(\"^((([a-z]|\\\\d|[!#\\\\$%&'\\\\*\\\\+\\\\-\\\\/=\\\\?\\\\^_`{\\\\|}~]|\" +\r\n \"[\\\\u00A0-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFEF])+(\\\\.([a-z]|\\\\d|\" +\r\n \"[!#\\\\$%&'\\\\*\\\\+\\\\-\\\\/=\\\\?\\\\^_`{\\\\|}~]|[\\\\u00A0-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFEF])+)*)|\" +\r\n \"((\\\\x22)((((\\\\x20|\\\\x09)*(\\\\x0d\\\\x0a))?(\\\\x20|\\\\x09)+)?(([\\\\x01-\\\\x08\\\\x0b\\\\x0c\\\\x0e-\\\\x1f\\\\x7f]|\" +\r\n \"\\\\x21|[\\\\x23-\\\\x5b]|[\\\\x5d-\\\\x7e]|[\\\\u00A0-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFEF])|(\\\\\\\\([\\\\x01-\\\\x09\\\\x0b\\\\x0c\\\\x0d-\\\\x7f]|\" +\r\n \"[\\\\u00A0-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFEF]))))*(((\\\\x20|\\\\x09)*(\\\\x0d\\\\x0a))?(\\\\x20|\\\\x09)+)?(\\\\x22)))@((([a-z]|\\\\d|\" +\r\n \"[\\\\u00A0-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFEF])|(([a-z]|\\\\d|[\\\\u00A0-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFEF])\" +\r\n \"([a-z]|\\\\d|-|\\\\.|_|~|[\\\\u00A0-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFEF])*([a-z]|\\\\d|[\\\\u00A0-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFEF])))\\\\.)\" +\r\n \"+(([a-z]|[\\\\u00A0-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFEF])|(([a-z]|[\\\\u00A0-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFEF])([a-z]|\\\\d|-|\\\\.|_|~|\" +\r\n \"[\\\\u00A0-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFEF])*([a-z]|[\\\\u00A0-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFEF])))$\", 'i')).test(value);\r\n }\r\n else {\r\n\r\n if (Q.Config.emailAllowOnlyAscii) {\r\n return this.optional(element) || (new RegExp(\"^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+$\")).test(value);\r\n }\r\n\r\n return this.optional(element) || (new RegExp(\"^((([a-z]|\\\\d|[!#\\\\$%&'\\\\*\\\\+\\\\-\\\\/=\\\\?\\\\^_`{\\\\|}~]|[\\\\u00A0-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFEF])+\" +\r\n \"(\\\\.([a-z]|\\\\d|[!#\\\\$%&'\\\\*\\\\+\\\\-\\\\/=\\\\?\\\\^_`{\\\\|}~]|[\\\\u00A0-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFEF])+)*)|((\\\\x22)((((\\\\x20|\\\\x09)*\" +\r\n \"(\\\\x0d\\\\x0a))?(\\\\x20|\\\\x09)+)?(([\\\\x01-\\\\x08\\\\x0b\\\\x0c\\\\x0e-\\\\x1f\\\\x7f]|\\\\x21|[\\\\x23-\\\\x5b]|[\\\\x5d-\\\\x7e]|[\\\\u00A0-\\\\uD7FF\\\\uF900-\" +\r\n \"\\\\uFDCF\\\\uFDF0-\\\\uFFEF])|(\\\\\\\\([\\\\x01-\\\\x09\\\\x0b\\\\x0c\\\\x0d-\\\\x7f]|[\\\\u00A0-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFEF]))))*(((\\\\x20|\\\\x09)*\" +\r\n \"(\\\\x0d\\\\x0a))?(\\\\x20|\\\\x09)+)?(\\\\x22)))$\", 'i')).test(value);\r\n }\r\n }, Q.text(\"Validation.Email\"));\r\n }\r\n\r\n get_value(): string {\r\n var domain = this.element.nextAll('.emaildomain');\r\n var value = this.element.val();\r\n var domainValue = domain.val();\r\n if (Q.isEmptyOrNull(value)) {\r\n if (this.options.readOnlyDomain || Q.isEmptyOrNull(domainValue)) {\r\n return '';\r\n }\r\n return '@' + domainValue;\r\n }\r\n return value + '@' + domainValue;\r\n }\r\n\r\n get value(): string {\r\n return this.get_value();\r\n }\r\n\r\n set_value(value: string): void {\r\n var domain = this.element.nextAll('.emaildomain');\r\n value = Q.trimToNull(value);\r\n if (value == null) {\r\n if (!this.options.readOnlyDomain) {\r\n domain.val('');\r\n }\r\n this.element.val('');\r\n }\r\n else {\r\n var parts = value.split('@');\r\n if (parts.length > 1) {\r\n if (!this.options.readOnlyDomain) {\r\n domain.val(parts[1]);\r\n this.element.val(parts[0]);\r\n }\r\n else if (!Q.isEmptyOrNull(this.options.domain)) {\r\n if (parts[1] !== this.options.domain) {\r\n this.element.val(value);\r\n }\r\n else {\r\n this.element.val(parts[0]);\r\n }\r\n }\r\n else {\r\n this.element.val(parts[0]);\r\n }\r\n }\r\n else {\r\n this.element.val(parts[0]);\r\n }\r\n }\r\n }\r\n\r\n set value(v: string) {\r\n this.set_value(v);\r\n }\r\n\r\n get_readOnly(): boolean {\r\n var domain = this.element.nextAll('.emaildomain');\r\n return !(this.element.attr('readonly') == null &&\r\n (!this.options.readOnlyDomain || domain.attr('readonly') == null));\r\n }\r\n\r\n set_readOnly(value: boolean): void {\r\n var domain = this.element.nextAll('.emaildomain');\r\n if (value) {\r\n this.element.attr('readonly', 'readonly').addClass('readonly');\r\n if (!this.options.readOnlyDomain) {\r\n domain.attr('readonly', 'readonly').addClass('readonly');\r\n }\r\n }\r\n else {\r\n this.element.removeAttr('readonly').removeClass('readonly');\r\n if (!this.options.readOnlyDomain) {\r\n domain.removeAttr('readonly').removeClass('readonly');\r\n }\r\n }\r\n }\r\n }\r\n\r\n export interface EnumEditorOptions extends Select2CommonOptions {\r\n enumKey?: string;\r\n enumType?: any;\r\n }\r\n\r\n @Editor('Enum')\r\n export class EnumEditor extends Select2Editor<EnumEditorOptions, Select2Item> {\r\n constructor(hidden: JQuery, opt: EnumEditorOptions) {\r\n super(hidden, opt);\r\n this.updateItems();\r\n }\r\n\r\n protected updateItems(): void {\r\n this.clearItems();\r\n\r\n var enumType = this.options.enumType || Serenity.EnumTypeRegistry.get(this.options.enumKey);\r\n var enumKey = this.options.enumKey;\r\n\r\n if (enumKey == null && enumType != null) {\r\n var enumKeyAttr = (ss as any).getAttributes(enumType, Serenity.EnumKeyAttribute, false);\r\n if (enumKeyAttr.length > 0) {\r\n enumKey = enumKeyAttr[0].value;\r\n }\r\n }\r\n\r\n var values = (ss as any).Enum.getValues(enumType);\r\n for (var x of values) {\r\n var name = (ss as any).Enum.toString(enumType, x);\r\n this.addOption((ss as any).cast(x, (ss as any).Int32).toString(),\r\n Q.coalesce(Q.tryGetText('Enums.' + enumKey + '.' + name), name), null, false);\r\n }\r\n }\r\n\r\n protected allowClear() {\r\n return Q.coalesce(this.options.allowClear, true);\r\n }\r\n }\r\n\r\n export interface GoogleMapOptions {\r\n latitude?: any;\r\n longitude?: any;\r\n zoom?: any;\r\n mapTypeId?: any;\r\n markerTitle?: string;\r\n markerLatitude?: any;\r\n markerLongitude?: any;\r\n }\r\n\r\n declare var google: any;\r\n\r\n @Editor('GoogleMap', [])\r\n @Element('<div/>')\r\n export class GoogleMap extends Widget<GoogleMapOptions> {\r\n\r\n private map: any;\r\n\r\n constructor(container: JQuery, opt: GoogleMapOptions) {\r\n super(container, opt);\r\n\r\n var center = new google.maps.LatLng(\r\n Q.coalesce(this.options.latitude, 0),\r\n Q.coalesce(this.options.longitude, 0));\r\n\r\n var mapOpt: any = new Object();\r\n mapOpt.center = center;\r\n mapOpt.mapTypeId = Q.coalesce(this.options.mapTypeId, 'roadmap');\r\n mapOpt.zoom = Q.coalesce(this.options.zoom, 15);\r\n mapOpt.zoomControl = true;\r\n this.map = new google.maps.Map(container[0], mapOpt);\r\n\r\n if (this.options.markerTitle != null) {\r\n var markerOpt: any = new Object();\r\n\r\n var lat = this.options.markerLatitude;\r\n if (lat == null) {\r\n lat = Q.coalesce(this.options.latitude, 0);\r\n }\r\n var lon = this.options.markerLongitude;\r\n if (lon == null) {\r\n lon = Q.coalesce(this.options.longitude, 0);\r\n }\r\n markerOpt.position = new google.maps.LatLng(lat, lon);\r\n markerOpt.map = this.map;\r\n markerOpt.title = this.options.markerTitle;\r\n markerOpt.animation = 2;\r\n new google.maps.Marker(markerOpt);\r\n }\r\n\r\n Serenity.LazyLoadHelper.executeOnceWhenShown(container, () => {\r\n google.maps.event.trigger(this.map, 'resize', []);\r\n this.map.setCenter(center);\r\n // in case it wasn't visible (e.g. in dialog)\r\n });\r\n }\r\n\r\n get_map(): any {\r\n return this.map;\r\n }\r\n }\r\n\r\n\r\n export interface HtmlContentEditorOptions {\r\n cols?: any;\r\n rows?: any;\r\n }\r\n\r\n @Editor('HtmlContent', [IStringValue, IReadOnly])\r\n @Element('<textarea/>')\r\n export class HtmlContentEditor extends Widget<HtmlContentEditorOptions>\r\n implements IStringValue, IReadOnly {\r\n\r\n private _instanceReady: boolean;\r\n\r\n constructor(textArea: JQuery, opt?: HtmlContentEditorOptions) {\r\n super(textArea, opt)\r\n\r\n this._instanceReady = false;\r\n HtmlContentEditor.includeCKEditor();\r\n\r\n var id = textArea.attr('id');\r\n if (Q.isTrimmedEmpty(id)) {\r\n textArea.attr('id', this.uniqueName);\r\n id = this.uniqueName;\r\n }\r\n\r\n if (this.options.cols != null)\r\n textArea.attr('cols', this.options.cols);\r\n\r\n if (this.options.rows != null)\r\n textArea.attr('rows', this.options.rows);\r\n\r\n this.addValidationRule(this.uniqueName, e => {\r\n if (e.hasClass('required')) {\r\n var value = Q.trimToNull(this.get_value());\r\n if (value == null)\r\n return Q.text('Validation.Required');\r\n }\r\n\r\n return null;\r\n });\r\n\r\n Serenity.LazyLoadHelper.executeOnceWhenShown(this.element, () => {\r\n var config = this.getConfig();\r\n window['CKEDITOR'] && window['CKEDITOR'].replace(id, config);\r\n });\r\n }\r\n\r\n protected instanceReady(x: any): void {\r\n this._instanceReady = true;\r\n $(x.editor.container.$).addClass(this.element.attr('class'));\r\n this.element.addClass('select2-offscreen').css('display', 'block');\r\n\r\n // for validation to work\r\n x.editor.setData(this.element.val());\r\n x.editor.setReadOnly(this.get_readOnly());\r\n }\r\n\r\n protected getLanguage(): string {\r\n if (!window['CKEDITOR'])\r\n return 'en';\r\n\r\n var CKEDITOR = window['CKEDITOR'];\r\n\r\n var lang = Q.coalesce(Q.trimToNull($('html').attr('lang')), 'en');\r\n if (!!CKEDITOR.lang.languages[lang]) {\r\n return lang;\r\n }\r\n if (lang.indexOf(String.fromCharCode(45)) >= 0) {\r\n lang = lang.split(String.fromCharCode(45))[0];\r\n }\r\n if (!!CKEDITOR.lang.languages[lang]) {\r\n return lang;\r\n }\r\n return 'en';\r\n }\r\n\r\n protected getConfig(): CKEditorConfig {\r\n return {\r\n customConfig: '',\r\n language: this.getLanguage(),\r\n bodyClass: 's-HtmlContentBody',\r\n on: {\r\n instanceReady: (x: any) => this.instanceReady(x),\r\n change: (x1: any) => {\r\n x1.editor.updateElement();\r\n this.element.triggerHandler('change');\r\n }\r\n },\r\n toolbarGroups: [\r\n {\r\n name: 'clipboard',\r\n groups: ['clipboard', 'undo']\r\n }, {\r\n name: 'editing',\r\n groups: ['find', 'selection', 'spellchecker']\r\n }, {\r\n name: 'insert',\r\n groups: ['links', 'insert', 'blocks', 'bidi', 'list', 'indent']\r\n }, {\r\n name: 'forms',\r\n groups: ['forms', 'mode', 'document', 'doctools', 'others', 'about', 'tools']\r\n }, {\r\n name: 'colors'\r\n }, {\r\n name: 'basicstyles',\r\n groups: ['basicstyles', 'cleanup']\r\n }, {\r\n name: 'align'\r\n }, {\r\n name: 'styles'\r\n }],\r\n removeButtons: 'SpecialChar,Anchor,Subscript,Styles',\r\n format_tags: 'p;h1;h2;h3;pre',\r\n removeDialogTabs: 'image:advanced;link:advanced',\r\n removePlugins: 'uploadimage,image2',\r\n contentsCss: Q.resolveUrl('~/Content/site/site.htmlcontent.css'),\r\n entities: false,\r\n entities_latin: false,\r\n entities_greek: false,\r\n autoUpdateElement: true,\r\n height: (this.options.rows == null || this.options.rows === 0) ? null :\r\n ((this.options.rows * 20) + 'px')\r\n };\r\n }\r\n\r\n protected getEditorInstance() {\r\n var id = this.element.attr('id');\r\n return window['CKEDITOR'].instances[id];\r\n }\r\n\r\n destroy(): void {\r\n var instance = this.getEditorInstance();\r\n instance && instance.destroy(true);\r\n super.destroy();\r\n }\r\n\r\n get_value(): string {\r\n var instance = this.getEditorInstance();\r\n if (this._instanceReady && instance) {\r\n return instance.getData();\r\n }\r\n else {\r\n return this.element.val();\r\n }\r\n }\r\n\r\n get value(): string {\r\n return this.get_value();\r\n }\r\n\r\n set_value(value: string): void {\r\n var instance = this.getEditorInstance();\r\n this.element.val(value);\r\n if (this._instanceReady && instance)\r\n instance.setData(value);\r\n }\r\n\r\n set value(v: string) {\r\n this.set_value(v);\r\n }\r\n\r\n get_readOnly(): boolean {\r\n return !Q.isEmptyOrNull(this.element.attr('disabled'));\r\n }\r\n\r\n set_readOnly(value: boolean) {\r\n\r\n if (this.get_readOnly() !== value) {\r\n if (value) {\r\n this.element.attr('disabled', 'disabled');\r\n }\r\n else {\r\n this.element.removeAttr('disabled');\r\n }\r\n\r\n var instance = this.getEditorInstance();\r\n if (this._instanceReady && instance)\r\n instance.setReadOnly(value);\r\n }\r\n }\r\n\r\n static CKEditorVer = \"4.7.1\";\r\n\r\n static includeCKEditor(): void {\r\n if (window['CKEDITOR']) {\r\n return;\r\n }\r\n\r\n var script = $('#CKEditorScript');\r\n if (script.length > 0) {\r\n return;\r\n }\r\n\r\n $('<script/>').attr('type', 'text/javascript')\r\n .attr('id', 'CKEditorScript')\r\n .attr('src', Q.resolveUrl('~/Scripts/CKEditor/ckeditor.js?v=' +\r\n HtmlContentEditor.CKEditorVer))\r\n .appendTo(window.document.head);\r\n };\r\n }\r\n\r\n @Editor('HtmlNoteContent')\r\n export class HtmlNoteContentEditor extends HtmlContentEditor {\r\n constructor(textArea: JQuery, opt?: HtmlContentEditorOptions) {\r\n super(textArea, opt);\r\n }\r\n\r\n protected getConfig(): CKEditorConfig {\r\n var config = super.getConfig();\r\n (config as any).removeButtons += ',Cut,Copy,Paste,BulletedList,NumberedList,' +\r\n 'Indent,Outdent,SpecialChar,Subscript,Superscript,Styles,PasteText,' +\r\n 'PasteFromWord,Strike,Link,Unlink,CreatePlaceholder,Image,Table,' +\r\n 'HorizontalRule,Source,Maximize,Format,Font,FontSize,Anchor,Blockquote,' +\r\n 'CreatePlaceholder,BGColor,JustifyLeft,JustifyCenter,' +\r\n 'JustifyRight,JustifyBlock,Superscript,RemoveFormat';\r\n\r\n (config as any).removePlugins = 'elementspath,uploadimage,image2';\r\n return config;\r\n }\r\n }\r\n\r\n @Editor('HtmlReportContent')\r\n export class HtmlReportContentEditor extends HtmlContentEditor {\r\n constructor(textArea: JQuery, opt?: HtmlContentEditorOptions) {\r\n super(textArea, opt);\r\n }\r\n\r\n protected getConfig(): CKEditorConfig {\r\n var config = super.getConfig();\r\n (config as any).removeButtons += ',Cut,Copy,Paste,BulletedList,NumberedList,' +\r\n 'Indent,Outdent,SpecialChar,Subscript,Superscript,Styles,' +\r\n 'PasteText,PasteFromWord,Strike,Link,Unlink,CreatePlaceholder,' +\r\n 'Image,Table,HorizontalRule,Source,Maximize,Format,Font,FontSize,' +\r\n 'Anchor,Blockquote,CreatePlaceholder,BGColor,JustifyLeft,JustifyCenter,' +\r\n 'JustifyRight,JustifyBlock,Superscript,RemoveFormat';\r\n\r\n (config as any).removePlugins = 'elementspath,uploadimage,image2';\r\n return config;\r\n }\r\n }\r\n\r\n export interface ImageUploadEditorOptions {\r\n minWidth?: number;\r\n maxWidth?: number;\r\n minHeight?: number;\r\n maxHeight?: number;\r\n minSize?: number;\r\n maxSize?: number;\r\n originalNameProperty?: string;\r\n urlPrefix?: string;\r\n allowNonImage?: boolean;\r\n displayFileName?: boolean;\r\n }\r\n\r\n @Editor('ImageUpload', [IReadOnly])\r\n @Element('<div/>')\r\n export class ImageUploadEditor extends Widget<ImageUploadEditorOptions>\r\n implements IReadOnly, IGetEditValue, ISetEditValue {\r\n\r\n constructor(div: JQuery, opt: ImageUploadEditorOptions) {\r\n super(div, opt);\r\n\r\n div.addClass('s-ImageUploadEditor');\r\n if (Q.isEmptyOrNull(this.options.originalNameProperty))\r\n div.addClass('hide-original-name');\r\n\r\n this.toolbar = new Toolbar($('<div/>').appendTo(this.element), {\r\n buttons: this.getToolButtons()\r\n });\r\n\r\n var progress = $('<div><div></div></div>')\r\n .addClass('upload-progress')\r\n .prependTo(this.toolbar.element);\r\n\r\n var uio = this.getUploadInputOptions();\r\n this.uploadInput = UploadHelper.addUploadInput(uio);\r\n\r\n this.fileSymbols = $('<ul/>').appendTo(this.element);\r\n this.updateInterface();\r\n }\r\n\r\n protected getUploadInputOptions(): UploadInputOptions {\r\n return {\r\n container: this.toolbar.findButton('add-file-button'),\r\n zone: this.element,\r\n inputName: this.uniqueName,\r\n progress: this.progress,\r\n fileDone: (response, name, data) => {\r\n if (!UploadHelper.checkImageConstraints(response, this.options)) {\r\n return;\r\n }\r\n\r\n var newEntity: UploadedFile = {\r\n OriginalName: name,\r\n Filename: response.TemporaryFile\r\n };\r\n\r\n this.entity = newEntity;\r\n this.populate();\r\n this.updateInterface();\r\n }\r\n }\r\n }\r\n\r\n protected addFileButtonText(): string {\r\n return Q.text('Controls.ImageUpload.AddFileButton');\r\n }\r\n\r\n protected getToolButtons(): ToolButton[] {\r\n return [\r\n {\r\n title: this.addFileButtonText(),\r\n cssClass: 'add-file-button',\r\n onClick: function () {\r\n }\r\n },\r\n {\r\n title: '',\r\n hint: Q.text('Controls.ImageUpload.DeleteButtonHint'),\r\n cssClass: 'delete-button',\r\n onClick: () => {\r\n this.entity = null;\r\n this.populate();\r\n this.updateInterface();\r\n }\r\n }\r\n ];\r\n }\r\n\r\n protected populate(): void {\r\n var displayOriginalName = this.options.displayFileName ||\r\n !Q.isTrimmedEmpty(this.options.originalNameProperty);\r\n\r\n if (this.entity == null) {\r\n UploadHelper.populateFileSymbols(this.fileSymbols,\r\n null, displayOriginalName, this.options.urlPrefix);\r\n }\r\n else {\r\n UploadHelper.populateFileSymbols(\r\n this.fileSymbols, [this.entity], displayOriginalName,\r\n this.options.urlPrefix);\r\n }\r\n }\r\n\r\n protected updateInterface(): void {\r\n var addButton = this.toolbar.findButton('add-file-button');\r\n var delButton = this.toolbar.findButton('delete-button');\r\n addButton.toggleClass('disabled', this.get_readOnly());\r\n delButton.toggleClass('disabled', this.get_readOnly() ||\r\n this.entity == null);\r\n }\r\n\r\n get_readOnly(): boolean {\r\n return this.uploadInput.attr('disabled') != null;\r\n }\r\n\r\n set_readOnly(value: boolean): void {\r\n if (this.get_readOnly() !== value) {\r\n if (value) {\r\n (this.uploadInput.attr('disabled', 'disabled') as any).fileupload('disable');\r\n }\r\n else {\r\n (this.uploadInput.removeAttr('disabled') as any).fileupload('enable');\r\n }\r\n this.updateInterface();\r\n }\r\n }\r\n\r\n get_value(): UploadedFile {\r\n if (this.entity == null) {\r\n return null;\r\n }\r\n var copy = $.extend({}, this.entity);\r\n return copy;\r\n }\r\n\r\n get value(): UploadedFile {\r\n return this.get_value();\r\n }\r\n\r\n set_value(value: UploadedFile): void {\r\n if (value != null) {\r\n if (value.Filename == null) {\r\n this.entity = null;\r\n }\r\n else {\r\n this.entity = $.extend({}, value);\r\n }\r\n }\r\n else {\r\n this.entity = null;\r\n }\r\n this.populate();\r\n this.updateInterface();\r\n }\r\n\r\n set value(v: UploadedFile) {\r\n this.set_value(v);\r\n }\r\n\r\n getEditValue(property: PropertyItem, target: any) {\r\n target[property.name] = this.entity == null ? null :\r\n Q.trimToNull(this.entity.Filename);\r\n }\r\n\r\n setEditValue(source: any, property: PropertyItem) {\r\n var value: UploadedFile = {};\r\n value.Filename = source[property.name];\r\n if (Q.isEmptyOrNull(this.options.originalNameProperty)) {\r\n\r\n if (this.options.displayFileName) {\r\n var s = Q.coalesce(value.Filename, '');\r\n var idx = (ss as any).lastIndexOfAnyString(s, [47, 92]);\r\n if (idx >= 0) {\r\n value.OriginalName = s.substr(idx + 1);\r\n }\r\n else {\r\n value.OriginalName = s;\r\n }\r\n }\r\n }\r\n else {\r\n value.OriginalName = source[this.options.originalNameProperty];\r\n }\r\n\r\n this.set_value(value);\r\n }\r\n\r\n protected entity: UploadedFile;\r\n protected toolbar: Toolbar;\r\n protected progress: JQuery;\r\n protected fileSymbols: JQuery;\r\n protected uploadInput: JQuery;\r\n }\r\n\r\n @Editor('MultipleImageUpload', [IReadOnly])\r\n @Element('<div/>')\r\n export class MultipleImageUploadEditor extends Widget<ImageUploadEditorOptions>\r\n implements IReadOnly, IGetEditValue, ISetEditValue {\r\n\r\n private entities: UploadedFile[];\r\n private toolbar: Toolbar;\r\n private fileSymbols: JQuery;\r\n private uploadInput: JQuery;\r\n\r\n constructor(div: JQuery, opt: ImageUploadEditorOptions) {\r\n super(div, opt);\r\n\r\n this.entities = [];\r\n div.addClass('s-MultipleImageUploadEditor');\r\n var self = this;\r\n this.toolbar = new Toolbar($('<div/>').appendTo(this.element), {\r\n buttons: this.getToolButtons()\r\n });\r\n var progress = $('<div><div></div></div>')\r\n .addClass('upload-progress').prependTo(this.toolbar.element);\r\n\r\n var addFileButton = this.toolbar.findButton('add-file-button');\r\n\r\n this.uploadInput = Serenity.UploadHelper.addUploadInput({\r\n container: addFileButton,\r\n zone: this.element,\r\n inputName: this.uniqueName,\r\n progress: progress,\r\n fileDone: (response, name, data) => {\r\n if (!UploadHelper.checkImageConstraints(response, this.options)) {\r\n return;\r\n }\r\n var newEntity = { OriginalName: name, Filename: response.TemporaryFile };\r\n self.entities.push(newEntity);\r\n self.populate();\r\n self.updateInterface();\r\n }\r\n });\r\n\r\n this.fileSymbols = $('<ul/>').appendTo(this.element);\r\n this.updateInterface();\r\n }\r\n\r\n protected addFileButtonText(): string {\r\n return Q.text('Controls.ImageUpload.AddFileButton');\r\n }\r\n\r\n protected getToolButtons(): ToolButton[] {\r\n return [{\r\n title: this.addFileButtonText(),\r\n cssClass: 'add-file-button',\r\n onClick: function () {\r\n }\r\n }];\r\n }\r\n\r\n protected populate(): void {\r\n Serenity.UploadHelper.populateFileSymbols(this.fileSymbols, this.entities,\r\n true, this.options.urlPrefix);\r\n\r\n this.fileSymbols.children().each((i, e) => {\r\n var x = i;\r\n $(\"<a class='delete'></a>\").appendTo($(e).children('.filename'))\r\n .click(ev => {\r\n ev.preventDefault();\r\n (ss as any).removeAt(this.entities, x);\r\n this.populate();\r\n });\r\n });\r\n }\r\n\r\n protected updateInterface(): void {\r\n var addButton = this.toolbar.findButton('add-file-button');\r\n addButton.toggleClass('disabled', this.get_readOnly());\r\n this.fileSymbols.find('a.delete').toggle(!this.get_readOnly());\r\n }\r\n\r\n get_readOnly(): boolean {\r\n return this.uploadInput.attr('disabled') != null;\r\n }\r\n\r\n set_readOnly(value: boolean): void {\r\n if (this.get_readOnly() !== value) {\r\n if (value) {\r\n (this.uploadInput.attr('disabled', 'disabled') as any).fileupload('disable');\r\n }\r\n else {\r\n (this.uploadInput.removeAttr('disabled') as any).fileupload('enable');\r\n }\r\n this.updateInterface();\r\n }\r\n }\r\n\r\n get_value(): UploadedFile[] {\r\n return this.entities.map(function (x) {\r\n return $.extend({}, x);\r\n });\r\n }\r\n\r\n get value(): UploadedFile[] {\r\n return this.get_value();\r\n }\r\n\r\n set_value(value: UploadedFile[]) {\r\n this.entities = (value || []).map(function (x) {\r\n return $.extend({}, x);\r\n });\r\n this.populate();\r\n this.updateInterface();\r\n }\r\n\r\n set value(v: UploadedFile[]) {\r\n this.set_value(v);\r\n }\r\n\r\n getEditValue(property: PropertyItem, target: any) {\r\n if (this.jsonEncodeValue) {\r\n target[property.name] = $.toJSON(this.get_value());\r\n }\r\n else {\r\n target[property.name] = this.get_value();\r\n }\r\n }\r\n\r\n setEditValue(source: any, property: PropertyItem) {\r\n var val = source[property.name];\r\n if ((ss as any).isInstanceOfType(val, String)) {\r\n var json = Q.coalesce(Q.trimToNull(val), '[]');\r\n if (Q.startsWith(json, '[') && Q.endsWith(json, ']')) {\r\n this.set_value($.parseJSON(json));\r\n }\r\n else {\r\n this.set_value([{\r\n Filename: json,\r\n OriginalName: 'UnknownFile'\r\n }]);\r\n }\r\n }\r\n else {\r\n this.set_value(val as any);\r\n }\r\n }\r\n\r\n @Option()\r\n public jsonEncodeValue: boolean;\r\n }\r\n\r\n // http://digitalbush.com/projects/masked-input-plugin/\r\n @Editor('Masked', [IStringValue])\r\n @Element(\"<input type=\\\"text\\\"/>\")\r\n export class MaskedEditor extends Widget<MaskedEditorOptions> {\r\n\r\n constructor(input: JQuery, opt?: MaskedEditorOptions) {\r\n super(input, opt);\r\n\r\n (input as any).mask(this.options.mask || '', {\r\n placeholder: Q.coalesce(this.options.placeholder, '_')\r\n });\r\n }\r\n\r\n public get value(): string {\r\n this.element.triggerHandler(\"blur.mask\");\r\n return this.element.val();\r\n }\r\n\r\n protected get_value(): string {\r\n return this.value;\r\n }\r\n\r\n public set value(value: string) {\r\n this.element.val(value);\r\n }\r\n\r\n protected set_value(value: string): void {\r\n this.value = value;\r\n }\r\n }\r\n\r\n export interface MaskedEditorOptions {\r\n mask?: string;\r\n placeholder?: string;\r\n }\r\n\r\n @Editor('String', [IStringValue])\r\n @Element(\"<input type=\\\"text\\\"/>\")\r\n export class StringEditor extends Widget<any> {\r\n\r\n constructor(input: JQuery) {\r\n super(input);\r\n }\r\n\r\n public get value(): string {\r\n return this.element.val();\r\n }\r\n\r\n protected get_value(): string {\r\n return this.value;\r\n }\r\n\r\n public set value(value: string) {\r\n this.element.val(value);\r\n }\r\n\r\n protected set_value(value: string): void {\r\n this.value = value;\r\n }\r\n }\r\n\r\n @Editor('EmailAddress')\r\n export class EmailAddressEditor extends Serenity.StringEditor {\r\n constructor(input: JQuery) {\r\n super(input);\r\n\r\n input.attr('type', 'email')\r\n .addClass('email');\r\n }\r\n }\r\n\r\n @Editor('Password')\r\n export class PasswordEditor extends StringEditor {\r\n constructor(input: JQuery) {\r\n super(input);\r\n\r\n input.attr('type', 'password');\r\n }\r\n }\r\n\r\n export interface RadioButtonEditorOptions {\r\n enumKey?: string;\r\n enumType?: any;\r\n lookupKey?: string;\r\n }\r\n\r\n @Editor('RadioButton', [IStringValue, IReadOnly])\r\n @Element('<div/>')\r\n export class RadioButtonEditor extends Widget<RadioButtonEditorOptions>\r\n implements IReadOnly {\r\n\r\n constructor(input: JQuery, opt: RadioButtonEditorOptions) {\r\n super(input, opt);\r\n\r\n if (Q.isEmptyOrNull(this.options.enumKey) &&\r\n this.options.enumType == null &&\r\n Q.isEmptyOrNull(this.options.lookupKey)) {\r\n return;\r\n }\r\n\r\n if (!Q.isEmptyOrNull(this.options.lookupKey)) {\r\n var lookup = Q.getLookup(this.options.lookupKey);\r\n for (var item of lookup.items) {\r\n var textValue = item[lookup.textField];\r\n var text = (textValue == null ? '' : textValue.toString());\r\n var idValue = item[lookup.idField];\r\n var id = (idValue == null ? '' : idValue.toString());\r\n this.addRadio(id, text);\r\n }\r\n }\r\n else {\r\n var enumType = this.options.enumType || Serenity.EnumTypeRegistry.get(this.options.enumKey);\r\n var enumKey = this.options.enumKey;\r\n if (enumKey == null && enumType != null) {\r\n var enumKeyAttr = (ss as any).getAttributes(enumType, Serenity.EnumKeyAttribute, false);\r\n if (enumKeyAttr.length > 0) {\r\n enumKey = enumKeyAttr[0].value;\r\n }\r\n }\r\n\r\n var values = (ss as any).Enum.getValues(enumType);\r\n for (var x of values) {\r\n var name = (ss as any).Enum.toString(enumType, x);\r\n this.addRadio(x.toString(), Q.coalesce(Q.tryGetText(\r\n 'Enums.' + enumKey + '.' + name), name));\r\n }\r\n }\r\n }\r\n\r\n protected addRadio(value: string, text: string) {\r\n var label = $('<label/>').text(text);\r\n $('<input type=\"radio\"/>').attr('name', this.uniqueName)\r\n .attr('id', this.uniqueName + '_' + value)\r\n .attr('value', value).prependTo(label);\r\n label.appendTo(this.element);\r\n }\r\n\r\n get_value(): string {\r\n return this.element.find('input:checked').first().val();\r\n }\r\n\r\n get value(): string {\r\n return this.get_value();\r\n }\r\n\r\n set_value(value: string): void {\r\n if (value !== this.get_value()) {\r\n var inputs = this.element.find('input');\r\n var checks = inputs.filter(':checked');\r\n if (checks.length > 0) {\r\n (checks[0] as HTMLInputElement).checked = false;\r\n }\r\n if (!Q.isEmptyOrNull(value)) {\r\n checks = inputs.filter('[value=' + value + ']');\r\n if (checks.length > 0) {\r\n (checks[0] as HTMLInputElement).checked = true;\r\n }\r\n }\r\n }\r\n }\r\n\r\n set value(v: string) {\r\n this.set_value(v);\r\n }\r\n\r\n get_readOnly(): boolean {\r\n return this.element.attr('disabled') != null;\r\n }\r\n\r\n set_readOnly(value: boolean): void {\r\n if (this.get_readOnly() !== value) {\r\n if (value) {\r\n this.element.attr('disabled', 'disabled')\r\n .find('input').attr('disabled', 'disabled');\r\n }\r\n else {\r\n this.element.removeAttr('disabled')\r\n .find('input').removeAttr('disabled');\r\n }\r\n }\r\n }\r\n\r\n }\r\n\r\n export interface RecaptchaOptions {\r\n siteKey?: string;\r\n language?: string;\r\n }\r\n\r\n @Decorators.registerEditor('Serenity.Recaptcha', [IStringValue])\r\n @Decorators.element(\"<div/>\")\r\n export class Recaptcha extends Widget<RecaptchaOptions> implements IStringValue {\r\n constructor(div: JQuery, opt: RecaptchaOptions) {\r\n super(div, opt);\r\n\r\n this.element.addClass('g-recaptcha').attr('data-sitekey', this.options.siteKey);\r\n if (!!(window['grecaptcha'] == null && $('script#RecaptchaInclude').length === 0)) {\r\n var src = 'https://www.google.com/recaptcha/api.js';\r\n var lng = this.options.language;\r\n if (lng == null) {\r\n lng = Q.coalesce($('html').attr('lang'), '');\r\n }\r\n src += '?hl=' + lng;\r\n $('<script/>').attr('id', 'RecaptchaInclude').attr('src', src).appendTo(document.body);\r\n }\r\n\r\n var valInput = $('<input />').insertBefore(this.element)\r\n .attr('id', this.uniqueName + '_validate').val('x');\r\n\r\n var gro = {};\r\n gro['visibility'] = 'hidden';\r\n gro['width'] = '0px';\r\n gro['height'] = '0px';\r\n gro['padding'] = '0px';\r\n\r\n var input = valInput.css(gro);\r\n var self = this;\r\n\r\n VX.addValidationRule(input, this.uniqueName, e => {\r\n if (Q.isEmptyOrNull(this.get_value())) {\r\n return Q.text('Validation.Required');\r\n }\r\n return null;\r\n });\r\n }\r\n\r\n get_value(): string {\r\n return this.element.find('.g-recaptcha-response').val();\r\n }\r\n\r\n set_value(value: string): void {\r\n // ignore\r\n }\r\n }\r\n\r\n export interface TextAreaEditorOptions {\r\n cols?: number;\r\n rows?: number;\r\n }\r\n\r\n @Editor('TextArea', [IStringValue])\r\n @Element(\"<textarea />\")\r\n export class TextAreaEditor extends Widget<TextAreaEditorOptions> {\r\n\r\n constructor(input: JQuery, opt?: TextAreaEditorOptions) {\r\n super(input, opt);\r\n\r\n if (this.options.cols !== 0) {\r\n input.attr('cols', Q.coalesce(this.options.cols, 80));\r\n }\r\n if (this.options.rows !== 0) {\r\n input.attr('rows', Q.coalesce(this.options.rows, 6));\r\n }\r\n }\r\n\r\n public get value(): string {\r\n return this.element.val();\r\n }\r\n\r\n protected get_value(): string {\r\n return this.value;\r\n }\r\n\r\n public set value(value: string) {\r\n this.element.val(value);\r\n }\r\n\r\n protected set_value(value: string): void {\r\n this.value = value;\r\n }\r\n }\r\n\r\n export interface TimeEditorOptions {\r\n noEmptyOption?: boolean;\r\n startHour?: any;\r\n endHour?: any;\r\n intervalMinutes?: any;\r\n }\r\n\r\n @Editor('Time', [IDoubleValue, IReadOnly])\r\n @Element(\"<select />\")\r\n export class TimeEditor extends Widget<TimeEditorOptions> {\r\n\r\n private minutes: JQuery;\r\n\r\n constructor(input: JQuery, opt?: TimeEditorOptions) {\r\n super(input, opt);\r\n\r\n input.addClass('editor s-TimeEditor hour');\r\n\r\n if (!this.options.noEmptyOption) {\r\n Q.addOption(input, '', '--');\r\n }\r\n\r\n for (var h = (this.options.startHour || 0); h <= (this.options.endHour || 23); h++) {\r\n Q.addOption(input, h.toString(), ((h < 10) ? ('0' + h) : h.toString()));\r\n }\r\n\r\n this.minutes = $('<select/>').addClass('editor s-TimeEditor minute').insertAfter(input);\r\n this.minutes.change(() => this.element.trigger(\"change\"));\r\n\r\n for (var m = 0; m <= 59; m += (this.options.intervalMinutes || 5)) {\r\n Q.addOption(this.minutes, m.toString(), ((m < 10) ? ('0' + m) : m.toString()));\r\n }\r\n }\r\n\r\n public get value(): number {\r\n var hour = Q.toId(this.element.val());\r\n var minute = Q.toId(this.minutes.val());\r\n if (hour == null || minute == null) {\r\n return null;\r\n }\r\n return hour * 60 + minute;\r\n }\r\n\r\n protected get_value(): number {\r\n return this.value;\r\n }\r\n\r\n public set value(value: number) {\r\n if (!value) {\r\n if (this.options.noEmptyOption) {\r\n this.element.val(this.options.startHour);\r\n this.minutes.val('0');\r\n }\r\n else {\r\n this.element.val('');\r\n this.minutes.val('0');\r\n }\r\n }\r\n else {\r\n this.element.val(Math.floor(value / 60).toString());\r\n this.minutes.val(value % 60);\r\n }\r\n }\r\n\r\n protected set_value(value: number): void {\r\n this.value = value;\r\n }\r\n\r\n get_readOnly(): boolean {\r\n return this.element.hasClass('readonly');\r\n }\r\n\r\n set_readOnly(value: boolean): void {\r\n\r\n if (value !== this.get_readOnly()) {\r\n if (value) {\r\n this.element.addClass('readonly').attr('readonly', 'readonly');\r\n }\r\n else {\r\n this.element.removeClass('readonly').removeAttr('readonly');\r\n }\r\n Serenity.EditorUtils.setReadonly(this.minutes, value);\r\n }\r\n }\r\n }\r\n\r\n @Editor('URL', [IStringValue])\r\n export class URLEditor extends StringEditor {\r\n\r\n constructor(input: JQuery) {\r\n super(input);\r\n\r\n input.addClass(\"url\").attr(\"title\", \"URL should be entered in format: 'http://www.site.com/page'.\");\r\n\r\n input.on(\"blur.\" + this.uniqueName, e => {\r\n var validator = input.closest(\"form\").data(\"validator\") as JQueryValidation.Validator;\r\n if (validator == null)\r\n return;\r\n\r\n if (!input.hasClass(\"error\"))\r\n return;\r\n\r\n var value = Q.trimToNull(input.val());\r\n if (!value)\r\n return;\r\n\r\n value = \"http://\" + value;\r\n\r\n if ($.validator.methods['url'].call(validator, value, input[0]) == true) {\r\n input.val(value);\r\n validator.element(input);\r\n }\r\n });\r\n }\r\n }\r\n\r\n @Editor('Select2Ajax', [IStringValue])\r\n @Element('<input type=\"hidden\" />')\r\n export class Select2AjaxEditor<TOptions, TItem> extends Widget<TOptions> implements IStringValue {\r\n pageSize: number = 50;\r\n\r\n constructor(hidden: JQuery, opt: TOptions) {\r\n super(hidden, opt);\r\n\r\n var emptyItemText = this.emptyItemText();\r\n if (emptyItemText != null)\r\n hidden.attr(\"placeholder\", emptyItemText);\r\n\r\n hidden.select2(this.getSelect2Options());\r\n\r\n hidden.attr(\"type\", \"text\"); // jquery validate to work\r\n\r\n hidden.on(\"change.\" + this.uniqueName, (e, x) => {\r\n if (WX.hasOriginalEvent(e) || !x) {\r\n if (ValidationHelper.getValidator(hidden) != null)\r\n hidden.valid();\r\n }\r\n });\r\n }\r\n\r\n protected emptyItemText(): string {\r\n var txt = this.element.attr('placeholder');\r\n if (txt == null) {\r\n txt = Q.text('Controls.SelectEditor.EmptyItemText');\r\n }\r\n return txt;\r\n }\r\n\r\n protected getService(): string {\r\n throw new (ss as any).NotImplementedException();\r\n }\r\n\r\n protected query(request: ListRequest, callback: (p1: ListResponse<any>) => void): void {\r\n var options: Q.ServiceOptions<any> = {\r\n blockUI: false,\r\n service: this.getService() + '/List',\r\n request: request,\r\n onSuccess: function (response) {\r\n callback(response);\r\n }\r\n };\r\n this.executeQuery(options);\r\n }\r\n\r\n protected executeQuery(options: ServiceOptions<ListResponse<any>>): void {\r\n Q.serviceCall(options);\r\n }\r\n\r\n protected queryByKey(key: string, callback: (p1: any) => void): void {\r\n var options: Q.ServiceOptions<any> = {\r\n blockUI: false,\r\n service: this.getService() + '/Retrieve',\r\n request: { EntityId: key },\r\n onSuccess: function (response) {\r\n callback(response.Entity);\r\n }\r\n };\r\n this.executeQueryByKey(options);\r\n }\r\n\r\n protected executeQueryByKey(options: ServiceOptions<RetrieveResponse<any>>): void {\r\n Q.serviceCall(options);\r\n }\r\n\r\n protected getItemKey(item: any): string {\r\n return null;\r\n }\r\n\r\n protected getItemText(item: any): string {\r\n return null;\r\n }\r\n\r\n protected getTypeDelay(): number {\r\n return 500;\r\n }\r\n\r\n protected getSelect2Options(): Select2Options {\r\n var emptyItemText = this.emptyItemText();\r\n var queryTimeout = 0;\r\n return {\r\n minimumResultsForSearch: 10,\r\n placeHolder: (!Q.isEmptyOrNull(emptyItemText) ? emptyItemText : null),\r\n allowClear: Q.isValue(emptyItemText),\r\n query: query => {\r\n var request = {\r\n ContainsText: Q.trimToNull(query.term), Skip: (query.page - 1) * this.pageSize, Take: this.pageSize + 1\r\n };\r\n\r\n if (queryTimeout !== 0) {\r\n window.clearTimeout(queryTimeout);\r\n }\r\n\r\n queryTimeout = window.setTimeout(() => {\r\n this.query(request, response => {\r\n query.callback({\r\n results: response.Entities.slice(0, this.pageSize).map(x => {\r\n return { id: this.getItemKey(x), text: this.getItemText(x), source: x };\r\n }), more: response.Entities.length >= this.pageSize\r\n });\r\n });\r\n }, this.getTypeDelay());\r\n\r\n },\r\n initSelection: (element, callback) => {\r\n var val = element.val();\r\n if (Q.isEmptyOrNull(val)) {\r\n callback(null);\r\n return;\r\n }\r\n this.queryByKey(val, result => {\r\n callback((result == null ? null : {\r\n id: this.getItemKey(result),\r\n text: this.getItemText(result),\r\n source: result\r\n }));\r\n });\r\n }\r\n };\r\n }\r\n\r\n protected addInplaceCreate(title: string): void {\r\n var self = this;\r\n $('<a><b/></a>').addClass('inplace-button inplace-create')\r\n .attr('title', title).insertAfter(this.element).click(function (e) {\r\n self.inplaceCreateClick(e);\r\n });\r\n\r\n this.get_select2Container().add(this.element)\r\n .addClass('has-inplace-button');\r\n }\r\n\r\n protected inplaceCreateClick(e: any): void {\r\n }\r\n\r\n protected get_select2Container(): JQuery {\r\n return this.element.prevAll('.select2-container');\r\n }\r\n\r\n get_value(): string {\r\n return (ss as any).safeCast(this.element.select2('val'), String);\r\n }\r\n\r\n get value(): string {\r\n return this.get_value();\r\n }\r\n\r\n set_value(value: string) {\r\n if (value !== this.get_value()) {\r\n this.element.select2('val', value)\r\n .triggerHandler('change', [true]);\r\n }\r\n }\r\n\r\n set value(v: string) {\r\n this.set_value(v);\r\n }\r\n }\r\n}","namespace Serenity {\r\n\r\n export interface FilterOperator {\r\n key?: string;\r\n title?: string;\r\n format?: string;\r\n }\r\n\r\n export namespace FilterOperators {\r\n\r\n export const isTrue = 'true';\r\n export const isFalse = 'false';\r\n export const contains = 'contains';\r\n export const startsWith = 'startswith';\r\n export const EQ = 'eq';\r\n export const NE = 'ne';\r\n export const GT = 'gt';\r\n export const GE = 'ge';\r\n export const LT = 'lt';\r\n export const LE = 'le';\r\n export const BW = 'bw';\r\n export const IN = 'in';\r\n export const isNull = 'isnull';\r\n export const isNotNull = 'isnotnull';\r\n\r\n export const toCriteriaOperator: Q.Dictionary<string> = {\r\n eq: '=',\r\n ne: '!=',\r\n gt: '>',\r\n ge: '>=',\r\n lt: '<',\r\n le: '<='\r\n };\r\n }\r\n}","declare namespace Serenity {\r\n\r\n interface FilterLine {\r\n field?: string;\r\n operator?: string;\r\n isOr?: boolean;\r\n leftParen?: boolean;\r\n rightParen?: boolean;\r\n validationError?: string;\r\n criteria?: any[];\r\n displayText?: string;\r\n state?: any;\r\n }\r\n\r\n}","namespace Serenity {\r\n\r\n @Decorators.registerClass('FilterStore')\r\n export class FilterStore {\r\n\r\n constructor(fields: PropertyItem[]) {\r\n\r\n this.items = [];\r\n\r\n if (fields == null) {\r\n throw new (ss as any).ArgumentNullException('source');\r\n }\r\n\r\n this.fields = fields.slice();\r\n\r\n this.get_fields().sort(function (x, y) {\r\n var titleX = Q.tryGetText(x.title);\r\n if (titleX == null) {\r\n titleX = x.title;\r\n if (titleX == null)\r\n titleX = x.name;\r\n }\r\n\r\n var titleY = Q.tryGetText(y.title);\r\n if (titleY == null) {\r\n titleY = y.title;\r\n if (titleY == null)\r\n titleY = y.name;\r\n }\r\n\r\n return Q.turkishLocaleCompare(titleX, titleY);\r\n });\r\n\r\n this.fieldByName = {};\r\n\r\n for (var field of fields) {\r\n this.get_fieldByName()[field.name] = field;\r\n }\r\n }\r\n\r\n static getCriteriaFor(items: FilterLine[]): any[] {\r\n\r\n if (items == null)\r\n return [''];\r\n\r\n var inParens = false;\r\n var currentBlock = [''];\r\n var isBlockOr = false;\r\n var criteria = [''];\r\n\r\n for (var i = 0; i < items.length; i++) {\r\n var line = items[i];\r\n\r\n if (line.leftParen || inParens && line.rightParen) {\r\n\r\n if (!Serenity.Criteria.isEmpty(currentBlock)) {\r\n\r\n if (inParens)\r\n currentBlock = Serenity.Criteria.paren(currentBlock);\r\n\r\n if (isBlockOr)\r\n criteria = Serenity.Criteria.join(criteria,\r\n 'or', currentBlock);\r\n else\r\n criteria = Serenity.Criteria.join(criteria,\r\n 'and', currentBlock);\r\n\r\n currentBlock = [''];\r\n }\r\n\r\n inParens = false;\r\n }\r\n\r\n if (line.leftParen) {\r\n isBlockOr = line.isOr;\r\n inParens = true;\r\n }\r\n\r\n if (line.isOr)\r\n currentBlock = Serenity.Criteria.join(currentBlock,\r\n 'or', line.criteria);\r\n else\r\n currentBlock = Serenity.Criteria.join(currentBlock,\r\n 'and', line.criteria);\r\n }\r\n\r\n if (!Serenity.Criteria.isEmpty(currentBlock)) {\r\n if (isBlockOr)\r\n criteria = Serenity.Criteria.join(criteria,\r\n 'or', Serenity.Criteria.paren(currentBlock));\r\n else\r\n criteria = Serenity.Criteria.join(criteria,\r\n 'and', Serenity.Criteria.paren(currentBlock));\r\n }\r\n\r\n return criteria;\r\n }\r\n\r\n static getDisplayTextFor(items: FilterLine[]): string {\r\n\r\n if (items == null)\r\n return '';\r\n\r\n var inParens = false;\r\n var displayText = '';\r\n\r\n for (var i = 0; i < items.length; i++) {\r\n var line = items[i];\r\n\r\n if (inParens && (line.rightParen || line.leftParen)) {\r\n displayText += ')';\r\n inParens = false;\r\n }\r\n\r\n if (displayText.length > 0) {\r\n displayText += ' ' + Q.text('Controls.FilterPanel.' +\r\n (line.isOr ? 'Or' : 'And')) + ' ';\r\n }\r\n\r\n if (line.leftParen) {\r\n displayText += '(';\r\n inParens = true;\r\n }\r\n\r\n displayText += line.displayText;\r\n }\r\n\r\n if (inParens) {\r\n displayText += ')';\r\n }\r\n\r\n return displayText;\r\n }\r\n\r\n private changed: any;\r\n private displayText: string;\r\n private fields: PropertyItem[];\r\n private fieldByName: Q.Dictionary<PropertyItem>\r\n private items: FilterLine[];\r\n\r\n get_fields(): PropertyItem[] {\r\n return this.fields;\r\n }\r\n\r\n get_fieldByName(): Q.Dictionary<PropertyItem> {\r\n return this.fieldByName;\r\n }\r\n\r\n get_items(): FilterLine[] {\r\n return this.items;\r\n }\r\n\r\n raiseChanged(): void {\r\n this.displayText = null;\r\n this.changed && this.changed(this, (ss as any).EventArgs.Empty);\r\n }\r\n\r\n add_changed(value: (e: JQueryEventObject, a: any) => void): void {\r\n this.changed = (ss as any).delegateCombine(this.changed, value);\r\n }\r\n\r\n remove_changed(value: (e: JQueryEventObject, a: any) => void): void {\r\n this.changed = (ss as any).delegateRemove(this.changed, value);\r\n }\r\n\r\n get_activeCriteria(): any[] {\r\n return FilterStore.getCriteriaFor(this.items);\r\n }\r\n\r\n get_displayText(): string {\r\n if (this.displayText == null)\r\n this.displayText = FilterStore.getDisplayTextFor(this.items);\r\n \r\n return this.displayText;\r\n }\r\n }\r\n}","namespace Serenity {\r\n export interface IFiltering {\r\n createEditor(): void;\r\n getCriteria(): CriteriaWithText;\r\n getOperators(): FilterOperator[];\r\n loadState(state: any): void;\r\n saveState(): any;\r\n get_field(): PropertyItem;\r\n set_field(value: PropertyItem): void;\r\n get_container(): JQuery;\r\n set_container(value: JQuery): void;\r\n get_operator(): FilterOperator;\r\n set_operator(value: FilterOperator): void;\r\n }\r\n\r\n @Decorators.registerInterface('Serenity.IFiltering')\r\n export class IFiltering {\r\n }\r\n\r\n export interface CriteriaWithText {\r\n criteria?: any[];\r\n displayText?: string;\r\n }\r\n\r\n export interface IQuickFiltering {\r\n initQuickFilter(filter: QuickFilter<Widget<any>, any>): void;\r\n }\r\n\r\n @Decorators.registerInterface('Serenity.IQuickFiltering')\r\n export class IQuickFiltering {\r\n }\r\n\r\n import Operators = FilterOperators;\r\n import Option = Decorators.option\r\n\r\n @Serenity.Decorators.registerClass('Serenity.BaseFiltering', [IFiltering, IQuickFiltering])\r\n export abstract class BaseFiltering implements IFiltering, IQuickFiltering {\r\n\r\n private field: PropertyItem;\r\n\r\n public get_field() {\r\n return this.field;\r\n }\r\n\r\n set_field(value: PropertyItem) {\r\n this.field = value;\r\n }\r\n\r\n private container: JQuery;\r\n\r\n get_container() {\r\n return this.container;\r\n }\r\n\r\n set_container(value: JQuery) {\r\n this.container = value;\r\n }\r\n\r\n private operator: FilterOperator;\r\n\r\n get_operator() {\r\n return this.operator;\r\n }\r\n\r\n set_operator(value: FilterOperator) {\r\n this.operator = value;\r\n }\r\n\r\n abstract getOperators(): FilterOperator[];\r\n\r\n protected appendNullableOperators(list: FilterOperator[]) {\r\n if (!this.isNullable()) {\r\n return list;\r\n }\r\n list.push({ key: Serenity.FilterOperators.isNotNull });\r\n list.push({ key: Serenity.FilterOperators.isNull });\r\n return list;\r\n }\r\n\r\n protected appendComparisonOperators(list: FilterOperator[]) {\r\n list.push({ key: Serenity.FilterOperators.EQ });\r\n list.push({ key: Serenity.FilterOperators.NE });\r\n list.push({ key: Serenity.FilterOperators.LT });\r\n list.push({ key: Serenity.FilterOperators.LE });\r\n list.push({ key: Serenity.FilterOperators.GT });\r\n list.push({ key: Serenity.FilterOperators.GE });\r\n return list;\r\n }\r\n\r\n protected isNullable() {\r\n return this.get_field().required !== true;\r\n }\r\n\r\n public createEditor() {\r\n switch (this.get_operator().key) {\r\n case 'true':\r\n case 'false':\r\n case 'isnull':\r\n case 'isnotnull': {\r\n return;\r\n }\r\n case 'contains':\r\n case 'startswith':\r\n case 'eq':\r\n case 'ne':\r\n case 'lt':\r\n case 'le':\r\n case 'gt':\r\n case 'ge': {\r\n this.get_container().html('<input type=\"text\"/>');\r\n return;\r\n }\r\n }\r\n\r\n throw new ss.Exception(Q.format(\"Filtering '{0}' has no editor for '{1}' operator\",\r\n (ss as any).getTypeName((ss as any).getInstanceType(this)), this.get_operator().key));\r\n }\r\n\r\n protected operatorFormat(op: FilterOperator) {\r\n return Q.coalesce(op.format, Q.coalesce(Q.tryGetText(\r\n 'Controls.FilterPanel.OperatorFormats.' + op.key), op.key));\r\n }\r\n\r\n protected getTitle(field: PropertyItem) {\r\n return Q.coalesce(Q.tryGetText(field.title), Q.coalesce(field.title, field.name));\r\n }\r\n\r\n protected displayText(op: FilterOperator, values?: any[]) {\r\n if (!values || values.length === 0) {\r\n return Q.format(this.operatorFormat(op), this.getTitle(this.field));\r\n }\r\n else if (values.length === 1) {\r\n return Q.format(this.operatorFormat(op), this.getTitle(this.field), values[0]);\r\n }\r\n else {\r\n return Q.format(this.operatorFormat(op), this.getTitle(this.field), values[0], values[1]);\r\n }\r\n }\r\n\r\n protected getCriteriaField() {\r\n return this.field.name;\r\n }\r\n\r\n public getCriteria(): CriteriaWithText {\r\n var result: CriteriaWithText = {};\r\n var text: string;\r\n switch (this.get_operator().key) {\r\n case 'true': {\r\n result.displayText = this.displayText(this.get_operator(), []);\r\n result.criteria = [[this.getCriteriaField()], '=', true];\r\n return result;\r\n }\r\n\r\n case 'false': {\r\n result.displayText = this.displayText(this.get_operator(), []);\r\n result.criteria = [[this.getCriteriaField()], '=', false];\r\n return result;\r\n }\r\n\r\n case 'isnull': {\r\n result.displayText = this.displayText(this.get_operator(), []);\r\n result.criteria = ['is null', [this.getCriteriaField()]];\r\n return result;\r\n }\r\n\r\n case 'isnotnull': {\r\n result.displayText = this.displayText(this.get_operator(), []);\r\n result.criteria = ['is not null', [this.getCriteriaField()]];\r\n return result;\r\n }\r\n\r\n case 'contains': {\r\n text = this.getEditorText();\r\n result.displayText = this.displayText(this.get_operator(), [text]);\r\n result.criteria = [[this.getCriteriaField()], 'like', '%' + text + '%'];\r\n return result;\r\n }\r\n\r\n case 'startswith': {\r\n text = this.getEditorText();\r\n result.displayText = this.displayText(this.get_operator(), [text]);\r\n result.criteria = [[this.getCriteriaField()], 'like', text + '%'];\r\n return result;\r\n }\r\n\r\n case 'eq':\r\n case 'ne':\r\n case 'lt':\r\n case 'le':\r\n case 'gt':\r\n case 'ge': {\r\n text = this.getEditorText();\r\n result.displayText = this.displayText(this.get_operator(), [text]);\r\n result.criteria = [[this.getCriteriaField()], Serenity.FilterOperators.toCriteriaOperator[\r\n this.get_operator().key], this.getEditorValue()];\r\n return result;\r\n }\r\n }\r\n\r\n throw new ss.Exception(Q.format(\"Filtering '{0}' has no handler for '{1}' operator\",\r\n (ss as any).getTypeName((ss as any).getInstanceType(this)), this.get_operator().key));\r\n }\r\n\r\n loadState(state: any) {\r\n var input = this.get_container().find(':input').first();\r\n input.val(state);\r\n }\r\n\r\n saveState() {\r\n switch (this.get_operator().key) {\r\n case 'contains':\r\n case 'startswith':\r\n case 'eq':\r\n case 'ne':\r\n case 'lt':\r\n case 'le':\r\n case 'gt':\r\n case 'ge': {\r\n var input = this.get_container().find(':input').first();\r\n return input.val();\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n protected argumentNull() {\r\n return new (ss as any).ArgumentNullException('value', Q.text('Controls.FilterPanel.ValueRequired'));\r\n }\r\n\r\n validateEditorValue(value: string) {\r\n if (value.length === 0) {\r\n throw this.argumentNull();\r\n }\r\n return value;\r\n }\r\n\r\n getEditorValue() {\r\n var input = this.get_container().find(':input').not('.select2-focusser').first();\r\n if (input.length !== 1) {\r\n throw new ss.Exception(Q.format(\"Couldn't find input in filter container for {0}\",\r\n Q.coalesce(this.field.title, this.field.name)));\r\n }\r\n\r\n var value;\r\n if (input.data('select2') != null) {\r\n value = input.select2('val');\r\n }\r\n else {\r\n value = input.val();\r\n }\r\n\r\n value = Q.coalesce(value, '').trim();\r\n\r\n return this.validateEditorValue(value);\r\n }\r\n\r\n getEditorText() {\r\n var input = this.get_container().find(':input').not('.select2-focusser').not('.select2-input').first();\r\n if (input.length === 0) {\r\n return this.get_container().text().trim();\r\n }\r\n var value;\r\n if (input.data('select2') != null) {\r\n value = Q.coalesce(input.select2('data'), {}).text;\r\n }\r\n else {\r\n value = input.val();\r\n }\r\n return value;\r\n }\r\n\r\n initQuickFilter(filter: QuickFilter<Widget<any>, any>) {\r\n filter.field = this.getCriteriaField();\r\n filter.type = Serenity.StringEditor;\r\n filter.title = this.getTitle(this.field);\r\n filter.options = Q.deepClone({}, this.get_field().quickFilterParams);\r\n }\r\n }\r\n\r\n function Filtering(name: string) {\r\n return Decorators.registerClass('Serenity.' + name + 'Filtering')\r\n }\r\n\r\n @Filtering('BaseEditor')\r\n export abstract class BaseEditorFiltering<TEditor extends Widget<any>> extends BaseFiltering {\r\n constructor(public editorType: any) {\r\n super();\r\n }\r\n\r\n protected useEditor() {\r\n switch (this.get_operator().key) {\r\n case 'eq':\r\n case 'ne':\r\n case 'lt':\r\n case 'le':\r\n case 'gt':\r\n case 'ge':\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n protected editor: TEditor;\r\n\r\n createEditor() {\r\n if (this.useEditor()) {\r\n this.editor = Serenity.Widget.create({\r\n type: this.editorType,\r\n container: this.get_container(),\r\n options: this.getEditorOptions(),\r\n init: null\r\n }) as any;\r\n return;\r\n }\r\n this.editor = null;\r\n super.createEditor();\r\n }\r\n\r\n protected useIdField() {\r\n return false;\r\n }\r\n\r\n getCriteriaField() {\r\n if (this.useEditor() &&\r\n this.useIdField() &&\r\n !Q.isEmptyOrNull(this.get_field().filteringIdField)) {\r\n return this.get_field().filteringIdField;\r\n }\r\n\r\n return super.getCriteriaField();\r\n }\r\n\r\n getEditorOptions() {\r\n var opt = Q.deepClone({}, this.get_field().editorParams);\r\n delete opt['cascadeFrom'];\r\n // currently can't support cascadeFrom in filtering\r\n return Q.deepClone(opt, this.get_field().filteringParams);\r\n }\r\n\r\n loadState(state: any) {\r\n if (this.useEditor()) {\r\n if (state == null) {\r\n return;\r\n }\r\n\r\n Serenity.EditorUtils.setValue(this.editor, state);\r\n return;\r\n }\r\n\r\n super.loadState(state);\r\n }\r\n\r\n saveState() {\r\n if (this.useEditor()) {\r\n return Serenity.EditorUtils.getValue(this.editor);\r\n }\r\n\r\n return super.saveState();\r\n }\r\n\r\n getEditorValue() {\r\n if (this.useEditor()) {\r\n var value = Serenity.EditorUtils.getValue(this.editor);\r\n\r\n if (value == null || (typeof value == \"string\" && value.trim().length === 0))\r\n throw this.argumentNull();\r\n\r\n return value;\r\n }\r\n\r\n return super.getEditorValue();\r\n }\r\n\r\n initQuickFilter(filter: QuickFilter<Widget<any>, any>) {\r\n super.initQuickFilter(filter);\r\n\r\n filter.type = this.editorType;\r\n filter.options = Q.deepClone({},\r\n this.getEditorOptions(),\r\n this.get_field().quickFilterParams);\r\n }\r\n }\r\n\r\n @Filtering('Date')\r\n export class DateFiltering extends BaseEditorFiltering<DateEditor> {\r\n\r\n constructor() {\r\n super(DateEditor)\r\n }\r\n\r\n getOperators(): FilterOperator[] {\r\n return this.appendNullableOperators(this.appendComparisonOperators([]));\r\n }\r\n }\r\n\r\n @Filtering('Boolean')\r\n export class BooleanFiltering extends BaseFiltering {\r\n getOperators() {\r\n return this.appendNullableOperators([\r\n { key: Serenity.FilterOperators.isTrue },\r\n { key: Serenity.FilterOperators.isFalse }\r\n ]);\r\n }\r\n }\r\n\r\n @Filtering('DateTime')\r\n export class DateTimeFiltering extends BaseEditorFiltering<DateEditor> {\r\n\r\n constructor() {\r\n super(DateTimeEditor)\r\n }\r\n\r\n getOperators(): FilterOperator[] {\r\n return this.appendNullableOperators(\r\n this.appendComparisonOperators([]));\r\n }\r\n\r\n getCriteria() {\r\n var result: CriteriaWithText = {};\r\n\r\n switch (this.get_operator().key) {\r\n case 'eq':\r\n case 'ne':\r\n case 'lt':\r\n case 'le':\r\n case 'gt':\r\n case 'ge': {\r\n {\r\n var text = this.getEditorText();\r\n result.displayText = this.displayText(this.get_operator(), [text]);\r\n var date = Q.parseISODateTime(this.getEditorValue());\r\n date = new Date(date.getFullYear(), date.getMonth(), date.getDate());\r\n var next = new Date(date.getFullYear(), date.getMonth(), date.getDate() + 1);\r\n var criteria = [this.getCriteriaField()];\r\n var dateValue = Q.formatDate(date, 'yyyy-MM-dd');\r\n var nextValue = Q.formatDate(next, 'yyyy-MM-dd');\r\n switch (this.get_operator().key) {\r\n case 'eq': {\r\n result.criteria = Criteria.join([criteria, '>=', dateValue], 'and', [criteria, '<', nextValue]);\r\n return result;\r\n }\r\n case 'ne': {\r\n result.criteria = Criteria.paren(Criteria.join([criteria, '<', dateValue], 'or', [criteria, '>', nextValue]));\r\n return result;\r\n }\r\n case 'lt': {\r\n result.criteria = [criteria, '<', dateValue];\r\n return result;\r\n }\r\n case 'le': {\r\n result.criteria = [criteria, '<', nextValue];\r\n return result;\r\n }\r\n case 'gt': {\r\n result.criteria = [criteria, '>=', nextValue];\r\n return result;\r\n }\r\n case 'ge': {\r\n result.criteria = [criteria, '>=', dateValue];\r\n return result;\r\n }\r\n }\r\n }\r\n break;\r\n }\r\n }\r\n\r\n return super.getCriteria();\r\n }\r\n }\r\n\r\n @Filtering('Decimal')\r\n export class DecimalFiltering extends BaseEditorFiltering<DecimalEditor> {\r\n constructor() {\r\n super(DecimalEditor);\r\n }\r\n\r\n getOperators(): Serenity.FilterOperator[] {\r\n return this.appendNullableOperators(\r\n this.appendComparisonOperators([]));\r\n }\r\n }\r\n\r\n @Filtering('Editor')\r\n export class EditorFiltering extends BaseEditorFiltering<Serenity.Widget<any>> {\r\n\r\n constructor() {\r\n super(Widget)\r\n }\r\n\r\n @Option()\r\n editorType: string;\r\n\r\n @Option()\r\n useRelative: boolean;\r\n\r\n @Option()\r\n useLike: boolean;\r\n\r\n getOperators(): Serenity.FilterOperator[] {\r\n var list = [];\r\n\r\n list.push({ key: Operators.EQ });\r\n list.push({ key: Operators.NE });\r\n\r\n if (this.useRelative) {\r\n list.push({ key: Operators.LT });\r\n list.push({ key: Operators.LE });\r\n list.push({ key: Operators.GT });\r\n list.push({ key: Operators.GE });\r\n }\r\n\r\n if (this.useLike) {\r\n list.push({ key: Operators.contains });\r\n list.push({ key: Operators.startsWith });\r\n }\r\n\r\n this.appendNullableOperators(list);\r\n\r\n return list;\r\n }\r\n\r\n protected useEditor() {\r\n var op = this.get_operator().key;\r\n\r\n return op === Operators.EQ ||\r\n op === Operators.NE ||\r\n (this.useRelative && (\r\n op === Operators.LT ||\r\n op === Operators.LE ||\r\n op === Operators.GT ||\r\n op === Operators.GE));\r\n }\r\n\r\n getEditorOptions() {\r\n var opt = super.getEditorOptions();\r\n if (this.useEditor() && this.editorType === Q.coalesce(this.get_field().editorType, 'String')) {\r\n opt = $.extend(opt, this.get_field().editorParams);\r\n }\r\n\r\n return opt;\r\n }\r\n\r\n createEditor() {\r\n if (this.useEditor()) {\r\n var editorType = Serenity.EditorTypeRegistry.get(this.editorType);\r\n\r\n this.editor = Serenity.Widget.create({\r\n type: editorType ,\r\n element: e => e.appendTo(this.get_container()),\r\n options: this.getEditorOptions()\r\n });\r\n\r\n return;\r\n }\r\n\r\n super.createEditor();\r\n }\r\n\r\n protected useIdField(): boolean {\r\n return this.useEditor();\r\n }\r\n\r\n initQuickFilter(filter: QuickFilter<Widget<any>, any>) {\r\n super.initQuickFilter(filter);\r\n\r\n filter.type = Serenity.EditorTypeRegistry.get(this.editorType);\r\n }\r\n }\r\n\r\n @Filtering('Enum')\r\n export class EnumFiltering extends BaseEditorFiltering<EnumEditor> {\r\n constructor() {\r\n super(EnumEditor);\r\n }\r\n\r\n getOperators() {\r\n var op = [{ key: Operators.EQ }, { key: Operators.NE }];\r\n return this.appendNullableOperators(op);\r\n }\r\n }\r\n\r\n @Filtering('Integer')\r\n export class IntegerFiltering extends BaseEditorFiltering<IntegerEditor> {\r\n constructor() {\r\n super(IntegerEditor);\r\n }\r\n\r\n getOperators(): FilterOperator[] {\r\n return this.appendNullableOperators(this.appendComparisonOperators([]));\r\n }\r\n }\r\n\r\n @Filtering('Lookup')\r\n export class LookupFiltering extends BaseEditorFiltering<LookupEditor> {\r\n\r\n constructor() {\r\n super(LookupEditor);\r\n }\r\n\r\n getOperators(): FilterOperator[] {\r\n var ops = [{ key: Operators.EQ }, { key: Operators.NE }, { key: Operators.contains }, { key: Operators.startsWith }]\r\n return this.appendNullableOperators(ops);\r\n }\r\n\r\n protected useEditor(): boolean {\r\n var op = this.get_operator().key;\r\n return op == Operators.EQ || op == Operators.NE;\r\n }\r\n\r\n protected useIdField(): boolean {\r\n return this.useEditor();\r\n }\r\n\r\n getEditorText(): string {\r\n if (this.useEditor()) {\r\n return this.editor.text;\r\n }\r\n\r\n return super.getEditorText();\r\n }\r\n }\r\n\r\n @Filtering('String')\r\n export class StringFiltering extends BaseFiltering {\r\n\r\n getOperators(): Serenity.FilterOperator[] {\r\n var ops = [\r\n { key: Operators.contains }, \r\n { key: Operators.startsWith }, \r\n { key: Operators.EQ },\r\n { key: Operators.NE }\r\n ];\r\n return this.appendNullableOperators(ops);\r\n }\r\n\r\n validateEditorValue(value: string) {\r\n if (value.length === 0) {\r\n return value;\r\n }\r\n\r\n return super.validateEditorValue(value);\r\n }\r\n }\r\n\r\n export namespace FilteringTypeRegistry {\r\n\r\n let knownTypes: Q.Dictionary<Function>;\r\n\r\n\r\n function initialize(): void {\r\n\r\n if (knownTypes != null)\r\n return;\r\n \r\n knownTypes = {};\r\n\r\n for (var assembly of (ss as any).getAssemblies()) {\r\n for (var type of (ss as any).getAssemblyTypes(assembly)) {\r\n if (!(ss as any).isAssignableFrom(Serenity.IFiltering, type))\r\n continue;\r\n \r\n if ((ss as any).isGenericTypeDefinition(type))\r\n continue;\r\n\r\n var fullName = (ss as any).getTypeFullName(type).toLowerCase();\r\n\r\n knownTypes[fullName] = type;\r\n\r\n for (var k of Q.Config.rootNamespaces) {\r\n if (Q.startsWith(fullName, k.toLowerCase() + '.')) {\r\n var kx = fullName.substr(k.length + 1).toLowerCase();\r\n\r\n if (knownTypes[kx] == null) {\r\n knownTypes[kx] = type;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n setTypeKeysWithoutFilterHandlerSuffix();\r\n }\r\n\r\n function setTypeKeysWithoutFilterHandlerSuffix() {\r\n var suffix = 'filtering';\r\n \r\n for (var k of Object.keys(knownTypes)) {\r\n if (!Q.endsWith(k, suffix))\r\n continue;\r\n \r\n var p = k.substr(0, k.length - suffix.length);\r\n if (Q.isEmptyOrNull(p))\r\n continue;\r\n\r\n if (knownTypes[p] != null)\r\n continue;\r\n \r\n knownTypes[p] = knownTypes[k];\r\n }\r\n }\r\n\r\n function reset(): void {\r\n knownTypes = null;\r\n }\r\n\r\n export function get(key: string): Function {\r\n\r\n if (Q.isEmptyOrNull(key))\r\n throw new (ss as any).ArgumentNullException('key');\r\n\r\n initialize();\r\n var formatterType = knownTypes[key.toLowerCase()];\r\n if (formatterType == null)\r\n throw new ss.Exception(Q.format(\r\n \"Can't find {0} filter handler type!\", key));\r\n\r\n return formatterType;\r\n }\r\n }\r\n}","namespace Serenity {\r\n\r\n @Decorators.registerClass('Serenity.FilterWidgetBase')\r\n export class FilterWidgetBase<TOptions> extends TemplatedWidget<TOptions> {\r\n private store: Serenity.FilterStore;\r\n\r\n private onFilterStoreChanged: () => void;\r\n\r\n constructor(div: JQuery, opt?: TOptions) {\r\n super(div, opt);\r\n\r\n this.store = new FilterStore([]);\r\n this.onFilterStoreChanged = () => this.filterStoreChanged();\r\n this.store.add_changed(this.onFilterStoreChanged);\r\n }\r\n\r\n destroy() {\r\n\r\n if (this.store) {\r\n this.store.remove_changed(this.onFilterStoreChanged);\r\n this.onFilterStoreChanged = null;\r\n this.store = null;\r\n }\r\n\r\n super.destroy();\r\n }\r\n\r\n protected filterStoreChanged() {\r\n }\r\n\r\n get_store(): FilterStore {\r\n return this.store;\r\n }\r\n\r\n set_store(value: FilterStore): void {\r\n if (this.store !== value) {\r\n if (this.store != null) \r\n this.store.remove_changed(this.onFilterStoreChanged);\r\n\r\n this.store = value || new FilterStore([]);\r\n this.store.add_changed(this.onFilterStoreChanged);\r\n this.filterStoreChanged();\r\n }\r\n }\r\n }\r\n}","namespace Serenity {\r\n\r\n @Decorators.registerClass('Serenity.FilterDisplayBar')\r\n export class FilterDisplayBar extends FilterWidgetBase<any> {\r\n\r\n constructor(div: JQuery) {\r\n super(div);\r\n\r\n this.element.find('.cap').text(\r\n Q.text('Controls.FilterPanel.EffectiveFilter'));\r\n\r\n this.element.find('.edit').text(\r\n Q.text('Controls.FilterPanel.EditFilter'));\r\n\r\n this.element.find('.reset').attr('title',\r\n Q.text('Controls.FilterPanel.ResetFilterHint'));\r\n\r\n var openFilterDialog = (e: JQueryEventObject) => {\r\n e.preventDefault();\r\n var dialog = new FilterDialog();\r\n dialog.get_filterPanel().set_store(this.get_store());\r\n dialog.dialogOpen(null);\r\n };\r\n\r\n this.element.find('.edit').click(openFilterDialog);\r\n this.element.find('.txt').click(openFilterDialog);\r\n\r\n this.element.find('.reset').click(e1 => {\r\n e1.preventDefault();\r\n (ss as any).clear(this.get_store().get_items());\r\n this.get_store().raiseChanged();\r\n });\r\n }\r\n\r\n protected filterStoreChanged() {\r\n super.filterStoreChanged();\r\n\r\n var displayText = Q.trimToNull(this.get_store().get_displayText());\r\n\r\n this.element.find('.current').toggle(displayText != null);\r\n this.element.find('.reset').toggle(displayText != null);\r\n\r\n if (displayText == null)\r\n displayText = Q.text('Controls.FilterPanel.EffectiveEmpty');\r\n\r\n this.element.find('.txt').text('[' + displayText + ']');\r\n }\r\n\r\n protected getTemplate() {\r\n return \"<div><a class='reset'></a><a class='edit'></a>\" + \r\n \"<div class='current'><span class='cap'></span>\" +\r\n \"<a class='txt'></a></div></div>\";\r\n }\r\n }\r\n}","namespace Serenity {\r\n\r\n @Decorators.registerClass('Serenity.FilterFieldSelect')\r\n class FilterFieldSelect extends Select2Editor<any, PropertyItem> {\r\n constructor(hidden: JQuery, fields: PropertyItem[]) {\r\n super(hidden);\r\n\r\n for (var field of fields) {\r\n this.addOption(field.name, Q.coalesce(Q.tryGetText(field.title),\r\n Q.coalesce(field.title, field.name)), field);\r\n }\r\n }\r\n\r\n emptyItemText() {\r\n if (Q.isEmptyOrNull(this.value)) {\r\n return Q.text('Controls.FilterPanel.SelectField');\r\n }\r\n\r\n return null;\r\n }\r\n\r\n getSelect2Options() {\r\n var opt = super.getSelect2Options();\r\n opt.allowClear = false;\r\n return opt;\r\n }\r\n }\r\n\r\n @Decorators.registerClass('Serenity.FilterOperatorSelect')\r\n class FilterOperatorSelect extends Select2Editor<any, FilterOperator> {\r\n constructor(hidden: JQuery, source: FilterOperator[]) {\r\n super(hidden);\r\n\r\n for (var op of source) {\r\n var title = Q.coalesce(op.title, Q.coalesce(\r\n Q.tryGetText(\"Controls.FilterPanel.OperatorNames.\" + op.key), op.key));\r\n this.addOption(op.key, title, op);\r\n }\r\n\r\n if (source.length && source[0])\r\n this.value = source[0].key;\r\n }\r\n\r\n emptyItemText(): string {\r\n return null;\r\n }\r\n\r\n getSelect2Options() {\r\n var opt = super.getSelect2Options();\r\n opt.allowClear = false;\r\n return opt;\r\n }\r\n }\r\n\r\n export class FilterPanel extends FilterWidgetBase<any> {\r\n\r\n private rowsDiv: JQuery;\r\n\r\n constructor(div: JQuery) {\r\n super(div);\r\n\r\n this.element.addClass('s-FilterPanel');\r\n this.rowsDiv = this.byId('Rows');\r\n this.initButtons();\r\n this.updateButtons();\r\n }\r\n\r\n private showInitialLine: boolean;\r\n\r\n get_showInitialLine() {\r\n return this.showInitialLine;\r\n }\r\n\r\n set_showInitialLine(value: boolean) {\r\n if (this.showInitialLine !== value) {\r\n this.showInitialLine = value;\r\n if (this.showInitialLine && this.rowsDiv.children().length === 0) {\r\n this.addEmptyRow(false);\r\n }\r\n }\r\n }\r\n\r\n protected filterStoreChanged() {\r\n super.filterStoreChanged();\r\n this.updateRowsFromStore();\r\n }\r\n\r\n updateRowsFromStore() {\r\n this.rowsDiv.empty();\r\n\r\n var items = this.get_store().get_items();\r\n for (var item of items) {\r\n this.addEmptyRow(false);\r\n\r\n var row = this.rowsDiv.children().last();\r\n\r\n var divl = row.children('div.l');\r\n divl.children('.leftparen').toggleClass('active', !!item.leftParen);\r\n divl.children('.rightparen').toggleClass('active', !!item.rightParen);\r\n divl.children('.andor').toggleClass('or', !!item.isOr)\r\n .text(Q.text((!!item.isOr ? 'Controls.FilterPanel.Or' :\r\n 'Controls.FilterPanel.And')));\r\n\r\n var fieldSelect = row.children('div.f')\r\n .find('input.field-select').getWidget(FilterFieldSelect);\r\n\r\n fieldSelect.value = item.field;\r\n this.rowFieldChange(row);\r\n var operatorSelect = row.children('div.o')\r\n .find('input.op-select').getWidget(FilterOperatorSelect);\r\n\r\n operatorSelect.set_value(item.operator);\r\n this.rowOperatorChange(row);\r\n\r\n var filtering = this.getFilteringFor(row);\r\n if (filtering != null) {\r\n filtering.set_operator({ key: item.operator });\r\n filtering.loadState(item.state);\r\n }\r\n }\r\n\r\n if (this.get_showInitialLine() && this.rowsDiv.children().length === 0) {\r\n this.addEmptyRow(false);\r\n }\r\n\r\n this.updateParens();\r\n }\r\n\r\n private showSearchButton: boolean;\r\n\r\n get_showSearchButton(): boolean {\r\n return this.showSearchButton;\r\n }\r\n\r\n set_showSearchButton(value: boolean): void {\r\n if (this.showSearchButton !== value) {\r\n this.showSearchButton = value;\r\n this.updateButtons();\r\n }\r\n }\r\n\r\n private updateStoreOnReset: boolean;\r\n\r\n get_updateStoreOnReset() {\r\n return this.updateStoreOnReset;\r\n }\r\n\r\n set_updateStoreOnReset(value: boolean): void {\r\n if (this.updateStoreOnReset !== value) {\r\n this.updateStoreOnReset = value;\r\n }\r\n }\r\n\r\n protected getTemplate(): string {\r\n return \"<div id='~_Rows' class='filter-lines'>\" +\r\n \"</div>\" +\r\n \"<div id='~_Buttons' class='buttons'>\" +\r\n \"<button id='~_AddButton' class='btn btn-primary add'></button>\" +\r\n \"<button id='~_SearchButton' class='btn btn-success search'></button>\" +\r\n \"<button id='~_ResetButton' class='btn btn-danger reset'></button>\" +\r\n \"</div>\" +\r\n \"<div style='clear: both'>\" +\r\n \"</div>\"\r\n }\r\n\r\n protected initButtons(): void {\r\n this.byId('AddButton').text(Q.text('Controls.FilterPanel.AddFilter'))\r\n .click((e) => this.addButtonClick(e));\r\n\r\n this.byId('SearchButton').text(Q.text('Controls.FilterPanel.SearchButton'))\r\n .click((e) => this.searchButtonClick(e));\r\n\r\n this.byId('ResetButton').text(Q.text('Controls.FilterPanel.ResetButton'))\r\n .click((e) => this.resetButtonClick(e));\r\n }\r\n\r\n protected searchButtonClick(e: JQueryEventObject) {\r\n e.preventDefault();\r\n this.search();\r\n }\r\n\r\n get_hasErrors(): boolean {\r\n return this.rowsDiv.children().children('div.v')\r\n .children('span.error').length > 0;\r\n }\r\n\r\n search() {\r\n this.rowsDiv.children().children('div.v')\r\n .children('span.error').remove();\r\n\r\n var filterLines = [];\r\n var errorText = null;\r\n var row = null;\r\n for (var i = 0; i < this.rowsDiv.children().length; i++) {\r\n try {\r\n row = this.rowsDiv.children().eq(i);\r\n var filtering = this.getFilteringFor(row);\r\n if (filtering == null) {\r\n continue;\r\n }\r\n\r\n var field = this.getFieldFor(row);\r\n var op = row.children('div.o').find('input.op-select')\r\n .getWidget(FilterOperatorSelect).value;\r\n\r\n if (op == null || op.length === 0) \r\n throw new (ss as any).ArgumentOutOfRangeException('operator',\r\n Q.text('Controls.FilterPanel.InvalidOperator'));\r\n\r\n var line: FilterLine = {};\r\n line.field = field.name;\r\n line.operator = op;\r\n line.isOr = row.children('div.l')\r\n .children('a.andor').hasClass('or');\r\n line.leftParen = row.children('div.l')\r\n .children('a.leftparen').hasClass('active');\r\n line.rightParen = row.children('div.l')\r\n .children('a.rightparen').hasClass('active');\r\n filtering.set_operator({ key: op });\r\n var criteria = filtering.getCriteria();\r\n line.criteria = criteria.criteria;\r\n line.state = filtering.saveState();\r\n line.displayText = criteria.displayText;\r\n filterLines.push(line);\r\n }\r\n catch (ex) {\r\n ex = (ss.Exception as any).wrap(ex);\r\n if ((ss as any).isInstanceOfType(ex, (ss as any).ArgumentException)) {\r\n errorText = ex.get_message();\r\n break;\r\n }\r\n else {\r\n throw ex;\r\n }\r\n }\r\n }\r\n\r\n // if an error occurred, display it, otherwise set current filters\r\n if (errorText != null) {\r\n $('<span/>').addClass('error')\r\n .attr('title', errorText).appendTo(row.children('div.v'));\r\n row.children('div.v').find('input:first').focus();\r\n return;\r\n }\r\n\r\n (ss as any).clear(this.get_store().get_items());\r\n (ss as any).arrayAddRange(this.get_store().get_items(), filterLines);\r\n this.get_store().raiseChanged();\r\n }\r\n\r\n protected addButtonClick(e: JQueryEventObject) {\r\n this.addEmptyRow(true);\r\n e.preventDefault();\r\n }\r\n\r\n protected resetButtonClick(e: JQueryEventObject) {\r\n e.preventDefault();\r\n\r\n if (this.get_updateStoreOnReset()) {\r\n if (this.get_store().get_items().length > 0) {\r\n (ss as any).clear(this.get_store().get_items());\r\n this.get_store().raiseChanged();\r\n }\r\n }\r\n\r\n this.rowsDiv.empty();\r\n this.updateButtons();\r\n if (this.get_showInitialLine()) {\r\n this.addEmptyRow(false);\r\n }\r\n }\r\n\r\n protected findEmptyRow(): JQuery {\r\n var result: JQuery = null;\r\n\r\n this.rowsDiv.children().each(function (index, row) {\r\n var fieldInput = $(row).children('div.f')\r\n .children('input.field-select').first();\r\n if (fieldInput.length === 0) {\r\n return true;\r\n }\r\n var val = fieldInput.val();\r\n if (val == null || val.length === 0) {\r\n result = $(row);\r\n return false;\r\n }\r\n return true;\r\n });\r\n\r\n return result;\r\n }\r\n\r\n protected addEmptyRow(popupField: boolean) {\r\n var emptyRow = this.findEmptyRow();\r\n\r\n if (emptyRow != null) {\r\n emptyRow.find('input.field-select').select2('focus');\r\n if (popupField) {\r\n emptyRow.find('input.field-select').select2('open');\r\n }\r\n return emptyRow;\r\n }\r\n\r\n var isLastRowOr = this.rowsDiv.children().last()\r\n .children('a.andor').hasClass('or');\r\n\r\n var row = $(\r\n \"<div class='filter-line'>\" +\r\n \"<a class='delete'><span></span></a>\" +\r\n \"<div class='l'>\" +\r\n \"<a class='rightparen' href='#'>)</a>\" +\r\n \"<a class='andor' href='#'></a>\" +\r\n \"<a class='leftparen' href='#'>(</a>\" +\r\n \"</div>\" +\r\n \"<div class='f'>\" +\r\n \"<input type='hidden' class='field-select'>\" +\r\n \"</div>\" +\r\n \"<div class='o'></div>\" +\r\n \"<div class='v'></div>\" +\r\n \"<div style='clear: both'></div>\" +\r\n \"</div>\").appendTo(this.rowsDiv);\r\n\r\n var parenDiv = row.children('div.l').hide();\r\n\r\n parenDiv.children('a.leftparen, a.rightparen')\r\n .click((e) => this.leftRightParenClick(e));\r\n\r\n var andor = parenDiv.children('a.andor').attr('title', Q.text('Controls.FilterPanel.ChangeAndOr'));\r\n if (isLastRowOr) {\r\n andor.addClass('or').text(Q.text('Controls.FilterPanel.Or'));\r\n }\r\n else {\r\n andor.text(Q.text('Controls.FilterPanel.And'));\r\n }\r\n\r\n andor.click((e) => this.andOrClick(e));\r\n\r\n row.children('a.delete')\r\n .attr('title', Q.text('Controls.FilterPanel.RemoveField'))\r\n .click((e) => this.deleteRowClick(e));\r\n\r\n var fieldSel = new FilterFieldSelect(row.children('div.f')\r\n .children('input'), this.get_store().get_fields())\r\n .changeSelect2(e => this.onRowFieldChange(e));\r\n\r\n this.updateParens();\r\n this.updateButtons();\r\n\r\n row.find('input.field-select').select2('focus');\r\n\r\n if (popupField) {\r\n row.find('input.field-select').select2('open');\r\n }\r\n\r\n return row;\r\n }\r\n\r\n protected onRowFieldChange(e: JQueryEventObject) {\r\n var row = $(e.target).closest('div.filter-line');\r\n this.rowFieldChange(row);\r\n var opSelect = row.children('div.o').find('input.op-select');\r\n opSelect.select2('focus');\r\n }\r\n\r\n protected rowFieldChange(row: JQuery) {\r\n row.removeData('Filtering');\r\n var select = row.children('div.f').find('input.field-select')\r\n .getWidget(FilterFieldSelect);\r\n var fieldName = select.get_value();\r\n var isEmpty = fieldName == null || fieldName === '';\r\n this.removeFiltering(row);\r\n this.populateOperatorList(row);\r\n this.rowOperatorChange(row);\r\n this.updateParens();\r\n this.updateButtons();\r\n }\r\n\r\n protected removeFiltering(row: JQuery): void {\r\n row.data('Filtering', null);\r\n row.data('FilteringField', null);\r\n }\r\n\r\n protected populateOperatorList(row: JQuery): void {\r\n row.children('div.o').html('');\r\n\r\n var filtering = this.getFilteringFor(row);\r\n if (filtering == null)\r\n return;\r\n\r\n var hidden = row.children('div.o').html('<input/>')\r\n .children().attr('type', 'hidden').addClass('op-select');\r\n\r\n var operators = filtering.getOperators();\r\n var opSelect = new FilterOperatorSelect(hidden, operators);\r\n opSelect.changeSelect2(e => this.onRowOperatorChange(e));\r\n }\r\n\r\n protected getFieldFor(row: JQuery) {\r\n if (row.length === 0) {\r\n return null;\r\n }\r\n var select = row.children('div.f').find('input.field-select')\r\n .getWidget(FilterFieldSelect);\r\n\r\n if (Q.isEmptyOrNull(select.value)) {\r\n return null;\r\n }\r\n\r\n return this.get_store().get_fieldByName()[select.get_value()];\r\n }\r\n\r\n protected getFilteringFor(row: JQuery): IFiltering {\r\n var field = this.getFieldFor(row);\r\n\r\n if (field == null)\r\n return null;\r\n\r\n var filtering = (ss as any).cast(row.data('Filtering'), IFiltering);\r\n\r\n if (filtering != null)\r\n return filtering;\r\n\r\n var filteringType = FilteringTypeRegistry.get(\r\n Q.coalesce(field.filteringType, 'String'));\r\n\r\n var editorDiv = row.children('div.v');\r\n filtering = (ss as any).cast((ss as any).createInstance(filteringType), IFiltering);\r\n ReflectionOptionsSetter.set(filtering, field.filteringParams);\r\n filtering.set_container(editorDiv);\r\n filtering.set_field(field);\r\n row.data('Filtering', filtering);\r\n return filtering;\r\n }\r\n\r\n protected onRowOperatorChange(e: JQueryEventObject) {\r\n var row = $(e.target).closest('div.filter-line');\r\n this.rowOperatorChange(row);\r\n var firstInput = row.children('div.v').find(':input:visible').first();\r\n try {\r\n firstInput.focus();\r\n }\r\n catch ($t1) {\r\n }\r\n }\r\n\r\n protected rowOperatorChange(row: JQuery): void {\r\n\r\n if (row.length === 0) {\r\n return;\r\n }\r\n\r\n var editorDiv = row.children('div.v');\r\n editorDiv.html('');\r\n var filtering = this.getFilteringFor(row);\r\n if (filtering == null)\r\n return;\r\n \r\n var operatorSelect = row.children('div.o').find('input.op-select')\r\n .getWidget(FilterOperatorSelect);\r\n\r\n if (Q.isEmptyOrNull(operatorSelect.get_value()))\r\n return;\r\n \r\n var ops = filtering.getOperators().filter(function (x) {\r\n return x.key === operatorSelect.value;\r\n });\r\n\r\n var op = ((ops.length > 0) ? ops[0] : null);\r\n if (op == null)\r\n return;\r\n\r\n filtering.set_operator(op);\r\n filtering.createEditor();\r\n }\r\n\r\n protected deleteRowClick(e: JQueryEventObject): void {\r\n e.preventDefault();\r\n var row = $(e.target).closest('div.filter-line');\r\n row.remove();\r\n\r\n if (this.rowsDiv.children().length === 0) {\r\n this.search();\r\n }\r\n\r\n this.updateParens();\r\n this.updateButtons();\r\n }\r\n\r\n protected updateButtons(): void {\r\n this.byId('SearchButton').toggle(\r\n this.rowsDiv.children().length >= 1 && this.showSearchButton);\r\n this.byId('ResetButton').toggle(\r\n this.rowsDiv.children().length >= 1);\r\n }\r\n\r\n protected andOrClick(e: JQueryEventObject): void {\r\n e.preventDefault();\r\n var andor = $(e.target).toggleClass('or');\r\n andor.text(Q.text('Controls.FilterPanel.' +\r\n (andor.hasClass('or') ? 'Or' : 'And')));\r\n }\r\n\r\n protected leftRightParenClick(e: JQueryEventObject): void {\r\n e.preventDefault();\r\n $(e.target).toggleClass('active');\r\n this.updateParens();\r\n }\r\n\r\n protected updateParens() {\r\n var rows = this.rowsDiv.children();\r\n if (rows.length === 0) {\r\n return;\r\n }\r\n rows.removeClass('paren-start');\r\n rows.removeClass('paren-end');\r\n rows.children('div.l').css('display', ((rows.length === 1) ? 'none' : 'block'));\r\n rows.first().children('div.l').children('a.rightparen, a.andor')\r\n .css('visibility', 'hidden');\r\n\r\n for (var i = 1; i < rows.length; i++) {\r\n var row = rows.eq(i);\r\n row.children('div.l').css('display', 'block')\r\n .children('a.lefparen, a.andor').css('visibility', 'visible');\r\n }\r\n\r\n var inParen = false;\r\n for (var i1 = 0; i1 < rows.length; i1++) {\r\n var row1 = rows.eq(i1);\r\n var divParen = row1.children('div.l');\r\n var lp = divParen.children('a.leftparen');\r\n var rp = divParen.children('a.rightparen');\r\n if (rp.hasClass('active') && inParen) {\r\n inParen = false;\r\n if (i1 > 0) {\r\n rows.eq(i1 - 1).addClass('paren-end');\r\n }\r\n }\r\n if (lp.hasClass('active')) {\r\n inParen = true;\r\n if (i1 > 0) {\r\n row1.addClass('paren-start');\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}","declare namespace Serenity {\r\n\r\n interface QuickFilterArgs<TWidget> {\r\n field?: string;\r\n widget?: TWidget;\r\n request?: ListRequest;\r\n equalityFilter?: any;\r\n value?: any;\r\n active?: boolean;\r\n handled?: boolean;\r\n }\r\n\r\n interface QuickFilter<TWidget extends Widget<TOptions>, TOptions> {\r\n field?: string;\r\n type?: new (element: JQuery, options: TOptions) => TWidget;\r\n handler?: (h: QuickFilterArgs<TWidget>) => void;\r\n title?: string;\r\n options?: TOptions;\r\n element?: (e: JQuery) => void;\r\n init?: (w: TWidget) => void;\r\n separator?: boolean;\r\n cssClass?: string;\r\n loadState?: (w: TWidget, state: any) => void;\r\n saveState?: (w: TWidget) => any;\r\n displayText?: (w: TWidget, label: string) => string;\r\n }\r\n}","namespace Serenity {\r\n\r\n export interface QuickSearchInputOptions {\r\n typeDelay?: number;\r\n loadingParentClass?: string;\r\n filteredParentClass?: string;\r\n onSearch?: (p1: string, p2: string, p3: (p1: boolean) => void) => void;\r\n fields?: QuickSearchField[];\r\n }\r\n\r\n export class QuickSearchInput extends Widget<QuickSearchInputOptions> {\r\n private lastValue: string;\r\n private field: QuickSearchField;\r\n private fieldChanged: boolean;\r\n private timer: number;\r\n\r\n constructor(input: JQuery, opt: QuickSearchInputOptions) {\r\n super(input, opt);\r\n\r\n input.attr('title', Q.text('Controls.QuickSearch.Hint'))\r\n .attr('placeholder', Q.text('Controls.QuickSearch.Placeholder'));\r\n this.lastValue = Q.trim(Q.coalesce(input.val(), ''));\r\n\r\n var self = this;\r\n this.element.bind('keyup.' + this.uniqueName, function () {\r\n self.checkIfValueChanged();\r\n });\r\n\r\n this.element.bind('change.' + this.uniqueName, function () {\r\n self.checkIfValueChanged();\r\n });\r\n\r\n $('<span><i></i></span>').addClass('quick-search-icon')\r\n .insertBefore(input);\r\n\r\n if (Q.isValue(this.options.fields) && this.options.fields.length > 0) {\r\n var a = $('<a/>').addClass('quick-search-field').attr('title',\r\n Q.text('Controls.QuickSearch.FieldSelection')).insertBefore(input);\r\n\r\n var menu = $('<ul></ul>').css('width', '120px');\r\n\r\n for (var item of this.options.fields) {\r\n var field = { $: item };\r\n $('<li><a/></li>').appendTo(menu).children().attr('href', '#')\r\n .text(Q.coalesce(item.title, '')).click((ss as any).mkdel({\r\n field: field,\r\n $this: this\r\n }, function (e: any) {\r\n e.preventDefault();\r\n this.$this.fieldChanged = !(ss as any).referenceEquals(self.field, this.field.$);\r\n self.field = this.field.$;\r\n this.$this.updateInputPlaceHolder();\r\n this.$this.checkIfValueChanged();\r\n }));\r\n }\r\n\r\n new Serenity.PopupMenuButton(a, {\r\n positionMy: 'right top',\r\n positionAt: 'right bottom',\r\n menu: menu\r\n });\r\n\r\n this.field = this.options.fields[0];\r\n this.updateInputPlaceHolder();\r\n }\r\n\r\n this.element.bind('execute-search.' + this.uniqueName, e1 => {\r\n if (!!this.timer) {\r\n window.clearTimeout(this.timer);\r\n }\r\n this.searchNow(Q.trim(Q.coalesce(this.element.val(), '')));\r\n });\r\n }\r\n\r\n protected checkIfValueChanged(): void {\r\n if (this.element.hasClass('ignore-change')) {\r\n return;\r\n }\r\n\r\n var value = Q.trim(Q.coalesce(this.element.val(), ''));\r\n if (value == this.lastValue && (!this.fieldChanged || Q.isEmptyOrNull(value))) {\r\n this.fieldChanged = false;\r\n return;\r\n }\r\n\r\n this.fieldChanged = false;\r\n\r\n if (!!this.timer) {\r\n window.clearTimeout(this.timer);\r\n }\r\n\r\n var self = this;\r\n this.timer = window.setTimeout(function () {\r\n self.searchNow(value);\r\n }, Q.coalesce(this.options.typeDelay, 500));\r\n\r\n this.lastValue = value;\r\n }\r\n\r\n get_field(): QuickSearchField {\r\n return this.field;\r\n }\r\n\r\n set_field(value: QuickSearchField): void {\r\n if (this.field !== value) {\r\n this.fieldChanged = true;\r\n this.field = value;\r\n this.updateInputPlaceHolder();\r\n this.checkIfValueChanged();\r\n }\r\n }\r\n\r\n protected updateInputPlaceHolder() {\r\n var qsf = this.element.prevAll('.quick-search-field');\r\n if (this.field) {\r\n qsf.text(this.field.title);\r\n }\r\n\t\t\telse {\r\n qsf.text('');\r\n }\r\n }\r\n\r\n protected searchNow(value: string) {\r\n this.element.parent().toggleClass(\r\n Q.coalesce(this.options.filteredParentClass, 's-QuickSearchFiltered'), !!(value.length > 0));\r\n\r\n this.element.parent().addClass(\r\n Q.coalesce(this.options.loadingParentClass, 's-QuickSearchLoading'))\r\n .addClass(Q.coalesce(this.options.loadingParentClass, 's-QuickSearchLoading'));\r\n\r\n var done = (results: any) => {\r\n this.element.removeClass(Q.coalesce(this.options.loadingParentClass,\r\n 's-QuickSearchLoading')).parent().removeClass(\r\n Q.coalesce(this.options.loadingParentClass, 's-QuickSearchLoading'));\r\n\r\n if (!results) {\r\n this.element.closest('.s-QuickSearchBar')\r\n .find('.quick-search-icon i')\r\n .effect('shake', { distance: 2 });\r\n }\r\n };\r\n\r\n if (this.options.onSearch != null) {\r\n this.options.onSearch(((this.field != null &&\r\n !Q.isEmptyOrNull(this.field.name)) ? this.field.name : null), value, done);\r\n }\r\n else {\r\n done(true);\r\n }\r\n }\r\n }\r\n}","namespace Serenity {\r\n\r\n export interface IInitializeColumn {\r\n initializeColumn(column: Slick.Column): void;\r\n }\r\n\r\n @Serenity.Decorators.registerInterface('Serenity.IInitializeColumn')\r\n export class IInitializeColumn {\r\n }\r\n\r\n import Option = Serenity.Decorators.option\r\n\r\n function Formatter(name: string, intf?: any[]) {\r\n return Decorators.registerFormatter('Serenity.' + name + 'Formatter', intf)\r\n }\r\n\r\n @Formatter('Boolean')\r\n export class BooleanFormatter implements Slick.Formatter {\r\n format(ctx: Slick.FormatterContext) {\r\n\r\n if (ctx.value == null) {\r\n return '';\r\n }\r\n\r\n var text;\r\n if (!!ctx.value) {\r\n text = Q.tryGetText(this.trueText);\r\n if (text == null) {\r\n text = this.trueText;\r\n if (text == null) {\r\n text = Q.coalesce(Q.tryGetText('Dialogs.YesButton'), 'Yes');\r\n }\r\n }\r\n }\r\n else {\r\n text = Q.tryGetText(this.falseText);\r\n if (text == null) {\r\n text = this.falseText;\r\n if (text == null) {\r\n text = Q.coalesce(Q.tryGetText('Dialogs.NoButton'), 'No');\r\n }\r\n }\r\n }\r\n\r\n return Q.htmlEncode(text);\r\n }\r\n\r\n @Option()\r\n public falseText: string;\r\n\r\n @Option()\r\n public trueText: string;\r\n }\r\n\r\n @Formatter('Checkbox')\r\n export class CheckboxFormatter implements Slick.Formatter {\r\n format(ctx: Slick.FormatterContext) {\r\n return '<span class=\"check-box no-float readonly ' + (!!ctx.value ? ' checked' : '') + '\"></span>';\r\n }\r\n }\r\n\r\n @Formatter('Date')\r\n export class DateFormatter implements Slick.Formatter {\r\n constructor() {\r\n this.displayFormat = Q.Culture.dateFormat;\r\n }\r\n\r\n static format(value: any, format?: string) {\r\n if (value == null) {\r\n return '';\r\n }\r\n\r\n var date: Date;\r\n\r\n if (value instanceof Date) {\r\n date = value;\r\n }\r\n else if (typeof value === 'string') {\r\n date = Q.parseISODateTime(value);\r\n\r\n if (date == null) {\r\n return Q.htmlEncode(value);\r\n }\r\n }\r\n else {\r\n return value.toString();\r\n }\r\n\r\n return Q.htmlEncode(Q.formatDate(date, format));\r\n }\r\n\r\n @Option()\r\n public displayFormat: string;\r\n\r\n format(ctx: Slick.FormatterContext): string {\r\n return DateFormatter.format(ctx.value, this.displayFormat);\r\n }\r\n }\r\n\r\n @Formatter('DateTime')\r\n export class DateTimeFormatter extends DateFormatter {\r\n constructor() {\r\n super();\r\n this.displayFormat = Q.Culture.dateTimeFormat;\r\n }\r\n }\r\n\r\n @Formatter('Enum')\r\n export class EnumFormatter implements Slick.Formatter {\r\n\r\n format(ctx: Slick.FormatterContext): string {\r\n return EnumFormatter.format(EnumTypeRegistry.get(this.enumKey), ctx.value);\r\n }\r\n\r\n @Option()\r\n enumKey: string;\r\n\r\n static format(enumType: any, value: any) {\r\n\r\n if (value == null) {\r\n return '';\r\n }\r\n\r\n var name;\r\n try {\r\n name = (ss as any).Enum.toString(enumType, value);\r\n }\r\n catch (e) {\r\n e = (ss.Exception as any).wrap(e);\r\n if ((ss as any).isInstanceOfType(e, (ss as any).ArgumentException)) {\r\n name = value.toString();\r\n }\r\n else {\r\n throw e;\r\n }\r\n }\r\n\r\n var enumKeyAttr = (ss as any).getAttributes(enumType, EnumKeyAttribute, false);\r\n var enumKey = ((enumKeyAttr.length > 0) ? enumKeyAttr[0].value : (ss as any).getTypeFullName(enumType));\r\n return EnumFormatter.getText(enumKey, name);\r\n }\r\n\r\n static getText(enumKey: string, name: string) {\r\n if (Q.isEmptyOrNull(name)) {\r\n return '';\r\n }\r\n\r\n return Q.htmlEncode(Q.coalesce(Q.tryGetText('Enums.' + enumKey + '.' + name), name));\r\n }\r\n\r\n static getName(enumType: any, value: any) {\r\n if (value == null) {\r\n return '';\r\n }\r\n return (ss as any).Enum.toString(enumType, value);\r\n }\r\n }\r\n\r\n @Formatter('FileDownload', [ISlickFormatter, IInitializeColumn])\r\n export class FileDownloadFormatter implements Slick.Formatter, IInitializeColumn {\r\n\r\n format(ctx: Slick.FormatterContext): string {\r\n var dbFile = (ss as any).safeCast(ctx.value, String);\r\n if (Q.isEmptyOrNull(dbFile)) {\r\n return '';\r\n }\r\n\r\n var downloadUrl = FileDownloadFormatter.dbFileUrl(dbFile);\r\n var originalName = (!Q.isEmptyOrNull(this.originalNameProperty) ?\r\n (ss as any).safeCast(ctx.item[this.originalNameProperty], String) : null);\r\n\r\n originalName = Q.coalesce(originalName, '');\r\n var text = Q.format(Q.coalesce(this.displayFormat, '{0}'),\r\n originalName, dbFile, downloadUrl);\r\n\r\n return \"<a class='file-download-link' target='_blank' href='\" +\r\n Q.attrEncode(downloadUrl) + \"'>\" + Q.htmlEncode(text) + '</a>';\r\n }\r\n\r\n static dbFileUrl(filename: string): string {\r\n filename = Q.replaceAll(Q.coalesce(filename, ''), '\\\\', '/');\r\n return Q.resolveUrl('~/upload/') + filename;\r\n }\r\n\r\n initializeColumn(column: Slick.Column): void {\r\n column.referencedFields = column.referencedFields || [];\r\n if (!Q.isEmptyOrNull(this.originalNameProperty)) {\r\n column.referencedFields.push(this.originalNameProperty);\r\n return;\r\n }\r\n }\r\n\r\n @Option()\r\n displayFormat: string;\r\n\r\n @Option()\r\n originalNameProperty: string;\r\n }\r\n\r\n @Formatter('Minute')\r\n export class MinuteFormatter implements Slick.Formatter {\r\n\r\n format(ctx: Slick.FormatterContext) {\r\n return MinuteFormatter.format(ctx.value);\r\n }\r\n\r\n static format(value: number): string {\r\n var hour = Math.floor(value / 60);\r\n var minute = value - hour * 60;\r\n var hourStr, minuteStr;\r\n\r\n if (value == null || isNaN(value))\r\n return '';\r\n\r\n if (hour < 10)\r\n hourStr = '0' + hour;\r\n else\r\n hourStr = hour.toString();\r\n\r\n if (minute < 10)\r\n minuteStr = '0' + minute;\r\n else\r\n minuteStr = minute.toString();\r\n\r\n return Q.format('{0}:{1}', hourStr, minuteStr);\r\n }\r\n }\r\n\r\n @Formatter('Number')\r\n export class NumberFormatter {\r\n format(ctx: Slick.FormatterContext): string {\r\n return NumberFormatter.format(ctx.value, this.displayFormat);\r\n }\r\n\r\n static format(value: any, format?: string): string {\r\n format = Q.coalesce(format, '0.##');\r\n if (value == null)\r\n return '';\r\n\r\n if (typeof (value) === 'number') {\r\n if (isNaN(value))\r\n return '';\r\n\r\n return Q.htmlEncode(Q.formatNumber(value, format));\r\n }\r\n\r\n var dbl = Q.parseDecimal(value.toString());\r\n if (dbl == null)\r\n return '';\r\n\r\n return Q.htmlEncode(value.toString());\r\n }\r\n\r\n @Option()\r\n displayFormat: string;\r\n }\r\n\r\n @Formatter('Url', [ISlickFormatter, IInitializeColumn])\r\n export class UrlFormatter implements Slick.Formatter, IInitializeColumn {\r\n\r\n format(ctx: Slick.FormatterContext): string {\r\n var url = (!Q.isEmptyOrNull(this.urlProperty) ?\r\n Q.coalesce(ctx.item[this.urlProperty], '').toString() :\r\n Q.coalesce(ctx.value, '').toString());\r\n\r\n if (Q.isEmptyOrNull(url))\r\n return '';\r\n\r\n if (!Q.isEmptyOrNull(this.urlFormat))\r\n url = Q.format(this.urlFormat, url);\r\n\r\n if (url != null && Q.startsWith(url, '~/'))\r\n url = Q.resolveUrl(url);\r\n\r\n var display = (!Q.isEmptyOrNull(this.displayProperty) ?\r\n Q.coalesce(ctx.item[this.displayProperty], '').toString() :\r\n Q.coalesce(ctx.value, '').toString());\r\n\r\n if (!Q.isEmptyOrNull(this.displayFormat))\r\n display = Q.format(this.displayFormat, display);\r\n\r\n var s = \"<a href='\" + Q.attrEncode(url) + \"'\";\r\n if (!Q.isEmptyOrNull(this.target))\r\n s += \" target='\" + this.target + \"'\";\r\n\r\n s += '>' + Q.htmlEncode(display) + '</a>';\r\n\r\n return s;\r\n }\r\n\r\n initializeColumn(column: Slick.Column): void {\r\n column.referencedFields = column.referencedFields || [];\r\n\r\n if (!Q.isEmptyOrNull(this.displayProperty)) {\r\n column.referencedFields.push(this.displayProperty);\r\n return;\r\n }\r\n\r\n if (!Q.isEmptyOrNull(this.urlProperty)) {\r\n column.referencedFields.push(this.urlProperty);\r\n return;\r\n }\r\n }\r\n\r\n @Option()\r\n displayProperty: string;\r\n\r\n @Option()\r\n displayFormat: string;\r\n\r\n @Option()\r\n urlProperty: string;\r\n\r\n @Option()\r\n urlFormat: string;\r\n\r\n @Option()\r\n target: string;\r\n }\r\n\r\n export namespace FormatterTypeRegistry {\r\n\r\n let knownTypes: Q.Dictionary<Function>;\r\n\r\n function setTypeKeysWithoutFormatterSuffix() {\r\n var suffix = 'formatter';\r\n for (var k of Object.keys(knownTypes)) {\r\n if (!Q.endsWith(k, suffix)) \r\n continue;\r\n \r\n var p = k.substr(0, k.length - suffix.length);\r\n if (Q.isEmptyOrNull(p))\r\n continue;\r\n \r\n if (knownTypes[p] != null)\r\n continue;\r\n \r\n knownTypes[p] = knownTypes[k];\r\n }\r\n }\r\n\r\n function initialize() {\r\n\r\n if (knownTypes) {\r\n return;\r\n }\r\n\r\n knownTypes = {};\r\n var assemblies = (ss as any).getAssemblies();\r\n for (var assembly of assemblies) {\r\n var types = (ss as any).getAssemblyTypes(assembly);\r\n for (var type of types) {\r\n if (!(ss as any).isAssignableFrom(Serenity.ISlickFormatter, type))\r\n continue;\r\n \r\n if ((ss as any).isGenericTypeDefinition(type))\r\n continue;\r\n \r\n var fullName = (ss as any).getTypeFullName(type).toLowerCase();\r\n knownTypes[fullName] = type;\r\n\r\n for (var k of Q.Config.rootNamespaces) {\r\n if (Q.startsWith(fullName, k.toLowerCase() + '.')) {\r\n var kx = fullName.substr(k.length + 1).toLowerCase();\r\n if (knownTypes[kx] == null) {\r\n knownTypes[kx] = type;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n setTypeKeysWithoutFormatterSuffix();\r\n }\r\n\r\n export function get(key: string): Function {\r\n if (Q.isEmptyOrNull(key)) \r\n throw new (ss as any).ArgumentNullException('key');\r\n \r\n initialize();\r\n\r\n var formatterType = knownTypes[key.toLowerCase()];\r\n if (formatterType == null) {\r\n throw new ss.Exception(Q.format(\r\n \"Can't find {0} formatter type!\", key));\r\n }\r\n\r\n return formatterType;\r\n }\r\n\r\n export function reset() {\r\n knownTypes = null;\r\n }\r\n }\r\n}","namespace Serenity {\r\n export class Flexify extends Widget<FlexifyOptions> {\r\n private xDifference = 0;\r\n private yDifference = 0;\r\n constructor(container: JQuery, options: FlexifyOptions) {\r\n super(container, options);\r\n\r\n Serenity.LazyLoadHelper.executeOnceWhenShown(container, () => {\r\n this.storeInitialSize();\r\n });\r\n }\r\n\r\n storeInitialSize() {\r\n if (!!this.element.data('flexify-init')) {\r\n return;\r\n }\r\n\r\n var designWidth = this.options.designWidth;\r\n if (designWidth == null)\r\n designWidth = this.element.width();\r\n this.element.data('flexify-width', designWidth);\r\n\r\n var designHeight = this.options.designHeight;\r\n if (designHeight == null)\r\n designHeight = this.element.height();\r\n this.element.data('flexify-height', designHeight);\r\n\r\n this.element.data('flexify-init', true);\r\n\r\n this.element.bind('resize.' + this.uniqueName, () =>\r\n this.resizeElements());\r\n\r\n this.element.bind('resizestop.' + this.uniqueName, () =>\r\n this.resizeElements());\r\n \r\n var tabs = this.element.find('.ui-tabs');\r\n if (tabs.length > 0) {\r\n tabs.bind('tabsactivate.' + this.uniqueName, () =>\r\n this.resizeElements());\r\n }\r\n\r\n\t\t\tif (this.options.designWidth != null || this.options.designHeight != null) \r\n this.resizeElements();\r\n }\r\n\r\n private getXFactor(element: JQuery): number {\r\n var xFactor = null;\r\n if (this.options.getXFactor != null)\r\n xFactor = this.options.getXFactor(element);\r\n\r\n\t\t\tif (xFactor == null)\r\n xFactor = element.data('flex-x');\r\n\r\n return Q.coalesce(xFactor, 1);\r\n }\r\n\r\n private getYFactor(element: JQuery): number {\r\n var yFactor = null;\r\n\r\n if (this.options.getYFactor != null) \r\n yFactor = this.options.getYFactor(element);\r\n\r\n\t\t\tif (yFactor == null) \r\n yFactor = element.data('flex-y');\r\n\r\n\t\t\treturn Q.coalesce(yFactor, 0);\r\n }\r\n\r\n private resizeElements(): void {\r\n var width = this.element.width();\r\n var initialWidth = this.element.data('flexify-width');\r\n if (initialWidth == null) {\r\n this.element.data('flexify-width', width);\r\n initialWidth = width;\r\n }\r\n\r\n\t\t\tvar height = this.element.height();\r\n var initialHeight = this.element.data('flexify-height');\r\n if (initialHeight == null) {\r\n this.element.data('flexify-height', height);\r\n initialHeight = height;\r\n }\r\n\r\n\t\t\tthis.xDifference = width - initialWidth;\r\n this.yDifference = height - initialHeight;\r\n\r\n var containers = this.element;\r\n var tabPanels = this.element.find('.ui-tabs-panel');\r\n\r\n if (tabPanels.length > 0) {\r\n containers = tabPanels.filter(':visible');\r\n }\r\n\r\n containers.find('.flexify')\r\n .add(tabPanels.filter('.flexify:visible'))\r\n .each((i, e) => {\r\n this.resizeElement($(e));\r\n });\r\n }\r\n\r\n private resizeElement(element: JQuery): void {\r\n var xFactor = this.getXFactor(element);\r\n if(xFactor !== 0) {\r\n var initialWidth = element.data('flexify-width');\r\n if (initialWidth == null) {\r\n var width = element.width();\r\n element.data('flexify-width', width);\r\n initialWidth = width;\r\n }\r\n\r\n element.width(initialWidth + xFactor * this.xDifference | 0);\r\n }\r\n\r\n\t\t\tvar yFactor = this.getYFactor(element);\r\n if (yFactor !== 0) {\r\n var initialHeight = element.data('flexify-height');\r\n if (initialHeight == null) {\r\n var height = element.height();\r\n element.data('flexify-height', height);\r\n initialHeight = height;\r\n }\r\n element.height(initialHeight + yFactor * this.yDifference | 0);\r\n }\r\n\r\n\t\t\tif (element.hasClass('require-layout')) {\r\n element.triggerHandler('layout');\r\n }\r\n }\r\n }\r\n\r\n export interface FlexifyOptions {\r\n getXFactor?: (p1: JQuery) => any;\r\n getYFactor?: (p1: JQuery) => any;\r\n designWidth?: any;\r\n designHeight?: any;\r\n }\r\n}","namespace Serenity {\r\n export namespace EnumTypeRegistry {\r\n\r\n let knownTypes: Q.Dictionary<Function>;\r\n\r\n export function tryGet(key: string): Function {\r\n\r\n if (knownTypes == null) {\r\n knownTypes = {};\r\n for (var assembly of (ss as any).getAssemblies()) {\r\n for (var type of (ss as any).getAssemblyTypes(assembly)) {\r\n if ((ss as any).isEnum(type)) {\r\n var fullName = (ss as any).getTypeFullName(type);\r\n knownTypes[fullName] = type;\r\n var enumKeyAttr = (ss as any).getAttributes(type, Serenity.EnumKeyAttribute, false);\r\n if (enumKeyAttr != null && enumKeyAttr.length > 0) {\r\n knownTypes[enumKeyAttr[0].value] = type;\r\n }\r\n\r\n for (var k of Q.Config.rootNamespaces) {\r\n if (Q.startsWith(fullName, k + '.')) {\r\n knownTypes[fullName.substr(k.length + 1)] = type;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n if (knownTypes[key] == null)\r\n return null;\r\n\r\n return knownTypes[key];\r\n }\r\n\r\n export function get(key: string): Function {\r\n var type = EnumTypeRegistry.tryGet(key);\r\n if (type == null) {\r\n var message = Q.format(\"Can't find {0} enum type! If you have recently defined this enum type \" + \r\n \"in server side code, make sure your project builds successfully and transform T4 templates. \" +\r\n \"Also make sure that enum is under your project root namespace, and your namespace parts starts \" + \r\n \"with capital letters, e.g.MyProject.Pascal.Cased namespace\", key);\r\n\r\n Q.notifyError(message, '', null);\r\n throw new (ss as any).Exception(message);\r\n }\r\n\r\n return type;\r\n }\r\n }\r\n}","namespace Serenity {\r\n export class PrefixedContext {\r\n constructor(public readonly idPrefix: string) {\r\n }\r\n\r\n byId(id: string) {\r\n return $('#' + this.idPrefix + id);\r\n }\r\n\r\n w<TWidget>(id: string, type: { new (...args: any[]): TWidget }): TWidget {\r\n return $('#' + this.idPrefix + id).getWidget<TWidget>(type);\r\n }\r\n }\r\n\r\n export namespace ReflectionOptionsSetter {\r\n export function set(target: any, options: any): void {\r\n if (options == null) {\r\n return;\r\n }\r\n\r\n var type = (ss as any).getInstanceType(target);\r\n\r\n if (type === Object) {\r\n return;\r\n }\r\n\r\n var propByName = type.__propByName;\r\n var fieldByName = type.__fieldByName;\r\n if (propByName == null) {\r\n var props = (ss as any).getMembers(type, 16, 20);\r\n var propList = props.filter(function (x: any) {\r\n return !!x.setter && ((x.attr || []).filter(function (a: any) {\r\n return (ss as any).isInstanceOfType(a, Serenity.OptionAttribute);\r\n }).length > 0 || (x.attr || []).filter(function (a: any) {\r\n return (ss as any).isInstanceOfType(a, System.ComponentModel.DisplayNameAttribute);\r\n }).length > 0);\r\n });\r\n\r\n propByName = {};\r\n for (var k of propList) {\r\n propByName[ReflectionUtils.makeCamelCase(k.name)] = k;\r\n }\r\n\r\n type.__propByName = propByName;\r\n }\r\n\r\n if (fieldByName == null) {\r\n var fields = (ss as any).getMembers(type, 4, 20);\r\n var fieldList = fields.filter(function (x1: any) {\r\n return (x1.attr || []).filter(function (a: any) {\r\n return (ss as any).isInstanceOfType(a, Serenity.OptionAttribute);\r\n }).length > 0 || (x1.attr || []).filter(function (a: any) {\r\n return (ss as any).isInstanceOfType(a, System.ComponentModel.DisplayNameAttribute);\r\n }).length > 0;\r\n });\r\n\r\n fieldByName = {};\r\n for (var $t2 = 0; $t2 < fieldList.length; $t2++) {\r\n var k1 = fieldList[$t2];\r\n fieldByName[ReflectionUtils.makeCamelCase(k1.name)] = k1;\r\n }\r\n type.__fieldByName = fieldByName;\r\n }\r\n\r\n var keys = Object.keys(options);\r\n for (var k2 of keys) {\r\n var v = options[k2];\r\n var cc = ReflectionUtils.makeCamelCase(k2);\r\n var p = propByName[cc] || propByName[k2];\r\n if (p != null) {\r\n (ss as any).midel(p.setter, target)(v);\r\n }\r\n else {\r\n var f = fieldByName[cc] || fieldByName[k2];\r\n if (f != null) {\r\n (ss as any).fieldAccess(f, target, v);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n export namespace ReflectionUtils {\r\n export function getPropertyValue(o: any, property: string): any {\r\n var d = o;\r\n var getter = d['get_' + property];\r\n if (!!!(typeof (getter) === 'undefined')) {\r\n return getter.apply(o);\r\n }\r\n var camelCase = makeCamelCase(property);\r\n getter = d['get_' + camelCase];\r\n if (!!!(typeof (getter) === 'undefined')) {\r\n return getter.apply(o);\r\n }\r\n return d[camelCase];\r\n }\r\n\r\n export function setPropertyValue(o: any, property: string, value: any): void {\r\n var d = o;\r\n var setter = d['set_' + property];\r\n if (!!!(typeof (setter) === 'undefined')) {\r\n setter.apply(o, [value]);\r\n return;\r\n }\r\n var camelCase = makeCamelCase(property);\r\n setter = d['set_' + camelCase];\r\n if (!!!(typeof (setter) === 'undefined')) {\r\n setter.apply(o, [value]);\r\n return;\r\n }\r\n d[camelCase] = value;\r\n }\r\n\r\n export function makeCamelCase(s: string): string {\r\n if (Q.isEmptyOrNull(s)) {\r\n return s;\r\n }\r\n\r\n if (s === 'ID') {\r\n return 'id';\r\n }\r\n\r\n var hasNonUppercase = false;\r\n var numUppercaseChars = 0;\r\n for (var index = 0; index < s.length; index++) {\r\n if (s.charCodeAt(index) >= 65 && s.charCodeAt(index) <= 90) {\r\n numUppercaseChars++;\r\n }\r\n else {\r\n hasNonUppercase = true;\r\n break;\r\n }\r\n }\r\n\r\n if (!hasNonUppercase && s.length !== 1 || numUppercaseChars === 0) {\r\n return s;\r\n }\r\n else if (numUppercaseChars > 1) {\r\n return s.substr(0, numUppercaseChars - 1).toLowerCase() + s.substr(numUppercaseChars - 1);\r\n }\r\n else if (s.length === 1) {\r\n return s.toLowerCase();\r\n }\r\n else {\r\n return s.substr(0, 1).toLowerCase() + s.substr(1);\r\n }\r\n }\r\n }\r\n\r\n export interface ScriptContext {\r\n }\r\n\r\n @Decorators.registerClass('Serenity.ScriptContext')\r\n export class ScriptContext {\r\n }\r\n}\r\n\r\ndeclare namespace Serenity {\r\n\r\n const enum RetrieveColumnSelection {\r\n details = 0,\r\n keyOnly = 1,\r\n list = 2\r\n }\r\n\r\n class CheckListEditor extends Widget<CheckListEditorOptions> {\r\n constructor(div: JQuery, opt: CheckListEditorOptions);\r\n getItems(): CheckListItem[];\r\n updateItems(): void;\r\n }\r\n\r\n interface CheckListEditorOptions {\r\n items?: CheckListItem[];\r\n selectAllOptionText?: string;\r\n }\r\n\r\n class CheckListItem {\r\n id: string;\r\n text: string;\r\n parentId: string;\r\n }\r\n\r\n interface CheckTreeItem<TSource> {\r\n isSelected?: boolean;\r\n hideCheckBox?: boolean;\r\n isAllDescendantsSelected?: boolean;\r\n id?: string;\r\n text?: string;\r\n parentId?: string;\r\n children?: CheckTreeItem<TSource>[];\r\n source?: TSource;\r\n }\r\n\r\n const enum ColumnSelection {\r\n List = 0,\r\n KeyOnly = 1,\r\n Details = 2\r\n }\r\n\r\n interface HtmlContentEditorOptions {\r\n }\r\n\r\n interface GridPersistanceFlags {\r\n columnWidths?: boolean;\r\n columnVisibility?: boolean;\r\n sortColumns?: boolean;\r\n filterItems?: boolean;\r\n quickFilters?: boolean;\r\n quickFilterText?: boolean;\r\n quickSearch?: boolean;\r\n includeDeleted?: boolean;\r\n }\r\n\r\n interface PersistedGridColumn {\r\n id: string;\r\n width?: number;\r\n sort?: number;\r\n visible?: boolean;\r\n }\r\n\r\n interface PersistedGridSettings {\r\n columns?: PersistedGridColumn[];\r\n filterItems?: FilterLine[];\r\n quickFilters?: Q.Dictionary<any>;\r\n quickFilterText?: string;\r\n quickSearchField?: QuickSearchField;\r\n quickSearchText?: string;\r\n includeDeleted?: boolean;\r\n }\r\n\r\n interface SettingStorage {\r\n getItem(key: string): string;\r\n setItem(key: string, value: string): void;\r\n }\r\n\r\n interface CKEditorConfig {\r\n }\r\n\r\n enum CaptureOperationType {\r\n Before = 0,\r\n Delete = 1,\r\n Insert = 2,\r\n Update = 3\r\n }\r\n\r\n namespace CustomValidation {\r\n function registerValidationMethods(): void;\r\n }\r\n\r\n interface DialogButton {\r\n text: string;\r\n click: () => void;\r\n }\r\n\r\n interface EditorTypeInfo {\r\n type?: Function;\r\n displayName?: string;\r\n optionsType?: Function;\r\n }\r\n}","namespace Serenity {\r\n\r\n export namespace WX {\r\n export function getWidget<TWidget>(element: JQuery, type: Function): any {\r\n if (element == null) {\r\n throw new (ss as any).ArgumentNullException('element');\r\n }\r\n if (element.length === 0) {\r\n throw new ss.Exception(Q.format(\"Searching for widget of type '{0}' on a non-existent element! ({1})\",\r\n (ss as any).getTypeFullName(type), element.selector));\r\n }\r\n var widget = element.tryGetWidget(type as any);\r\n if (widget == null) {\r\n var message = Q.format(\"Element has no widget of type '{0}'! If you have recently changed editor \" +\r\n \"type of a property in a form class, or changed data type in row (which also changes editor type)\" +\r\n \" your script side Form definition might be out of date. Make sure your project builds successfully \" +\r\n \"and transform T4 templates\", (ss as any).getTypeFullName(type));\r\n Q.notifyError(message, '', null);\r\n throw new ss.Exception(message);\r\n }\r\n return widget;\r\n }\r\n\r\n export function getWidgetName(type: Function): string {\r\n return Q.replaceAll((ss as any).getTypeFullName(type), '.', '_');\r\n }\r\n\r\n export function hasOriginalEvent(e: any): boolean {\r\n return !!!(typeof (e.originalEvent) === 'undefined');\r\n }\r\n\r\n export function change(widget: any, handler: any): void {\r\n widget.element.bind('change.' + widget.uniqueName, handler);\r\n }\r\n \r\n export function changeSelect2(widget: any, handler: any): void {\r\n widget.element.bind('change.' + widget.uniqueName, function (e: JQueryEventObject, x: boolean) {\r\n if (!!(hasOriginalEvent(e) || !x)) {\r\n handler(e);\r\n }\r\n });\r\n }\r\n\r\n export function getGridField(widget: Serenity.Widget<any>): JQuery {\r\n return widget.element.closest('.field');\r\n }\r\n }\r\n\r\n Serenity.Widget.prototype['changeSelect2'] = function (handler) {\r\n var widget = this;\r\n widget.element.bind('change.' + widget.uniqueName, function (e: JQueryEventObject, x: any) {\r\n if (!!(WX.hasOriginalEvent(e) || !x)) {\r\n handler(e);\r\n }\r\n });\r\n };\r\n\r\n Serenity.Widget.prototype['change'] = function (handler1) {\r\n var widget1 = this;\r\n widget1.element.bind('change.' + widget1.uniqueName, handler1);\r\n };\r\n\r\n Serenity.Widget.prototype['getGridField'] = function () {\r\n return this.element.closest('.field');\r\n };\r\n\r\n $.fn.tryGetWidget = function (widgetType: any) {\r\n var element = this;\r\n var widget2;\r\n if ((ss as any).isAssignableFrom(Serenity.Widget, widgetType)) {\r\n var widgetName = WX.getWidgetName(widgetType);\r\n widget2 = element.data(widgetName);\r\n if (widget2 != null && !(ss as any).isAssignableFrom(widgetType, (ss as any).getInstanceType(widget2))) {\r\n widget2 = null;\r\n }\r\n if (widget2 != null) {\r\n return widget2;\r\n }\r\n }\r\n\r\n var data = element.data();\r\n if (data == null) {\r\n return null;\r\n }\r\n\r\n for (var key of Object.keys(data)) {\r\n widget2 = data[key];\r\n if (widget2 != null && (ss as any).isAssignableFrom(widgetType, (ss as any).getInstanceType(widget2))) {\r\n return widget2;\r\n }\r\n }\r\n\r\n return null;\r\n };\r\n\r\n $.fn.getWidget = function (widgetType1: any) {\r\n var element1 = this;\r\n if (element1 == null) {\r\n throw new (ss as any).ArgumentNullException('element');\r\n }\r\n if (element1.length === 0) {\r\n throw new ss.Exception(Q.format(\"Searching for widget of type '{0}' on a non-existent element! ({1})\",\r\n (ss as any).getTypeFullName(widgetType1), element1.selector));\r\n }\r\n\r\n var widget3 = element1.tryGetWidget(widgetType1);\r\n if (widget3 == null) {\r\n var message = Q.format(\"Element has no widget of type '{0}'! If you have recently changed \" +\r\n \"editor type of a property in a form class, or changed data type in row (which also changes \" +\r\n \"editor type) your script side Form definition might be out of date. Make sure your project \" +\r\n \"builds successfully and transform T4 templates\", (ss as any).getTypeFullName(widgetType1));\r\n Q.notifyError(message, '', null);\r\n throw new ss.Exception(message);\r\n }\r\n return widget3;\r\n };\r\n}\r\n\r\n","namespace Serenity {\r\n\r\n @Decorators.registerClass('PropertyGrid')\r\n export class PropertyGrid extends Widget<PropertyGridOptions> {\r\n\r\n private editors: Widget<any>[];\r\n private items: PropertyItem[];\r\n\r\n constructor(div: JQuery, opt: PropertyGridOptions) {\r\n super(div, opt);\r\n\r\n if (opt.mode == null)\r\n opt.mode = 1;\r\n\r\n div.addClass('s-PropertyGrid');\r\n this.editors = [];\r\n var items = this.options.items || [];\r\n this.items = [];\r\n\r\n var useTabs = Q.any(items, function (x) {\r\n return !Q.isEmptyOrNull(x.tab);\r\n });\r\n\r\n if (useTabs) {\r\n var itemsWithoutTab = items.filter(f => Q.isEmptyOrNull(f.tab));\r\n if (itemsWithoutTab.length > 0) {\r\n this.createItems(this.element, itemsWithoutTab);\r\n\r\n $(\"<div class='pad'></div>\").appendTo(this.element);\r\n }\r\n\r\n var itemsWithTab = items.filter(f => !Q.isEmptyOrNull(f.tab));\r\n\r\n var ul = $(\"<ul class='nav nav-tabs property-tabs' role='tablist'></ul>\")\r\n .appendTo(this.element);\r\n\r\n var tc = $(\"<div class='tab-content property-panes'></div>\")\r\n .appendTo(this.element);\r\n\r\n var tabIndex = 0;\r\n var i = 0;\r\n while (i < itemsWithTab.length) {\r\n var tab = { $: Q.trimToEmpty(itemsWithTab[i].tab) };\r\n var tabItems = [];\r\n\r\n var j = i;\r\n do {\r\n tabItems.push(itemsWithTab[j]);\r\n } while (++j < itemsWithTab.length &&\r\n Q.trimToEmpty(itemsWithTab[j].tab) === tab.$);\r\n i = j;\r\n\r\n var li = $(\"<li><a data-toggle='tab' role='tab'></a></li>\")\r\n .appendTo(ul);\r\n\r\n if (tabIndex === 0) {\r\n li.addClass('active');\r\n }\r\n\r\n var tabID = this.uniqueName + '_Tab' + tabIndex;\r\n\r\n li.children('a').attr('href', '#' + tabID)\r\n .text(this.determineText(tab.$, (ss as any).mkdel({\r\n tab: tab\r\n }, function (prefix: string) {\r\n return prefix + 'Tabs.' + this.tab.$;\r\n })));\r\n\r\n var pane = $(\"<div class='tab-pane fade' role='tabpanel'>\")\r\n .appendTo(tc);\r\n\r\n if (tabIndex === 0) {\r\n pane.addClass('in active');\r\n }\r\n\r\n pane.attr('id', tabID);\r\n this.createItems(pane, tabItems);\r\n tabIndex++;\r\n }\r\n }\r\n else {\r\n this.createItems(this.element, items);\r\n }\r\n\r\n this.updateInterface();\r\n }\r\n\r\n destroy() {\r\n if (this.editors != null) {\r\n for (var i = 0; i < this.editors.length; i++) {\r\n this.editors[i].destroy();\r\n }\r\n this.editors = null;\r\n }\r\n this.element.find('a.category-link').unbind('click',\r\n this.categoryLinkClick).remove();\r\n\r\n Serenity.Widget.prototype.destroy.call(this);\r\n }\r\n\r\n private createItems(container: JQuery, items: PropertyItem[]) {\r\n var categoryIndexes = {};\r\n var categoriesDiv = container;\r\n\r\n var useCategories = this.options.useCategories !== false && Q.any(items, function (x) {\r\n return !Q.isEmptyOrNull(x.category);\r\n });\r\n\r\n if (useCategories) {\r\n var linkContainer = $('<div/>').addClass('category-links');\r\n categoryIndexes = this.createCategoryLinks(linkContainer, items);\r\n if (Object.keys(categoryIndexes).length > 1) {\r\n linkContainer.appendTo(container);\r\n }\r\n else {\r\n linkContainer.find('a.category-link').unbind('click',\r\n this.categoryLinkClick).remove();\r\n }\r\n }\r\n\r\n categoriesDiv = $('<div/>').addClass('categories').appendTo(container);\r\n var fieldContainer;\r\n if (useCategories) {\r\n fieldContainer = categoriesDiv;\r\n }\r\n else {\r\n fieldContainer = $('<div/>').addClass('category').appendTo(categoriesDiv);\r\n }\r\n var priorCategory = null;\r\n for (var i = 0; i < items.length; i++) {\r\n var item = items[i];\r\n var category = item.category;\r\n if (category == null) {\r\n category = Q.coalesce(this.options.defaultCategory, '');\r\n }\r\n\r\n if (useCategories && priorCategory !== category) {\r\n var categoryDiv = this.createCategoryDiv(categoriesDiv,\r\n categoryIndexes, category,\r\n ((item.collapsible !== true) ? null :\r\n Q.coalesce(item.collapsed, false)));\r\n\r\n if (priorCategory == null) {\r\n categoryDiv.addClass('first-category');\r\n }\r\n priorCategory = category;\r\n fieldContainer = categoryDiv;\r\n }\r\n var editor = this.createField(fieldContainer, item);\r\n this.items.push(item);\r\n this.editors.push(editor);\r\n }\r\n }\r\n\r\n private createCategoryDiv(categoriesDiv: JQuery,\r\n categoryIndexes: Q.Dictionary<number>, category: string, collapsed: boolean) {\r\n\r\n var categoryDiv = $('<div/>').addClass('category')\r\n .appendTo(categoriesDiv);\r\n\r\n var title = $('<div/>').addClass('category-title')\r\n .append($('<a/>').addClass('category-anchor')\r\n .text(this.determineText(category, function (prefix) {\r\n return prefix + 'Categories.' + category;\r\n }))\r\n .attr('name', this.options.idPrefix + \r\n 'Category' + categoryIndexes[category].toString()))\r\n .appendTo(categoryDiv);\r\n\r\n if (collapsed != null) {\r\n categoryDiv.addClass(((collapsed === true) ?\r\n 'collapsible collapsed' : 'collapsible'));\r\n\r\n var img = $('<i/>').addClass(((collapsed === true) ?\r\n 'fa fa-plus' : 'fa fa-minus')).appendTo(title);\r\n\r\n title.click(function (e) {\r\n categoryDiv.toggleClass('collapsed');\r\n img.toggleClass('fa-plus').toggleClass('fa-minus');\r\n });\r\n }\r\n\r\n\t\t\treturn categoryDiv;\r\n }\r\n\r\n private categoryLinkClick = (e: JQueryEventObject) => {\r\n e.preventDefault();\r\n\r\n var title = $('a[name=' + e.target.getAttribute('href')\r\n .toString().substr(1) + ']');\r\n\r\n if (title.closest('.category').hasClass('collapsed'))\r\n title.closest('.category').children('.category-title').click();\r\n\r\n var animate = function () {\r\n title.fadeTo(100, 0.5, function () {\r\n title.fadeTo(100, 1, function () {\r\n });\r\n });\r\n };\r\n\r\n var intoView = title.closest('.category');\r\n if (intoView.closest(':scrollable(both)').length === 0)\r\n animate();\r\n else {\r\n (intoView as any).scrollintoview({\r\n duration: 'fast',\r\n direction: 'y',\r\n complete: animate\r\n });\r\n }\r\n }\r\n\r\n private determineText(text: string, getKey: (s: string) => string) {\r\n if (text != null && !Q.startsWith(text, '`')) {\r\n var local = Q.tryGetText(text);\r\n if (local != null) {\r\n return local;\r\n }\r\n }\r\n\r\n if (text != null && Q.startsWith(text, '`')) {\r\n text = text.substr(1);\r\n }\r\n\r\n\t\t\tif (!Q.isEmptyOrNull(this.options.localTextPrefix)) {\r\n var local1 = Q.tryGetText(getKey(this.options.localTextPrefix));\r\n if (local1 != null) {\r\n return local1;\r\n }\r\n }\r\n\r\n\t\t\treturn text;\r\n }\r\n\r\n private createField(container: JQuery, item: PropertyItem) {\r\n var fieldDiv = $('<div/>').addClass('field')\r\n .addClass(item.name).data('PropertyItem', item).appendTo(container);\r\n\r\n if (!Q.isEmptyOrNull(item.cssClass)) {\r\n fieldDiv.addClass(item.cssClass);\r\n }\r\n\r\n if (!Q.isEmptyOrNull(item.formCssClass)) {\r\n fieldDiv.addClass(item.formCssClass);\r\n if (item.formCssClass.indexOf('line-break-') >= 0) {\r\n var splitted = item.formCssClass.split(String.fromCharCode(32));\r\n if (splitted.indexOf('line-break-xs') >= 0) {\r\n $(\"<div class='line-break' style='width: 100%' />\")\r\n .insertBefore(fieldDiv);\r\n }\r\n else if (splitted.indexOf('line-break-sm') >= 0) {\r\n $(\"<div class='line-break hidden-xs' style='width: 100%' />\")\r\n .insertBefore(fieldDiv);\r\n }\r\n else if (splitted.indexOf('line-break-md') >= 0) {\r\n $(\"<div class='line-break hidden-sm' style='width: 100%' />\")\r\n .insertBefore(fieldDiv);\r\n }\r\n else if (splitted.indexOf('line-break-lg') >= 0) {\r\n $(\"<div class='line-break hidden-md' style='width: 100%' />\")\r\n .insertBefore(fieldDiv);\r\n }\r\n }\r\n }\r\n var editorId = this.options.idPrefix + item.name;\r\n var title = this.determineText(item.title, function (prefix) {\r\n return prefix + item.name;\r\n });\r\n\r\n var hint = this.determineText(item.hint, function (prefix1) {\r\n return prefix1 + item.name + '_Hint';\r\n });\r\n\r\n var placeHolder = this.determineText(item.placeholder, function (prefix2) {\r\n return prefix2 + item.name + '_Placeholder';\r\n });\r\n\r\n if (hint == null) {\r\n hint = Q.coalesce(title, '');\r\n }\r\n\r\n var label = $('<label/>')\r\n .addClass('caption').attr('for', editorId)\r\n .attr('title', hint).html(Q.coalesce(title, ''))\r\n .appendTo(fieldDiv);\r\n\r\n if (!Q.isEmptyOrNull(item.labelWidth)) {\r\n if (item.labelWidth === '0') {\r\n label.hide();\r\n }\r\n else {\r\n label.css('width', item.labelWidth);\r\n }\r\n }\r\n\r\n if (item.required === true) {\r\n $('<sup>*</sup>').attr('title',\r\n Q.text('Controls.PropertyGrid.RequiredHint'))\r\n .prependTo(label);\r\n }\r\n\r\n var editorType = Serenity.EditorTypeRegistry\r\n .get(Q.coalesce(item.editorType, 'String'));\r\n var elementAttr = (ss as any).getAttributes(editorType,\r\n Serenity.ElementAttribute, true);\r\n var elementHtml = ((elementAttr.length > 0) ?\r\n elementAttr[0].value : '<input/>');\r\n\r\n var element = Widget.elementFor(editorType as any)\r\n .addClass('editor').addClass('flexify')\r\n .attr('id', editorId).appendTo(fieldDiv);\r\n\r\n if (element.is(':input')) {\r\n element.attr('name', Q.coalesce(item.name, ''));\r\n }\r\n\r\n if (!Q.isEmptyOrNull(placeHolder)) {\r\n element.attr('placeholder', placeHolder);\r\n }\r\n var editorParams = item.editorParams;\r\n var optionsType = null;\r\n var optionsAttr = (ss as any).getAttributes(editorType,\r\n Serenity.OptionsTypeAttribute, true);\r\n\r\n if (optionsAttr != null && optionsAttr.length > 0) {\r\n optionsType = optionsAttr[0].optionsType;\r\n }\r\n var editor;\r\n if (optionsType != null) {\r\n editorParams = $.extend((ss as any).createInstance(optionsType),\r\n item.editorParams);\r\n\r\n editor = new (editorType as any)(element, editorParams);\r\n }\r\n else {\r\n editorParams = $.extend(new Object(), item.editorParams);\r\n editor = new (editorType as any)(element, editorParams);\r\n }\r\n\r\n editor.initialize();\r\n\r\n if ((ss as any).isInstanceOfType(editor, BooleanEditor) &&\r\n (item.editorParams == null || !!!item.editorParams['labelFor'])) {\r\n label.removeAttr('for');\r\n }\r\n\r\n if ((ss as any).isInstanceOfType(editor, RadioButtonEditor) &&\r\n (item.editorParams == null || !!!item.editorParams['labelFor'])) {\r\n label.removeAttr('for');\r\n }\r\n\r\n if (item.maxLength != null) {\r\n PropertyGrid.setMaxLength(editor, item.maxLength);\r\n }\r\n\r\n if (item.editorParams != null) {\r\n ReflectionOptionsSetter.set(editor, item.editorParams);\r\n }\r\n\r\n $('<div/>').addClass('vx').appendTo(fieldDiv);\r\n $('<div/>').addClass('clear').appendTo(fieldDiv);\r\n\r\n return editor;\r\n }\r\n\r\n private getCategoryOrder(items: PropertyItem[]) {\r\n var order = 0;\r\n var result = {};\r\n var categoryOrder = Q.trimToNull(this.options.categoryOrder);\r\n if (categoryOrder != null) {\r\n var split = categoryOrder.split(';');\r\n for (var s of split) {\r\n var x = Q.trimToNull(s);\r\n if (x == null) {\r\n continue;\r\n }\r\n if (result[x] != null) {\r\n continue;\r\n }\r\n result[x] = order++;\r\n }\r\n }\r\n\r\n for (var x1 of items) {\r\n var category = x1.category;\r\n if (category == null) {\r\n category = Q.coalesce(this.options.defaultCategory, '');\r\n }\r\n if (result[category] == null) {\r\n result[category] = order++;\r\n }\r\n }\r\n\r\n return result;\r\n }\r\n\r\n private createCategoryLinks(container: JQuery, items: PropertyItem[]) {\r\n\t\t\tvar idx = 0;\r\n\t\t\tvar itemIndex = {};\r\n\t\t\tvar itemCategory = {};\r\n for (var x of items) {\r\n\t\t\t\tvar name1 = x.name;\r\n\t\t\t\tvar cat1 = x.category;\r\n\t\t\t\tif (cat1 == null) {\r\n\t\t\t\t\tcat1 = Q.coalesce(this.options.defaultCategory, '');\r\n\t\t\t\t}\r\n\t\t\t\titemCategory[name1] = cat1;\r\n\t\t\t\titemIndex[x.name] = idx++;\r\n }\r\n\r\n\t\t\tvar self = this;\r\n\t\t\tvar categoryOrder = this.getCategoryOrder(items);\r\n\r\n items.sort(function (x1, y) {\r\n\t\t\t\tvar c = 0;\r\n\t\t\t\tvar xcategory = itemCategory[x1.name];\r\n\t\t\t\tvar ycategory = itemCategory[y.name];\r\n\t\t\t\tif (!(ss as any).referenceEquals(xcategory, ycategory)) {\r\n\t\t\t\t\tvar c1 = categoryOrder[xcategory];\r\n\t\t\t\t\tvar c2 = categoryOrder[ycategory];\r\n\t\t\t\t\tif (c1 != null && c2 != null) {\r\n\t\t\t\t\t\tc = c1 - c2;\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse if (c1 != null) {\r\n\t\t\t\t\t\tc = -1;\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse if (c2 != null) {\r\n\t\t\t\t\t\tc = 1;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tif (c === 0) {\r\n\t\t\t\t\tc = (ss as any).compareStrings(xcategory, ycategory);\r\n\t\t\t\t}\r\n\t\t\t\tif (c === 0) {\r\n\t\t\t\t\tc = (ss as any).compare(itemIndex[x1.name], itemIndex[y.name]);\r\n\t\t\t\t}\r\n\t\t\t\treturn c;\r\n });\r\n\r\n\t\t\tvar categoryIndexes = {};\r\n\t\t\tfor (var i = 0; i < items.length; i++) {\r\n\t\t\t\tvar item = items[i];\r\n\t\t\t\tvar category = { $: itemCategory[item.name] };\r\n if (categoryIndexes[category.$] == null) {\r\n var index = Object.keys(categoryIndexes).length + 1;\r\n\t\t\t\t\tcategoryIndexes[category.$] = index;\r\n\t\t\t\t\tif (index > 1) {\r\n\t\t\t\t\t\t$('<span/>').addClass('separator').text('|').prependTo(container);\r\n\t\t\t\t\t}\r\n $('<a/>').addClass('category-link').text(\r\n this.determineText(category.$,\r\n (ss as any).mkdel({ category: category },\r\n function (prefix: string) {\r\n return prefix + 'Categories.' + this.category.$;\r\n })))\r\n .attr('tabindex', '-1')\r\n .attr('href', '#' + this.options.idPrefix +\r\n 'Category' + index.toString())\r\n .click(this.categoryLinkClick)\r\n .prependTo(container);\r\n\t\t\t\t}\r\n }\r\n\r\n\t\t\t$('<div/>').addClass('clear').appendTo(container);\r\n\t\t\treturn categoryIndexes;\r\n }\r\n\r\n get_editors(): Widget<any>[] {\r\n return this.editors;\r\n }\r\n\r\n get_items(): PropertyItem[] {\r\n return this.items;\r\n }\r\n\r\n get_idPrefix(): string {\r\n return this.options.idPrefix;\r\n }\r\n\r\n get_mode(): PropertyGridMode {\r\n return this.options.mode;\r\n }\r\n\r\n set_mode(value: PropertyGridMode) {\r\n if(this.options.mode !== value) {\r\n this.options.mode = value;\r\n this.updateInterface();\r\n }\r\n }\r\n\r\n // Obsolete\r\n static loadEditorValue(editor: Serenity.Widget<any>,\r\n item: PropertyItem, source: any): void {\r\n }\r\n\r\n // Obsolete\r\n static saveEditorValue(editor: Serenity.Widget<any>,\r\n item: PropertyItem, target: any): void {\r\n\r\n EditorUtils.saveValue(editor, item, target);\r\n }\r\n\r\n // Obsolete\r\n private static setReadOnly(widget: Serenity.Widget<any>, isReadOnly: boolean): void {\r\n EditorUtils.setReadOnly(widget, isReadOnly);\r\n }\r\n\r\n // Obsolete\r\n private static setReadonly(elements: JQuery, isReadOnly: boolean): JQuery {\r\n return EditorUtils.setReadonly(elements, isReadOnly);\r\n }\r\n\r\n // Obsolete\r\n private static setRequired(widget: Serenity.Widget<any>, isRequired: boolean): void {\r\n EditorUtils.setRequired(widget, isRequired);\r\n }\r\n\r\n private static setMaxLength(widget: Widget<any>, maxLength: number) {\r\n if (widget.element.is(':input')) {\r\n if (maxLength > 0) {\r\n widget.element.attr('maxlength', maxLength);\r\n }\r\n else {\r\n widget.element.removeAttr('maxlength');\r\n }\r\n }\r\n }\r\n\r\n load(source: any): void {\r\n for (var i = 0; i < this.editors.length; i++) {\r\n var item = this.items[i];\r\n var editor = this.editors[i];\r\n if (!!(this.get_mode() === 1 && item.defaultValue != null) &&\r\n typeof (source[item.name]) === 'undefined') {\r\n source[item.name] = item.defaultValue;\r\n }\r\n\r\n Serenity.EditorUtils.loadValue(editor, item, source);\r\n }\r\n }\r\n\r\n save(target?: any): any {\r\n if (target == null)\r\n target = Object.create(null);\r\n for (var i = 0; i < this.editors.length; i++) {\r\n var item = this.items[i];\r\n if (item.oneWay !== true && this.canModifyItem(item)) {\r\n var editor = this.editors[i];\r\n Serenity.EditorUtils.saveValue(editor, item, target);\r\n }\r\n }\r\n return target;\r\n }\r\n\r\n public get value(): any {\r\n return this.save();\r\n }\r\n\r\n public set value(val: any) {\r\n if (val == null)\r\n val = Object.create(null);\r\n this.load(val);\r\n }\r\n\r\n private canModifyItem(item: PropertyItem) {\r\n if (this.get_mode() === PropertyGridMode.insert) {\r\n if (item.insertable === false) {\r\n return false;\r\n }\r\n\r\n if (item.insertPermission == null) {\r\n return true;\r\n }\r\n\r\n return Q.Authorization.hasPermission(item.insertPermission);\r\n }\r\n else if (this.get_mode() === PropertyGridMode.update) {\r\n if (item.updatable === false) {\r\n return false;\r\n }\r\n\r\n if (item.updatePermission == null) {\r\n return true;\r\n }\r\n\r\n return Q.Authorization.hasPermission(item.updatePermission);\r\n }\r\n\t\t\treturn true;\r\n }\r\n\r\n updateInterface() {\r\n for (var i = 0; i < this.editors.length; i++) {\r\n var item = this.items[i];\r\n var editor = this.editors[i];\r\n var readOnly = item.readOnly === true || !this.canModifyItem(item);\r\n Serenity.EditorUtils.setReadOnly(editor, readOnly);\r\n Serenity.EditorUtils.setRequired(editor, !readOnly &&\r\n !!item.required && item.editorType !== 'Boolean');\r\n if (item.visible === false || item.readPermission != null ||\r\n item.insertPermission != null || item.updatePermission != null ||\r\n item.hideOnInsert === true || item.hideOnUpdate === true) {\r\n var hidden = (item.readPermission != null &&\r\n !Q.Authorization.hasPermission(item.readPermission)) ||\r\n item.visible === false ||\r\n (this.get_mode() === PropertyGridMode.insert && item.hideOnInsert === true) ||\r\n (this.get_mode() === 2 && item.hideOnUpdate === true);\r\n\r\n editor.getGridField().toggle(!hidden);\r\n }\r\n }\r\n }\r\n\r\n enumerateItems(callback: (p1: PropertyItem, p2: Serenity.Widget<any>) => void): void {\r\n for (var i = 0; i < this.editors.length; i++) {\r\n var item = this.items[i];\r\n var editor = this.editors[i];\r\n callback(item, editor);\r\n }\r\n }\r\n }\r\n\r\n export declare const enum PropertyGridMode {\r\n insert = 1,\r\n update = 2\r\n }\r\n\r\n export interface PropertyGridOptions {\r\n idPrefix?: string;\r\n items?: PropertyItem[];\r\n useCategories?: boolean;\r\n categoryOrder?: string;\r\n defaultCategory?: string;\r\n localTextPrefix?: string;\r\n mode?: PropertyGridMode;\r\n }\r\n}","namespace Serenity {\r\n export interface ToolButton {\r\n title?: string;\r\n hint?: string;\r\n cssClass?: string;\r\n icon?: string;\r\n onClick?: any;\r\n htmlEncode?: any;\r\n hotkey?: string;\r\n hotkeyAllowDefault?: boolean;\r\n hotkeyContext?: any;\r\n separator?: (false | true | 'left' | 'right' | 'both');\r\n visible?: boolean | (() => boolean);\r\n disabled?: boolean | (() => boolean);\r\n }\r\n\r\n export interface PopupMenuButtonOptions {\r\n menu?: JQuery;\r\n onPopup?: () => void;\r\n positionMy?: string;\r\n positionAt?: string;\r\n }\r\n\r\n @Decorators.registerEditor('Serenity.PopupMenuButton')\r\n export class PopupMenuButton extends Widget<PopupMenuButtonOptions> {\r\n constructor(div: JQuery, opt: PopupMenuButtonOptions) {\r\n super(div, opt);\r\n\r\n div.addClass('s-PopupMenuButton');\r\n div.click(e => {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n if (this.options.onPopup != null) {\r\n this.options.onPopup();\r\n }\r\n\r\n var menu = this.options.menu;\r\n menu.show().position({\r\n my: Q.coalesce(this.options.positionMy, 'left top'),\r\n at: Q.coalesce(this.options.positionAt, 'left bottom'),\r\n of: this.element\r\n });\r\n\r\n var uq = this.uniqueName;\r\n $(document).one('click.' + uq, function (x) {\r\n menu.hide();\r\n });\r\n });\r\n\r\n this.options.menu.hide().appendTo(document.body)\r\n .addClass('s-PopupMenu').menu();\r\n }\r\n\r\n destroy() {\r\n if (this.options.menu != null) { \r\n this.options.menu.remove();\r\n this.options.menu = null;\r\n }\r\n\r\n super.destroy();\r\n }\r\n }\r\n\r\n\r\n export interface PopupToolButtonOptions extends PopupMenuButtonOptions {\r\n }\r\n\r\n @Decorators.registerEditor('Serenity.PopupToolButton')\r\n export class PopupToolButton extends PopupMenuButton {\r\n constructor(div: JQuery, opt: PopupToolButtonOptions) {\r\n super(div, opt);\r\n\r\n div.addClass('s-PopupToolButton');\r\n $('<b/>').appendTo(div.children('.button-outer').children('span'));\r\n }\r\n }\r\n\r\n export interface ToolbarOptions {\r\n buttons?: ToolButton[];\r\n hotkeyContext?: any;\r\n }\r\n\r\n @Decorators.registerClass('Serenity.Toolbar')\r\n export class Toolbar extends Widget<ToolbarOptions> {\r\n constructor(div: JQuery, options: ToolbarOptions) {\r\n super(div, options);\r\n\r\n this.element.addClass('s-Toolbar clearfix')\r\n .html('<div class=\"tool-buttons\"><div class=\"buttons-outer\">' +\r\n '<div class=\"buttons-inner\"></div></div></div>');\r\n var container = $('div.buttons-inner', this.element);\r\n var buttons = this.options.buttons;\r\n for (var i = 0; i < buttons.length; i++) {\r\n this.createButton(container, buttons[i]);\r\n }\r\n }\r\n\r\n destroy() {\r\n this.element.find('div.tool-button').unbind('click');\r\n if (this.mouseTrap) {\r\n if (!!this.mouseTrap.destroy) {\r\n this.mouseTrap.destroy();\r\n }\r\n else {\r\n this.mouseTrap.reset();\r\n }\r\n this.mouseTrap = null;\r\n }\r\n\r\n super.destroy();\r\n }\r\n\r\n protected mouseTrap: any;\r\n\r\n protected createButton(container: JQuery, b: ToolButton) {\r\n var cssClass = Q.coalesce(b.cssClass, '');\r\n\r\n if (b.separator === true || b.separator === 'left' || b.separator === 'both') {\r\n $('<div class=\"separator\"></div>').appendTo(container);\r\n }\r\n\r\n var btn = $('<div class=\"tool-button\"><div class=\"button-outer\">' +\r\n '<span class=\"button-inner\"></span></div></div>')\r\n .appendTo(container);\r\n\r\n if (b.separator === 'right' || b.separator === 'both') {\r\n $('<div class=\"separator\"></div>').appendTo(container);\r\n }\r\n\r\n if (cssClass.length > 0) {\r\n\t\t\t\tbtn.addClass(cssClass);\r\n\t\t\t}\r\n\r\n if (!Q.isEmptyOrNull(b.hint)) {\r\n\t\t\t\tbtn.attr('title', b.hint);\r\n\t\t\t}\r\n\r\n btn.click(function (e) {\r\n\t\t\t\tif (btn.hasClass('disabled')) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t\tb.onClick(e);\r\n });\r\n\r\n\t\t\tvar text = b.title;\r\n\t\t\tif (b.htmlEncode !== false) {\r\n\t\t\t\ttext = Q.htmlEncode(b.title);\r\n }\r\n\r\n if (!Q.isEmptyOrNull(b.icon)) {\r\n\t\t\t\tbtn.addClass('icon-tool-button');\r\n\t\t\t\tvar klass = b.icon;\r\n\t\t\t\tif (Q.startsWith(klass, 'fa-')) {\r\n\t\t\t\t\tklass = 'fa ' + klass;\r\n }\r\n else if (Q.startsWith(klass, 'glyphicon-')) {\r\n\t\t\t\t\tklass = 'glyphicon ' + klass;\r\n\t\t\t\t}\r\n\t\t\t\ttext = \"<i class='\" + klass + \"'></i> \" + text;\r\n\t\t\t}\r\n\t\t\tif (text == null || text.length === 0) {\r\n\t\t\t\tbtn.addClass('no-text');\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tbtn.find('span').html(text);\r\n }\r\n\r\n if (b.visible === false)\r\n btn.hide();\r\n\r\n if (b.disabled != null && typeof b.disabled !== \"function\")\r\n btn.toggleClass('disabled', !!b.disabled);\r\n\r\n if (typeof b.visible === \"function\" || typeof b.disabled == \"function\") {\r\n btn.on('updateInterface', () => {\r\n if (typeof b.visible === \"function\")\r\n btn.toggle(!!b.visible());\r\n\r\n if (typeof b.disabled === \"function\")\r\n btn.toggleClass(\"disabled\", !!b.disabled());\r\n });\r\n }\r\n\r\n if (!!(!Q.isEmptyOrNull(b.hotkey) && window['Mousetrap'] != null)) {\r\n this.mouseTrap = this.mouseTrap || window['Mousetrap'](\r\n b.hotkeyContext || this.options.hotkeyContext || window.document.documentElement);\r\n\r\n this.mouseTrap.bind(b.hotkey, function (e1: BaseJQueryEventObject, action: any) {\r\n\t\t\t\t\tif (btn.is(':visible')) {\r\n\t\t\t\t\t\tbtn.triggerHandler('click');\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn b.hotkeyAllowDefault;\r\n\t\t\t\t});\r\n\t\t\t}\r\n }\r\n\r\n findButton(className: string): JQuery {\r\n if (className != null && Q.startsWith(className, '.')) {\r\n className = className.substr(1);\r\n }\r\n return $('div.tool-button.' + className, this.element);\r\n }\r\n\r\n updateInterface() {\r\n this.element.find('.tool-button').each(function (i: number, el: Element) {\r\n $(el).triggerHandler('updateInterface')\r\n });\r\n }\r\n }\r\n}\r\n","namespace Serenity {\r\n export interface CreateWidgetParams<TWidget extends Widget<TOptions>, TOptions> {\r\n type?: new (element: JQuery, options?: TOptions) => TWidget;\r\n options?: TOptions;\r\n container?: JQuery;\r\n element?: (e: JQuery) => void;\r\n init?: (w: TWidget) => void;\r\n }\r\n}","declare namespace Serenity {\r\n\r\n namespace CustomValidation {\r\n function registerValidationMethods(): void;\r\n }\r\n\r\n type CustomValidationRule = (element: JQuery) => string;\r\n\r\n}","namespace Serenity {\r\n\r\n export interface IValidateRequired {\r\n get_required(): boolean;\r\n set_required(value: boolean): void;\r\n }\r\n\r\n @Decorators.registerInterface('Serenity.IValidateRequired')\r\n export class IValidateRequired {\r\n }\r\n}","declare namespace Serenity {\r\n\r\n interface DataChangeInfo {\r\n type: string;\r\n entityId: any;\r\n entity: any;\r\n }\r\n\r\n}","namespace Serenity {\r\n\r\n @Decorators.registerInterface('Serenity.IDialog')\r\n export class IDialog {\r\n }\r\n\r\n export interface IDialog {\r\n dialogOpen(asPanel?: boolean): void;\r\n }\r\n\r\n @Serenity.Decorators.registerClass([Serenity.IDialog])\r\n export class TemplatedDialog<TOptions> extends TemplatedWidget<TOptions> {\r\n\r\n protected tabs: JQuery;\r\n protected toolbar: Serenity.Toolbar;\r\n protected validator: JQueryValidation.Validator;\r\n\r\n constructor(options?: TOptions) {\r\n super(Q.newBodyDiv().addClass('s-TemplatedDialog hidden'), options);\r\n\r\n this.element.attr(\"id\", this.uniqueName);\r\n\r\n this.initValidator();\r\n this.initTabs();\r\n this.initToolbar();\r\n }\r\n\r\n private get isMarkedAsPanel() {\r\n var panelAttr = (ss as any).getAttributes((ss as any).getInstanceType(this),\r\n Serenity.PanelAttribute, true) as Serenity.PanelAttribute[];\r\n return panelAttr.length > 0 && panelAttr[panelAttr.length - 1].value !== false;\r\n }\r\n\r\n private get isResponsive() {\r\n return Q.Config.responsiveDialogs ||\r\n (ss as any).getAttributes((ss as any).getInstanceType(this), ResponsiveAttribute, true).length > 0;\r\n }\r\n\r\n private static getCssSize(element: JQuery, name: string): number {\r\n var cssSize = element.css(name);\r\n if (cssSize == null) {\r\n return null;\r\n }\r\n\r\n if (!Q.endsWith(cssSize, 'px')) {\r\n return null;\r\n }\r\n\r\n cssSize = cssSize.substr(0, cssSize.length - 2);\r\n let i = Q.parseInteger(cssSize);\r\n if (i == null || isNaN(i) || i == 0)\r\n return null;\r\n\r\n return i;\r\n }\r\n\r\n private static applyCssSizes(opt: JQueryUI.DialogOptions, dialogClass: string) {\r\n let size: number;\r\n let dialog = $('<div/>').hide().addClass(dialogClass).appendTo(document.body);\r\n try {\r\n var sizeHelper = $('<div/>').addClass('size').appendTo(dialog);\r\n size = TemplatedDialog.getCssSize(sizeHelper, 'minWidth'); \r\n if (size != null)\r\n opt.minWidth = size;\r\n\r\n size = TemplatedDialog.getCssSize(sizeHelper, 'width');\r\n if (size != null)\r\n opt.width = size;\r\n\r\n size = TemplatedDialog.getCssSize(sizeHelper, 'height');\r\n if (size != null)\r\n opt.height = size;\r\n\r\n size = TemplatedDialog.getCssSize(sizeHelper, 'minHeight');\r\n if (size != null)\r\n opt.minHeight = size;\r\n }\r\n finally {\r\n dialog.remove();\r\n }\r\n };\r\n\r\n public destroy(): void {\r\n this.tabs && this.tabs.tabs('destroy');\r\n this.tabs = null;\r\n this.toolbar && this.toolbar.destroy();\r\n this.toolbar = null;\r\n this.validator && this.byId('Form').remove();\r\n this.validator = null;\r\n if (this.element != null &&\r\n this.element.hasClass('ui-dialog-content')) {\r\n this.element.dialog('destroy');\r\n this.element.removeClass('ui-dialog-content');\r\n }\r\n $(window).unbind('.' + this.uniqueName);\r\n super.destroy();\r\n }\r\n\r\n protected initDialog(): void {\r\n if (this.element.hasClass('ui-dialog-content'))\r\n return;\r\n\r\n this.element.removeClass('hidden');\r\n\r\n this.element.dialog(this.getDialogOptions());\r\n this.element.closest('.ui-dialog').on('resize', e => this.arrange());\r\n\r\n let type = (ss as any).getInstanceType(this);\r\n\r\n if (this.isResponsive) {\r\n DialogExtensions.dialogResizable(this.element);\r\n\r\n $(window).bind('resize.' + this.uniqueName, e => {\r\n if (this.element && this.element.is(':visible')) {\r\n this.handleResponsive();\r\n }\r\n });\r\n\r\n this.element.closest('.ui-dialog').addClass('flex-layout');\r\n }\r\n else if ((ss as any).getAttributes(type, FlexifyAttribute, true).length > 0) {\r\n DialogExtensions.dialogFlexify(this.element);\r\n DialogExtensions.dialogResizable(this.element);\r\n }\r\n\r\n if ((ss as any).getAttributes(type, MaximizableAttribute, true).length > 0) {\r\n DialogExtensions.dialogMaximizable(this.element);\r\n }\r\n\r\n var self = this;\r\n this.element.bind('dialogopen.' + this.uniqueName, () => {\r\n $(document.body).addClass('modal-dialog-open');\r\n\r\n if (this.isResponsive) {\r\n this.handleResponsive();\r\n }\r\n\r\n self.onDialogOpen();\r\n });\r\n\r\n this.element.bind('dialogclose.' + this.uniqueName, () => {\r\n $(document.body).toggleClass('modal-dialog-open', $('.ui-dialog:visible').length > 0);\r\n self.onDialogClose();\r\n });\r\n }\r\n\r\n protected initToolbar(): void {\r\n var toolbarDiv = this.byId('Toolbar');\r\n if (toolbarDiv.length === 0) {\r\n return;\r\n }\r\n\r\n var hotkeyContext = this.element.closest('.ui-dialog');\r\n if (hotkeyContext.length === 0) {\r\n hotkeyContext = this.element;\r\n }\r\n\r\n var opt = { buttons: this.getToolbarButtons(), hotkeyContext: hotkeyContext[0] };\r\n this.toolbar = new Toolbar(toolbarDiv, opt);\r\n }\r\n\r\n protected getToolbarButtons(): ToolButton[] {\r\n return [];\r\n }\r\n\r\n protected getValidatorOptions(): JQueryValidation.ValidationOptions {\r\n return {};\r\n }\r\n\r\n protected initValidator(): void {\r\n var form = this.byId('Form');\r\n if (form.length > 0) {\r\n var valOptions = this.getValidatorOptions();\r\n this.validator = form.validate(Q.validateOptions(valOptions));\r\n }\r\n }\r\n\r\n protected resetValidation() {\r\n this.validator && (this.validator as any).resetAll();\r\n }\r\n\r\n protected validateForm() {\r\n return this.validator == null || !!this.validator.form();\r\n }\r\n\r\n public dialogOpen(asPanel?: boolean): void {\r\n asPanel = Q.coalesce(asPanel, this.isMarkedAsPanel);\r\n if (asPanel) {\r\n if (!this.element.hasClass('s-Panel')) {\r\n // so that panel title is created if needed\r\n this.element.on('panelopen.' + this.uniqueName, () => {\r\n this.onDialogOpen();\r\n });\r\n this.element.on('panelclose.' + this.uniqueName, () => {\r\n this.onDialogClose();\r\n });\r\n }\r\n\r\n TemplatedDialog.openPanel(this.element, this.uniqueName);\r\n this.setupPanelTitle();\r\n }\r\n else {\r\n if (!this.element.hasClass('ui-dialog-content'))\r\n this.initDialog();\r\n\r\n this.element.dialog('open');\r\n }\r\n }\r\n\r\n public static openPanel(element: JQuery, uniqueName: string) {\r\n var container = $('.panels-container');\r\n if (!container.length)\r\n container = $('section.content');\r\n\r\n element.data('paneluniquename', uniqueName);\r\n\r\n if (container.length) {\r\n container = container.last();\r\n container.children()\r\n .not(element)\r\n .not('.panel-hidden')\r\n .addClass('panel-hidden panel-hidden-' + uniqueName);\r\n\r\n if (element[0].parentElement !== container[0])\r\n element.appendTo(container);\r\n }\r\n\r\n $('.ui-dialog:visible, .ui-widget-overlay:visible')\r\n .not(element)\r\n .addClass('panel-hidden panel-hidden-' + uniqueName);\r\n\r\n element\r\n .removeClass('hidden')\r\n .removeClass('panel-hidden')\r\n .addClass('s-Panel')\r\n .trigger('panelopen');\r\n }\r\n\r\n public static closePanel(element: JQuery, e?: JQueryEventObject) {\r\n if (!element.hasClass('s-Panel') || element.hasClass('hidden'))\r\n return;\r\n\r\n var query = $.Event(e as any);\r\n (query as any).type = 'panelbeforeclose';\r\n query.target = element[0];\r\n element.trigger(query);\r\n if (query.isDefaultPrevented())\r\n return;\r\n\r\n element.addClass('hidden');\r\n var uniqueName = element.data('paneluniquename') || new Date().getTime();\r\n var klass = 'panel-hidden-' + uniqueName;\r\n $('.' + klass).removeClass(klass).removeClass('panel-hidden');\r\n $(window).triggerHandler('resize');\r\n $('.require-layout:visible').triggerHandler('layout');\r\n\r\n var e = $.Event(e as any);\r\n (e as any).type = 'panelclose';\r\n (e as any).target = element[0];\r\n element.trigger(e);\r\n }\r\n\r\n protected onDialogOpen(): void {\r\n if (!$(document.body).hasClass('mobile-device'))\r\n $(':input', this.element).not('button').eq(0).focus();\r\n this.arrange();\r\n this.tabs && this.tabs.tabs('option', 'active', 0);\r\n }\r\n\r\n protected arrange(): void {\r\n this.element.find('.require-layout').filter(':visible').each(function (i, e) {\r\n $(e).triggerHandler('layout');\r\n });\r\n }\r\n\r\n protected onDialogClose() {\r\n $(document).trigger('click');\r\n\r\n // for tooltips etc.\r\n if (($ as any).qtip) {\r\n $(document.body).children('.qtip').each(function (index, el) {\r\n ($(el) as any).qtip('hide');\r\n });\r\n }\r\n\r\n window.setTimeout(() => {\r\n var element = this.element;\r\n this.destroy();\r\n element.remove();\r\n Q.positionToastContainer(false);\r\n }, 0);\r\n }\r\n\r\n protected addCssClass(): void {\r\n if (this.isMarkedAsPanel) {\r\n super.addCssClass();\r\n\r\n if (this.isResponsive)\r\n this.element.addClass(\"flex-layout\");\r\n }\r\n }\r\n\r\n protected getDialogOptions(): JQueryUI.DialogOptions {\r\n var opt: JQueryUI.DialogOptions = {};\r\n var dialogClass = 's-Dialog ' + this.getCssClass();\r\n opt.dialogClass = dialogClass;\r\n opt.width = 920;\r\n TemplatedDialog.applyCssSizes(opt, dialogClass);\r\n opt.autoOpen = false;\r\n let type = (ss as any).getInstanceType(this);\r\n opt.resizable = (ss as any).getAttributes(type, Serenity.ResizableAttribute, true).length > 0;\r\n opt.modal = true;\r\n opt.position = { my: 'center', at: 'center', of: $(window.window) };\r\n opt.title = Q.coalesce(this.element.data('dialogtitle'), this.getDialogTitle()) || '';\r\n return opt;\r\n }\r\n\r\n protected getDialogTitle() {\r\n return \"\";\r\n }\r\n\r\n public dialogClose(): void {\r\n if (this.element.hasClass('ui-dialog-content'))\r\n this.element.dialog().dialog('close');\r\n else if (this.element.hasClass('s-Panel') && !this.element.hasClass('hidden')) {\r\n TemplatedDialog.closePanel(this.element);\r\n }\r\n }\r\n\r\n public get dialogTitle(): string {\r\n if (this.element.hasClass('ui-dialog-content'))\r\n return this.element.dialog('option', 'title');\r\n\r\n return this.element.data('dialogtitle');\r\n }\r\n\r\n private setupPanelTitle() {\r\n var value = Q.coalesce(this.dialogTitle, this.getDialogTitle());\r\n var pt = this.element.children('.panel-titlebar');\r\n\r\n if (Q.isEmptyOrNull(value)) {\r\n pt.remove();\r\n }\r\n else {\r\n if (!this.element.children('.panel-titlebar').length) {\r\n pt = $(\"<div class='panel-titlebar'><div class='panel-titlebar-text'></div></div>\")\r\n .prependTo(this.element);\r\n }\r\n pt.children('.panel-titlebar-text').text(value);\r\n\r\n if (this.element.hasClass('s-Panel')) {\r\n if (!pt.children('.panel-titlebar-close').length) {\r\n $('<button class=\"panel-titlebar-close\"> </button>')\r\n .prependTo(pt)\r\n .click(e => {\r\n TemplatedDialog.closePanel(this.element, e);\r\n });\r\n }\r\n }\r\n }\r\n }\r\n\r\n public set dialogTitle(value: string) {\r\n var oldTitle = this.dialogTitle;\r\n this.element.data('dialogtitle', value);\r\n\r\n if (this.element.hasClass('ui-dialog-content'))\r\n this.element.dialog('option', 'title', value);\r\n else if (this.element.hasClass('s-Panel')) {\r\n if (oldTitle != this.dialogTitle) {\r\n this.setupPanelTitle();\r\n this.arrange();\r\n }\r\n\r\n }\r\n }\r\n\r\n public set_dialogTitle(value: string) {\r\n this.dialogTitle = value;\r\n }\r\n\r\n protected initTabs(): void {\r\n var tabsDiv = this.byId('Tabs');\r\n if (tabsDiv.length === 0) {\r\n return;\r\n }\r\n this.tabs = tabsDiv.tabs({});\r\n this.tabs.bind('tabsactivate', () => this.arrange());\r\n }\r\n\r\n protected handleResponsive(): void {\r\n var dlg = this.element.dialog();\r\n var uiDialog = this.element.closest('.ui-dialog');\r\n if ($(document.body).hasClass('mobile-device')) {\r\n var data = this.element.data('responsiveData');\r\n if (!data) {\r\n data = {};\r\n data.draggable = dlg.dialog('option', 'draggable');\r\n data.resizable = dlg.dialog('option', 'resizable');\r\n data.position = dlg.css('position');\r\n var pos = uiDialog.position();\r\n data.left = pos.left;\r\n data.top = pos.top;\r\n data.width = uiDialog.width();\r\n data.height = uiDialog.height();\r\n data.contentHeight = this.element.height();\r\n this.element.data('responsiveData', data);\r\n dlg.dialog('option', 'draggable', false);\r\n dlg.dialog('option', 'resizable', false);\r\n }\r\n uiDialog.addClass('mobile-layout');\r\n uiDialog.css({ left: '0px', top: '0px', width: $(window).width() + 'px', height: $(window).height() + 'px', position: 'fixed' });\r\n $(document.body).scrollTop(0);\r\n Q.layoutFillHeight(this.element);\r\n }\r\n else {\r\n var d = this.element.data('responsiveData');\r\n if (d) {\r\n dlg.dialog('option', 'draggable', d.draggable);\r\n dlg.dialog('option', 'resizable', d.resizable);\r\n this.element.closest('.ui-dialog').css({ left: '0px', top: '0px', width: d.width + 'px', height: d.height + 'px', position: d.position });\r\n this.element.height(d.contentHeight);\r\n uiDialog.removeClass('mobile-layout');\r\n this.element.removeData('responsiveData');\r\n }\r\n }\r\n }\r\n }\r\n}","namespace Serenity {\r\n\r\n @Decorators.registerClass('Serenity.PropertyDialog')\r\n export class PropertyDialog<TItem, TOptions> extends TemplatedDialog<TOptions> {\r\n protected _entity: TItem;\r\n protected _entityId: any;\r\n\r\n constructor(opt?: TOptions) {\r\n super(opt);\r\n\r\n if (!this.isAsyncWidget()) {\r\n this.initPropertyGrid();\r\n this.loadInitialEntity();\r\n }\r\n }\r\n\r\n destroy() {\r\n if (this.propertyGrid) {\r\n this.propertyGrid.destroy();\r\n this.propertyGrid = null;\r\n }\r\n\r\n if (this.validator) {\r\n this.byId('Form').remove();\r\n this.validator = null;\r\n }\r\n\r\n super.destroy();\r\n }\r\n\r\n protected initPropertyGridAsync() {\r\n return Promise.resolve().then(() => {\r\n var pgDiv = this.byId('PropertyGrid');\r\n if (pgDiv.length <= 0) {\r\n return Promise.resolve();\r\n }\r\n return this.getPropertyGridOptionsAsync().then(pgOptions => {\r\n this.propertyGrid = new Serenity.PropertyGrid(pgDiv, pgOptions);\r\n if (this.element.closest('.ui-dialog').hasClass('s-Flexify')) {\r\n this.propertyGrid.element.children('.categories').flexHeightOnly(1);\r\n }\r\n return this.propertyGrid.initialize();\r\n });\r\n });\r\n }\r\n\r\n protected getDialogOptions() {\r\n var opt = super.getDialogOptions();\r\n opt.buttons = this.getDialogButtons();\r\n opt.width = 400;\r\n return opt;\r\n }\r\n\r\n protected getDialogButtons(): JQueryUI.DialogButtonOptions[] {\r\n return [{\r\n text: Q.text('Dialogs.OkButton'),\r\n click: () => this.okClick()\r\n }, {\r\n text: Q.text('Dialogs.CancelButton'),\r\n click: () => this.cancelClick()\r\n }];\r\n }\r\n\r\n protected okClick() {\r\n if (!this.validateBeforeSave()) {\r\n return;\r\n }\r\n\r\n this.okClickValidated();\r\n }\r\n\r\n protected okClickValidated() {\r\n this.dialogClose();\r\n }\r\n\r\n protected cancelClick() {\r\n this.dialogClose();\r\n }\r\n\r\n protected initPropertyGrid() {\r\n var pgDiv = this.byId('PropertyGrid');\r\n if (pgDiv.length <= 0) {\r\n return;\r\n }\r\n var pgOptions = this.getPropertyGridOptions();\r\n this.propertyGrid = (new Serenity.PropertyGrid(pgDiv, pgOptions)).init(null);\r\n if (this.element.closest('.ui-dialog').hasClass('s-Flexify')) {\r\n this.propertyGrid.element.children('.categories').flexHeightOnly(1);\r\n }\r\n }\r\n\r\n protected getFormKey(): string {\r\n var attributes = (ss as any).getAttributes(\r\n (ss as any).getInstanceType(this), Serenity.FormKeyAttribute, true);\r\n if (attributes.length >= 1) {\r\n return attributes[0].value;\r\n }\r\n else {\r\n var name = (ss as any).getTypeFullName((ss as any).getInstanceType(this));\r\n var px = name.indexOf('.');\r\n if (px >= 0) {\r\n name = name.substring(px + 1);\r\n }\r\n if (Q.endsWith(name, 'Dialog')) {\r\n name = name.substr(0, name.length - 6);\r\n }\r\n else if (Q.endsWith(name, 'Panel')) {\r\n name = name.substr(0, name.length - 5);\r\n }\r\n return name;\r\n }\r\n }\r\n\r\n protected getPropertyGridOptions(): PropertyGridOptions {\r\n return {\r\n idPrefix: this.idPrefix,\r\n items: this.getPropertyItems(),\r\n mode: 1,\r\n useCategories: false,\r\n localTextPrefix: 'Forms.' + this.getFormKey() + '.'\r\n };\r\n }\r\n\r\n protected getPropertyGridOptionsAsync(): PromiseLike<PropertyGridOptions> {\r\n return this.getPropertyItemsAsync().then(propertyItems => {\r\n return {\r\n idPrefix: this.idPrefix,\r\n items: propertyItems, mode: 1,\r\n useCategories: false,\r\n localTextPrefix: 'Forms.' + this.getFormKey() + '.'\r\n };\r\n });\r\n }\r\n\r\n protected getPropertyItems(): PropertyItem[] {\r\n var formKey = this.getFormKey();\r\n return Q.getForm(formKey);\r\n }\r\n\r\n protected getPropertyItemsAsync(): PromiseLike<PropertyItem[]> {\r\n return Promise.resolve().then(() => {\r\n var formKey = this.getFormKey();\r\n return Q.getFormAsync(formKey);\r\n });\r\n }\r\n\r\n protected getSaveEntity(): TItem {\r\n var entity = new Object();\r\n if (this.propertyGrid) {\r\n this.propertyGrid.save(entity);\r\n }\r\n return entity as TItem;\r\n }\r\n\r\n protected initializeAsync(): PromiseLike<void> {\r\n return super.initializeAsync()\r\n .then(() => this.initPropertyGridAsync())\r\n .then(() => this.loadInitialEntity());\r\n }\r\n\r\n protected loadInitialEntity(): void {\r\n this.propertyGrid && this.propertyGrid.load(new Object());\r\n }\r\n\r\n protected get_entity() {\r\n return this._entity;\r\n }\r\n\r\n protected set_entity(value: TItem) {\r\n this._entity = Q.coalesce(value, new Object()) as any;\r\n }\r\n\r\n protected get_entityId() {\r\n return this._entityId;\r\n }\r\n\r\n protected set_entityId(value: any): void {\r\n this._entityId = value;\r\n }\r\n\r\n protected validateBeforeSave(): boolean {\r\n return this.validator.form();\r\n }\r\n\r\n protected updateTitle() {\r\n }\r\n\r\n protected propertyGrid: Serenity.PropertyGrid;\r\n }\r\n}","namespace Serenity {\r\n\r\n @Decorators.registerClass('Serenity.FilterDialog')\r\n export class FilterDialog extends TemplatedDialog<any> {\r\n\r\n private filterPanel: FilterPanel;\r\n\r\n constructor() {\r\n super();\r\n\r\n this.filterPanel = new FilterPanel(this.byId('FilterPanel'));\r\n this.filterPanel.set_showInitialLine(true);\r\n this.filterPanel.set_showSearchButton(false);\r\n this.filterPanel.set_updateStoreOnReset(false);\r\n }\r\n\r\n get_filterPanel(): FilterPanel {\r\n return this.filterPanel;\r\n }\r\n\r\n protected getTemplate(): string {\r\n return '<div id=\"~_FilterPanel\"/>';\r\n }\r\n\r\n protected getDialogOptions() {\r\n var opt = super.getDialogOptions();\r\n\r\n opt.buttons = [\r\n {\r\n text: Q.text('Dialogs.OkButton'),\r\n click: () => {\r\n this.filterPanel.search();\r\n if (this.filterPanel.get_hasErrors()) {\r\n Q.notifyError(Q.text('Controls.FilterPanel.FixErrorsMessage'), '', null);\r\n return;\r\n }\r\n\r\n this.dialogClose();\r\n }\r\n },\r\n {\r\n text: Q.text('Dialogs.CancelButton'),\r\n click: () => this.dialogClose()\r\n }\r\n ];\r\n\r\n opt.title = Q.text('Controls.FilterPanel.DialogTitle');\r\n\r\n return opt;\r\n }\r\n }\r\n\r\n}","namespace Serenity {\r\n export interface QuickFilterBarOptions {\r\n filters: QuickFilter<Widget<any>, any>[];\r\n getTitle?: (filter: QuickFilter<Widget<any>, any>) => string;\r\n idPrefix?: string;\r\n }\r\n\r\n @Serenity.Decorators.registerClass('Serenity.QuickFilterBar')\r\n @Serenity.Decorators.element(\"<div/>\")\r\n export class QuickFilterBar extends Widget<QuickFilterBarOptions> {\r\n\r\n constructor(container: JQuery, options?: QuickFilterBarOptions) {\r\n super(container, options);\r\n\r\n container.addClass('quick-filters-bar').addClass('clear');\r\n\r\n var filters = this.options.filters;\r\n for (var f = 0; f < filters.length; f++) {\r\n var filter = filters[f];\r\n this.add(filter);\r\n }\r\n\r\n this.options.idPrefix = Q.coalesce(this.options.idPrefix, this.uniqueName + '_');\r\n }\r\n\r\n public addSeparator(): void {\r\n this.element.append($('<hr/>'));\r\n }\r\n\r\n public add<TWidget extends Widget<any>, TOptions>(opt: QuickFilter<TWidget, TOptions>): TWidget {\r\n\r\n if (opt == null) {\r\n throw new (ss as any).ArgumentNullException('opt');\r\n }\r\n\r\n if (opt.separator) {\r\n this.addSeparator();\r\n }\r\n\r\n var item = $(\"<div class='quick-filter-item'><span class='quick-filter-label'></span></div>\")\r\n .appendTo(this.element)\r\n .data('qffield', opt.field).children();\r\n\r\n var title = opt.title;\r\n if (title == null) {\r\n title = this.options.getTitle ? this.options.getTitle(opt) : null;\r\n if (title == null) {\r\n title = opt.field;\r\n }\r\n }\r\n\r\n var quickFilter = item.text(title).parent();\r\n\r\n if (opt.displayText != null) {\r\n quickFilter.data('qfdisplaytext', opt.displayText);\r\n }\r\n\r\n if (opt.saveState != null) {\r\n quickFilter.data('qfsavestate', opt.saveState);\r\n }\r\n\r\n if (opt.loadState != null) {\r\n quickFilter.data('qfloadstate', opt.loadState);\r\n }\r\n\r\n if (!Q.isEmptyOrNull(opt.cssClass)) {\r\n quickFilter.addClass(opt.cssClass);\r\n }\r\n\r\n var widget = Serenity.Widget.create({\r\n type: opt.type,\r\n element: e => {\r\n if (!Q.isEmptyOrNull(opt.field)) {\r\n e.attr('id', this.options.idPrefix + opt.field);\r\n }\r\n e.attr('placeholder', ' ');\r\n e.appendTo(quickFilter);\r\n if (opt.element != null) {\r\n opt.element(e);\r\n }\r\n },\r\n options: opt.options,\r\n init: opt.init\r\n });\r\n\r\n var submitHandler = (request: Serenity.ListRequest) => {\r\n\r\n if (quickFilter.hasClass('ignore')) {\r\n return;\r\n }\r\n\r\n request.EqualityFilter = request.EqualityFilter || {};\r\n var value = Serenity.EditorUtils.getValue(widget);\r\n var active = value != null && !Q.isEmptyOrNull(value.toString());\r\n if (opt.handler != null) {\r\n var args = {\r\n field: opt.field,\r\n request: request,\r\n equalityFilter: request.EqualityFilter,\r\n value: value,\r\n active: active,\r\n widget: widget,\r\n handled: true\r\n };\r\n opt.handler(args);\r\n quickFilter.toggleClass('quick-filter-active', args.active);\r\n if (!args.handled) {\r\n request.EqualityFilter[opt.field] = value;\r\n }\r\n }\r\n else {\r\n request.EqualityFilter[opt.field] = value;\r\n quickFilter.toggleClass('quick-filter-active', active);\r\n }\r\n };\r\n\r\n Serenity.WX.changeSelect2(widget, (e1: JQueryEventObject) => {\r\n // use timeout give cascaded dropdowns a chance to update / clear themselves\r\n window.setTimeout(() => this.onChange && this.onChange(e1), 0);\r\n });\r\n\r\n this.add_submitHandlers(submitHandler);\r\n widget.element.bind('remove.' + this.uniqueName, x => {\r\n this.remove_submitHandlers(submitHandler);\r\n });\r\n\r\n return widget;\r\n }\r\n\r\n public addDateRange(field: string, title?: string): Serenity.DateEditor {\r\n return this.add(QuickFilterBar.dateRange(field, title)) as Serenity.DateEditor;\r\n }\r\n\r\n public static dateRange(field: string, title?: string): QuickFilter<DateEditor, DateTimeEditorOptions> {\r\n var end: Serenity.DateEditor = null;\r\n return <QuickFilter<DateEditor, DateTimeEditorOptions>>{\r\n field: field,\r\n type: Serenity.DateEditor,\r\n title: title,\r\n element: function (e1) {\r\n end = Serenity.Widget.create({\r\n type: Serenity.DateEditor,\r\n element: function (e2) {\r\n e2.insertAfter(e1);\r\n },\r\n options: null,\r\n init: null\r\n });\r\n\r\n end.element.change(function (x) {\r\n e1.triggerHandler('change');\r\n });\r\n\r\n $('<span/>').addClass('range-separator').text('-').insertAfter(e1);\r\n },\r\n handler: function (args) {\r\n var active1 = !Q.isTrimmedEmpty(args.widget.value);\r\n var active2 = !Q.isTrimmedEmpty(end.value);\r\n if (active1 && !Q.parseDate(args.widget.element.val())) {\r\n active1 = false;\r\n Q.notifyWarning(Q.text('Validation.DateInvalid'), '', null);\r\n args.widget.element.val('');\r\n }\r\n if (active2 && !Q.parseDate(end.element.val())) {\r\n active2 = false;\r\n Q.notifyWarning(Q.text('Validation.DateInvalid'), '', null);\r\n end.element.val('');\r\n }\r\n args.active = active1 || active2;\r\n if (active1) {\r\n args.request.Criteria = Serenity.Criteria.join(args.request.Criteria, 'and',\r\n [[args.field], '>=', args.widget.value]);\r\n }\r\n if (active2) {\r\n var next = new Date(end.valueAsDate.valueOf());\r\n next.setDate(next.getDate() + 1);\r\n args.request.Criteria = Serenity.Criteria.join(args.request.Criteria, 'and',\r\n [[args.field], '<', Q.formatDate(next, 'yyyy-MM-dd')]);\r\n }\r\n },\r\n displayText: function (w, l) {\r\n var v1 = Serenity.EditorUtils.getDisplayText(w);\r\n var v2 = Serenity.EditorUtils.getDisplayText(end);\r\n if (Q.isEmptyOrNull(v1) && Q.isEmptyOrNull(v2)) {\r\n return null;\r\n }\r\n var text1 = l + ' >= ' + v1;\r\n var text2 = l + ' <= ' + v2;\r\n if (!Q.isEmptyOrNull(v1) && !Q.isEmptyOrNull(v2)) {\r\n return text1 + ' ' + Q.coalesce(Q.tryGetText('Controls.FilterPanel.And'), 'and') + ' ' + text2;\r\n }\r\n else if (!Q.isEmptyOrNull(v1)) {\r\n return text1;\r\n }\r\n else {\r\n return text2;\r\n }\r\n },\r\n saveState: function (w1) {\r\n return [Serenity.EditorUtils.getValue(w1), Serenity.EditorUtils.getValue(end)];\r\n },\r\n loadState: function (w2, state) {\r\n if (state == null || !Q.isArray(state) || state.length !== 2) {\r\n state = [null, null];\r\n }\r\n\r\n Serenity.EditorUtils.setValue(w2, state[0]);\r\n Serenity.EditorUtils.setValue(end, state[1]);\r\n }\r\n };\r\n }\r\n\r\n public addDateTimeRange(field: string, title?: string) {\r\n return this.add(QuickFilterBar.dateTimeRange(field, title)) as Serenity.DateTimeEditor;\r\n }\r\n\r\n public static dateTimeRange(field: string, title?: string): QuickFilter<DateTimeEditor, DateTimeEditorOptions> {\r\n var end: Serenity.DateTimeEditor = null;\r\n\r\n return <QuickFilter<DateTimeEditor, DateTimeEditorOptions>>{\r\n field: field,\r\n type: Serenity.DateTimeEditor,\r\n title: title,\r\n element: function (e1) {\r\n end = Serenity.Widget.create({\r\n type: Serenity.DateTimeEditor,\r\n element: function (e2) {\r\n e2.insertAfter(e1);\r\n },\r\n options: null,\r\n init: null\r\n });\r\n\r\n end.element.change(function (x) {\r\n e1.triggerHandler('change');\r\n });\r\n\r\n $('<span/>').addClass('range-separator').text('-').insertAfter(e1);\r\n },\r\n init: function (i) {\r\n i.element.parent().find('.time').change(function (x1) {\r\n i.element.triggerHandler('change');\r\n });\r\n },\r\n handler: function (args) {\r\n var active1 = !Q.isTrimmedEmpty(args.widget.value);\r\n var active2 = !Q.isTrimmedEmpty(end.value);\r\n if (active1 && !Q.parseDate(args.widget.element.val())) {\r\n active1 = false;\r\n Q.notifyWarning(Q.text('Validation.DateInvalid'), '', null);\r\n args.widget.element.val('');\r\n }\r\n if (active2 && !Q.parseDate(end.element.val())) {\r\n active2 = false;\r\n Q.notifyWarning(Q.text('Validation.DateInvalid'), '', null);\r\n end.element.val('');\r\n }\r\n args.active = active1 || active2;\r\n if (active1) {\r\n args.request.Criteria = Serenity.Criteria.join(args.request.Criteria, 'and',\r\n [[args.field], '>=', args.widget.value]);\r\n }\r\n if (active2) {\r\n args.request.Criteria = Serenity.Criteria.join(args.request.Criteria, 'and',\r\n [[args.field], '<=', end.value]);\r\n }\r\n },\r\n displayText: function (w, l) {\r\n var v1 = Serenity.EditorUtils.getDisplayText(w);\r\n var v2 = Serenity.EditorUtils.getDisplayText(end);\r\n if (Q.isEmptyOrNull(v1) && Q.isEmptyOrNull(v2)) {\r\n return null;\r\n }\r\n var text1 = l + ' >= ' + v1;\r\n var text2 = l + ' <= ' + v2;\r\n if (!Q.isEmptyOrNull(v1) && !Q.isEmptyOrNull(v2)) {\r\n return text1 + ' ' + Q.coalesce(Q.tryGetText('Controls.FilterPanel.And'), 'and') + ' ' + text2;\r\n }\r\n else if (!Q.isEmptyOrNull(v1)) {\r\n return text1;\r\n }\r\n else {\r\n return text2;\r\n }\r\n },\r\n saveState: function (w1) {\r\n return [Serenity.EditorUtils.getValue(w1), Serenity.EditorUtils.getValue(end)];\r\n },\r\n loadState: function (w2, state) {\r\n if (state == null || !Q.isArray(state) || state.length !== 2) {\r\n state = [null, null];\r\n }\r\n Serenity.EditorUtils.setValue(w2, state[0]);\r\n Serenity.EditorUtils.setValue(end, state[1]);\r\n }\r\n };\r\n }\r\n\r\n public addBoolean(field: string, title?: string, yes?: string, no?: string): SelectEditor {\r\n return this.add(QuickFilterBar.boolean(field, title, yes, no));\r\n }\r\n\r\n public static boolean(field: string, title?: string, yes?: string, no?: string): QuickFilter<SelectEditor, SelectEditorOptions> {\r\n var opt: SelectEditorOptions = {};\r\n var items = [];\r\n\r\n var trueText = yes;\r\n if (trueText == null) {\r\n trueText = Q.text('Controls.FilterPanel.OperatorNames.true');\r\n }\r\n items.push(['1', trueText]);\r\n\r\n var falseText = no;\r\n if (falseText == null) {\r\n falseText = Q.text('Controls.FilterPanel.OperatorNames.false');\r\n }\r\n\r\n items.push(['0', falseText]);\r\n\r\n opt.items = items;\r\n\r\n return {\r\n field: field,\r\n type: Serenity.SelectEditor,\r\n title: title,\r\n options: opt,\r\n handler: function (args) {\r\n args.equalityFilter[args.field] = args.value == null || Q.isEmptyOrNull(args.value.toString()) ?\r\n null : !!Q.toId(args.value);\r\n }\r\n };\r\n }\r\n\r\n public static propertyItemToQuickFilter(item: PropertyItem) {\r\n var quick: any = {};\r\n\r\n var name = item.name;\r\n var title = Q.tryGetText(item.title);\r\n if (title == null) {\r\n title = item.title;\r\n if (title == null) {\r\n title = name;\r\n }\r\n }\r\n\r\n var filteringType = Serenity.FilteringTypeRegistry.get(Q.coalesce(item.filteringType, 'String'));\r\n if (filteringType === Serenity.DateFiltering) {\r\n quick = QuickFilterBar.dateRange(name, title);\r\n }\r\n else if (filteringType === Serenity.DateTimeFiltering) {\r\n quick = QuickFilterBar.dateTimeRange(name, title);\r\n }\r\n else if (filteringType === Serenity.BooleanFiltering) {\r\n var q = item.quickFilterParams || {};\r\n var f = item.filteringParams || {};\r\n var trueText = q['trueText'];\r\n if (trueText == null) {\r\n trueText = f['trueText'];\r\n }\r\n var falseText = q['falseText'];\r\n if (falseText == null) {\r\n falseText = f['falseText'];\r\n }\r\n quick = QuickFilterBar.boolean(name, title, trueText, falseText);\r\n }\r\n else {\r\n var filtering = new (filteringType as any)() as IFiltering;\r\n if (filtering && (ss as any).isInstanceOfType(filtering, Serenity.IQuickFiltering)) {\r\n Serenity.ReflectionOptionsSetter.set(filtering, item.filteringParams);\r\n filtering.set_field(item);\r\n filtering.set_operator({ key: Serenity.FilterOperators.EQ });\r\n (filtering as any).initQuickFilter(quick);\r\n quick.options = Q.deepClone(quick.options, item.quickFilterParams);\r\n }\r\n else {\r\n return null;\r\n }\r\n }\r\n\r\n if (!!item.quickFilterSeparator) {\r\n quick.separator = true;\r\n }\r\n\r\n quick.cssClass = item.quickFilterCssClass;\r\n return quick;\r\n }\r\n\r\n public onChange: (e: JQueryEventObject) => void;\r\n\r\n private submitHandlers: any;\r\n\r\n destroy() {\r\n this.submitHandlers = null;\r\n super.destroy();\r\n }\r\n\r\n public onSubmit(request: Serenity.ListRequest) {\r\n this.submitHandlers && this.submitHandlers(request);\r\n }\r\n\r\n protected add_submitHandlers(action: (request: Serenity.ListRequest) => void): void {\r\n this.submitHandlers = (ss as any).delegateCombine(this.submitHandlers, action);\r\n }\r\n\r\n protected remove_submitHandlers(action: (request: Serenity.ListRequest) => void): void {\r\n this.submitHandlers = (ss as any).delegateRemove(this.submitHandlers, action);\r\n }\r\n\r\n protected clear_submitHandlers() {\r\n }\r\n\r\n public find<TWidget>(type: { new(...args: any[]): TWidget }, field: string): TWidget {\r\n return $('#' + this.options.idPrefix + field).getWidget(type);\r\n }\r\n\r\n public tryFind<TWidget>(type: { new(...args: any[]): TWidget }, field: string): TWidget {\r\n var el = $('#' + this.options.idPrefix + field);\r\n if (!el.length)\r\n return null;\r\n\r\n return el.tryGetWidget(type);\r\n }\r\n }\r\n}\r\n","namespace Serenity {\r\n export interface IDataGrid {\r\n getElement(): JQuery;\r\n getGrid(): Slick.Grid;\r\n getView(): Slick.RemoteView<any>;\r\n getFilterStore(): Serenity.FilterStore;\r\n }\r\n\r\n @Serenity.Decorators.registerInterface('Serenity.IDataGrid')\r\n export class IDataGrid {\r\n }\r\n\r\n @Serenity.Decorators.registerClass('Serenity.DataGrid', [IDataGrid, IReadOnly])\r\n @Serenity.Decorators.element(\"<div/>\")\r\n export class DataGrid<TItem, TOptions> extends Widget<TOptions> implements IDataGrid, IReadOnly {\r\n\r\n protected titleDiv: JQuery;\r\n protected toolbar: Toolbar;\r\n protected filterBar: FilterDisplayBar;\r\n protected quickFiltersDiv: JQuery;\r\n protected quickFiltersBar: QuickFilterBar;\r\n protected slickContainer: JQuery;\r\n protected allColumns: Slick.Column[];\r\n protected initialSettings: PersistedGridSettings;\r\n protected restoringSettings: number = 0;\r\n private idProperty: string;\r\n private isActiveProperty: string;\r\n private localTextDbPrefix: string;\r\n private isDisabled: boolean;\r\n private rows: any;\r\n private slickGridOnSort: any;\r\n private slickGridOnClick: any;\r\n public view: Slick.RemoteView<TItem>;\r\n public slickGrid: Slick.Grid;\r\n public openDialogsAsPanel: boolean;\r\n\r\n public static defaultRowHeight: number;\r\n public static defaultHeaderHeight: number;\r\n public static defaultPersistanceStorage: SettingStorage;\r\n\r\n constructor(container: JQuery, options?: TOptions) {\r\n super(container, options);\r\n\r\n var self = this;\r\n\r\n this.element.addClass('s-DataGrid').html('');\r\n this.element.addClass('s-' + (ss as any).getTypeName((ss as any).getInstanceType(this)));\r\n this.element.addClass('require-layout').bind('layout.' + this.uniqueName, function () {\r\n self.layout();\r\n });\r\n\r\n this.setTitle(this.getInitialTitle());\r\n\r\n var buttons = this.getButtons();\r\n if (buttons != null) {\r\n this.createToolbar(buttons);\r\n }\r\n\r\n this.slickContainer = this.createSlickContainer();\r\n this.view = this.createView();\r\n\r\n this.slickGrid = this.createSlickGrid();\r\n\r\n if (this.enableFiltering()) {\r\n this.createFilterBar();\r\n }\r\n\r\n if (this.usePager()) {\r\n this.createPager();\r\n }\r\n this.bindToSlickEvents();\r\n this.bindToViewEvents();\r\n\r\n if (buttons != null) {\r\n this.createToolbarExtensions();\r\n }\r\n\r\n this.createQuickFilters();\r\n\r\n this.updateDisabledState();\r\n this.updateInterface();\r\n\r\n if (!this.isAsyncWidget()) {\r\n this.initialSettings = this.getCurrentSettings(null);\r\n this.restoreSettings(null, null);\r\n window.setTimeout(() => this.initialPopulate(), 0);\r\n }\r\n }\r\n\r\n protected attrs<TAttr>(attrType: { new(...args: any[]): TAttr }): TAttr[] {\r\n return (ss as any).getAttributes((ss as any).getInstanceType(this), attrType, true);\r\n }\r\n\r\n protected layout(): void {\r\n if (!this.element.is(':visible') || this.slickContainer == null)\r\n return;\r\n\r\n var responsiveHeight = this.element.hasClass('responsive-height');\r\n var madeAutoHeight = this.slickGrid != null && this.slickGrid.getOptions().autoHeight;\r\n var shouldAutoHeight = responsiveHeight && window.innerWidth < 768;\r\n\r\n if (shouldAutoHeight) {\r\n if (this.element[0] && this.element[0].style.height != \"auto\")\r\n this.element[0].style.height = \"auto\";\r\n\r\n if (!madeAutoHeight) {\r\n\r\n this.slickContainer.css('height', 'auto')\r\n .children('.slick-pane').each((i, e: HTMLElement) => {\r\n if (e.style.height != null && e.style.height != \"auto\")\r\n e.style.height = \"auto\";\r\n });\r\n\r\n this.slickGrid.setOptions({ autoHeight: true });\r\n }\r\n }\r\n else {\r\n if (madeAutoHeight) {\r\n this.slickContainer.children('.slick-viewport').css('height', 'auto');\r\n this.slickGrid.setOptions({ autoHeight: false });\r\n }\r\n\r\n Q.layoutFillHeight(this.slickContainer);\r\n }\r\n\r\n this.slickGrid.resizeCanvas();\r\n }\r\n\r\n protected getInitialTitle(): string {\r\n return null;\r\n }\r\n\r\n protected createToolbarExtensions(): void {\r\n }\r\n\r\n protected ensureQuickFilterBar(): QuickFilterBar {\r\n\r\n if (this.quickFiltersDiv == null)\r\n this.createQuickFilters([]);\r\n\r\n return this.quickFiltersBar;\r\n }\r\n\r\n protected createQuickFilters(filters?: QuickFilter<Widget<any>, any>[]): void {\r\n\r\n if (this.quickFiltersDiv == null && (filters != null ||\r\n ((filters = this.getQuickFilters()) && filters != null && filters.length))) {\r\n this.quickFiltersDiv = $('<div/>').addClass('quick-filters-bar');\r\n if (this.toolbar) {\r\n $('<div/>').addClass('clear').appendTo(this.toolbar.element);\r\n this.quickFiltersDiv.appendTo(this.toolbar.element);\r\n }\r\n else {\r\n this.quickFiltersDiv.appendTo($('<div/>').addClass('s-Toolbar').insertBefore(this.slickContainer));\r\n }\r\n\r\n this.quickFiltersBar = new QuickFilterBar(this.quickFiltersDiv, {\r\n filters: filters,\r\n getTitle: (filter: QuickFilter<Widget<any>, any>) => this.determineText(pre => pre + filter.field),\r\n idPrefix: this.uniqueName + '_QuickFilter_'\r\n });\r\n this.quickFiltersBar.onChange = (e) => this.quickFilterChange(e);\r\n }\r\n }\r\n\r\n protected getQuickFilters(): QuickFilter<Widget<any>, any>[] {\r\n return this.allColumns.filter(function (x) {\r\n return x.sourceItem &&\r\n x.sourceItem.quickFilter === true &&\r\n (x.sourceItem.readPermission == null ||\r\n Q.Authorization.hasPermission(x.sourceItem.readPermission));\r\n }).map(x => QuickFilterBar.propertyItemToQuickFilter(x.sourceItem))\r\n .filter(x => x != null);\r\n }\r\n\r\n protected findQuickFilter<TWidget>(type: { new(...args: any[]): TWidget }, field: string): TWidget {\r\n if (this.quickFiltersBar != null)\r\n return this.quickFiltersBar.find(type, field);\r\n\r\n return $('#' + this.uniqueName + '_QuickFilter_' + field).getWidget(type);\r\n }\r\n\r\n protected tryFindQuickFilter<TWidget>(type: { new(...args: any[]): TWidget }, field: string): TWidget {\r\n if (this.quickFiltersBar != null)\r\n return this.quickFiltersBar.tryFind(type, field);\r\n\r\n var el = $('#' + this.uniqueName + '_QuickFilter_' + field);\r\n if (!el.length)\r\n return null;\r\n\r\n return el.tryGetWidget(type);\r\n }\r\n\r\n protected createIncludeDeletedButton(): void {\r\n if (!Q.isEmptyOrNull(this.getIsActiveProperty()) ||\r\n !Q.isEmptyOrNull(this.getIsDeletedProperty())) {\r\n Serenity.GridUtils.addIncludeDeletedToggle(this.toolbar.element, this.view, null, false);\r\n }\r\n }\r\n\r\n protected getQuickSearchFields(): QuickSearchField[] {\r\n return null;\r\n }\r\n\r\n protected createQuickSearchInput(): void {\r\n Serenity.GridUtils.addQuickSearchInput(this.toolbar.element, this.view, this.getQuickSearchFields());\r\n }\r\n\r\n public destroy() {\r\n if (this.quickFiltersBar) {\r\n this.quickFiltersBar.destroy();\r\n this.quickFiltersBar = null;\r\n }\r\n\r\n if (this.toolbar) {\r\n this.toolbar.destroy();\r\n this.toolbar = null;\r\n }\r\n\r\n if (this.slickGrid) {\r\n this.slickGrid.onClick.clear();\r\n this.slickGrid.onSort.clear();\r\n this.slickGrid.onColumnsResized.clear();\r\n this.slickGrid.onColumnsReordered.clear();\r\n this.slickGrid.destroy();\r\n this.slickGrid = null;\r\n }\r\n\r\n if (this.view) {\r\n this.view.onDataChanged.clear();\r\n this.view.onSubmit = null;\r\n this.view.setFilter(null);\r\n this.view = null;\r\n }\r\n\r\n this.titleDiv = null;\r\n super.destroy();\r\n }\r\n\r\n protected getItemCssClass(item: TItem, index: number): string {\r\n var activeFieldName = this.getIsActiveProperty();\r\n var deletedFieldName = this.getIsDeletedProperty();\r\n if (Q.isEmptyOrNull(activeFieldName) && Q.isEmptyOrNull(deletedFieldName)) {\r\n return null;\r\n }\r\n\r\n if (activeFieldName) {\r\n var value = item[activeFieldName];\r\n if (value == null) {\r\n return null;\r\n }\r\n\r\n if (typeof (value) === 'number') {\r\n if (value < 0) {\r\n return 'deleted';\r\n }\r\n else if (value === 0) {\r\n return 'inactive';\r\n }\r\n }\r\n else if (typeof (value) === 'boolean') {\r\n if (value === false) {\r\n return 'deleted';\r\n }\r\n }\r\n }\r\n else {\r\n return item[deletedFieldName] ? 'deleted' : null;\r\n }\r\n\r\n return null;\r\n }\r\n\r\n protected getItemMetadata(item: TItem, index: number): any {\r\n var itemClass = this.getItemCssClass(item, index);\r\n if (Q.isEmptyOrNull(itemClass)) {\r\n return new Object();\r\n }\r\n return { cssClasses: itemClass };\r\n }\r\n\r\n protected postProcessColumns(columns: Slick.Column[]): Slick.Column[] {\r\n Serenity.SlickHelper.setDefaults(columns, this.getLocalTextDbPrefix());\r\n return columns;\r\n }\r\n\r\n protected initialPopulate(): void {\r\n var self = this;\r\n if (this.populateWhenVisible()) {\r\n Serenity.LazyLoadHelper.executeEverytimeWhenShown(this.element, function () {\r\n self.refreshIfNeeded();\r\n }, false);\r\n if (this.element.is(':visible') && this.view) {\r\n this.view.populate();\r\n }\r\n }\r\n else if (this.view) {\r\n this.view.populate();\r\n }\r\n }\r\n\r\n protected canFilterColumn(column: Slick.Column): boolean {\r\n return (column.sourceItem != null && \r\n column.sourceItem.notFilterable !== true &&\r\n (column.sourceItem.readPermission == null ||\r\n Q.Authorization.hasPermission(column.sourceItem.readPermission)));\r\n }\r\n\r\n protected initializeFilterBar() {\r\n\r\n this.filterBar.set_store(new Serenity.FilterStore(\r\n this.allColumns\r\n .filter(c => this.canFilterColumn(c))\r\n .map(x => x.sourceItem)));\r\n\r\n this.filterBar.get_store().add_changed((s: JQueryEventObject, e: any) => {\r\n if (this.restoringSettings <= 0) {\r\n this.persistSettings(null);\r\n this.view && (this.view.seekToPage = 1);\r\n this.refresh();\r\n }\r\n });\r\n }\r\n\r\n protected initializeAsync(): PromiseLike<void> {\r\n return super.initializeAsync()\r\n .then<Slick.Column[]>(() => this.getColumnsAsync())\r\n .then(columns => {\r\n this.allColumns = columns;\r\n this.postProcessColumns(this.allColumns);\r\n this.filterBar && this.initializeFilterBar();\r\n\r\n var visibleColumns = this.allColumns.filter(function (x2) {\r\n return x2.visible !== false;\r\n });\r\n\r\n if (this.slickGrid) {\r\n this.slickGrid.setColumns(visibleColumns);\r\n }\r\n this.setInitialSortOrder();\r\n this.initialSettings = this.getCurrentSettings(null);\r\n this.restoreSettings(null, null);\r\n this.initialPopulate();\r\n }, null);\r\n }\r\n\r\n protected createSlickGrid(): Slick.Grid {\r\n\r\n var visibleColumns: Slick.Column[];\r\n\r\n if (this.isAsyncWidget()) {\r\n visibleColumns = [];\r\n }\r\n else {\r\n this.allColumns = this.getColumns();\r\n visibleColumns = this.postProcessColumns(this.allColumns).filter(function (x) {\r\n return x.visible !== false;\r\n });\r\n }\r\n\r\n var slickOptions = this.getSlickOptions();\r\n var grid = new Slick.Grid(this.slickContainer, this.view as any, visibleColumns, slickOptions);\r\n grid.registerPlugin(new Slick.AutoTooltips({\r\n enableForHeaderCells: true\r\n }));\r\n\r\n this.slickGrid = grid;\r\n this.rows = this.slickGrid;\r\n if (!this.isAsyncWidget()) {\r\n this.setInitialSortOrder();\r\n }\r\n\r\n return grid;\r\n }\r\n\r\n protected setInitialSortOrder(): void {\r\n var sortBy = this.getDefaultSortBy();\r\n\r\n if (this.view) {\r\n this.view.sortBy = Array.prototype.slice.call(sortBy);\r\n }\r\n\r\n var mapped = sortBy.map(function (s) {\r\n var x: Slick.ColumnSort = {};\r\n if (s && Q.endsWith(s.toLowerCase(), ' desc')) {\r\n x.columnId = (ss as any).trimEndString(s.substr(0, s.length - 5));\r\n x.sortAsc = false;\r\n }\r\n else {\r\n x.columnId = s;\r\n x.sortAsc = true;\r\n }\r\n return x;\r\n });\r\n\r\n this.slickGrid.setSortColumns(mapped);\r\n }\r\n\r\n itemAt(row: number): TItem {\r\n return this.slickGrid.getDataItem(row);\r\n }\r\n\r\n rowCount() {\r\n return this.slickGrid.getDataLength();\r\n }\r\n\r\n getItems(): TItem[] {\r\n return this.view.getItems();\r\n }\r\n\r\n setItems(value: TItem[]) {\r\n this.view.setItems(value, true);\r\n }\r\n\r\n protected bindToSlickEvents() {\r\n var self = this;\r\n this.slickGridOnSort = (e: JQuery, p: any) => {\r\n self.view.populateLock();\r\n try {\r\n var sortBy = [];\r\n var col: any;\r\n if (!!p.multiColumnSort) {\r\n for (var i = 0; !!(i < p.sortCols.length); i++) {\r\n var x = p.sortCols[i];\r\n col = x.sortCol;\r\n if (col == null) {\r\n col = {};\r\n }\r\n sortBy.push(col.field + (!!x.sortAsc ? '' : ' DESC'));\r\n }\r\n }\r\n else {\r\n var col = p.sortCol;\r\n if (col == null) {\r\n col = {};\r\n }\r\n sortBy.push(col.field + (!!p.sortAsc ? '' : ' DESC'));\r\n }\r\n\r\n self.view.seekToPage = 1;\r\n self.view.sortBy = sortBy;\r\n }\r\n finally {\r\n self.view.populateUnlock();\r\n }\r\n self.view.populate();\r\n this.persistSettings(null);\r\n };\r\n\r\n this.slickGrid.onSort.subscribe(this.slickGridOnSort);\r\n\r\n this.slickGridOnClick = (e1: JQueryEventObject, p1: any) => {\r\n self.onClick(e1, p1.row, p1.cell);\r\n }\r\n\r\n this.slickGrid.onClick.subscribe(this.slickGridOnClick);\r\n\r\n this.slickGrid.onColumnsReordered.subscribe((e2: JQueryEventObject, p2: any) => {\r\n return this.persistSettings(null);\r\n });\r\n\r\n this.slickGrid.onColumnsResized.subscribe((e3: JQueryEventObject, p3: any) => {\r\n return this.persistSettings(null);\r\n });\r\n }\r\n\r\n protected getAddButtonCaption(): string {\r\n return Q.coalesce(Q.tryGetText('Controls.DataGrid.NewButton'), 'New');\r\n }\r\n\r\n protected getButtons(): ToolButton[] {\r\n return [];\r\n }\r\n\r\n protected editItem(entityOrId: any): void {\r\n throw new (ss as any).NotImplementedException();\r\n }\r\n\r\n protected editItemOfType(itemType: string, entityOrId: any): void {\r\n if (itemType === this.getItemType()) {\r\n this.editItem(entityOrId);\r\n return;\r\n }\r\n\r\n throw new (ss as any).NotImplementedException();\r\n }\r\n\r\n protected onClick(e: JQueryEventObject, row: number, cell: number): void {\r\n if (e.isDefaultPrevented()) {\r\n return;\r\n }\r\n\r\n var target = $(e.target);\r\n if (!target.hasClass('s-EditLink')) {\r\n target = target.closest('a');\r\n }\r\n\r\n if (target.hasClass('s-EditLink')) {\r\n e.preventDefault();\r\n this.editItemOfType(Serenity.SlickFormatting.getItemType(target), Serenity.SlickFormatting.getItemId(target));\r\n }\r\n }\r\n\r\n protected viewDataChanged(e: any, rows: TItem[]): void {\r\n this.markupReady();\r\n this.layout();\r\n }\r\n\r\n protected bindToViewEvents(): void {\r\n var self = this;\r\n\r\n this.view.onDataChanged.subscribe(function (e, d) {\r\n return self.viewDataChanged(e, d);\r\n });\r\n\r\n this.view.onSubmit = function (view) {\r\n return self.onViewSubmit();\r\n };\r\n\r\n this.view.setFilter(function (item, view1) {\r\n return self.onViewFilter(item);\r\n });\r\n\r\n this.view.onProcessData = function (response, view2) {\r\n return self.onViewProcessData(response);\r\n }\r\n }\r\n\r\n protected onViewProcessData(response: ListResponse<TItem>): ListResponse<TItem> {\r\n return response;\r\n }\r\n\r\n protected onViewFilter(item: TItem): boolean {\r\n return true;\r\n }\r\n\r\n protected getIncludeColumns(include: { [key: string]: boolean }): void {\r\n var columns = this.slickGrid.getColumns();\r\n for (var column of columns) {\r\n if (column.field) {\r\n include[column.field] = true;\r\n }\r\n\r\n if (column.referencedFields) {\r\n for (var x of column.referencedFields) {\r\n include[x] = true;\r\n }\r\n }\r\n }\r\n }\r\n\r\n protected setCriteriaParameter(): void {\r\n delete this.view.params['Criteria'];\r\n if (this.filterBar) {\r\n var criteria = this.filterBar.get_store().get_activeCriteria();\r\n if (!Serenity.Criteria.isEmpty(criteria)) {\r\n this.view.params.Criteria = criteria;\r\n }\r\n }\r\n }\r\n\r\n protected setEquality(field: string, value: any): void {\r\n Q.setEquality(this.view.params, field, value);\r\n }\r\n\r\n protected setIncludeColumnsParameter(): void {\r\n var include = {};\r\n this.getIncludeColumns(include);\r\n var array = [];\r\n for (var key of Object.keys(include)) {\r\n array.push(key);\r\n }\r\n this.view.params.IncludeColumns = array;\r\n }\r\n\r\n protected onViewSubmit(): boolean {\r\n if (this.isDisabled || !this.getGridCanLoad()) {\r\n return false;\r\n }\r\n\r\n this.setCriteriaParameter();\r\n this.setIncludeColumnsParameter();\r\n this.invokeSubmitHandlers();\r\n\r\n return true;\r\n }\r\n\r\n protected markupReady(): void {\r\n }\r\n\r\n protected createSlickContainer(): JQuery {\r\n return $('<div class=\"grid-container\"></div>').appendTo(this.element);\r\n }\r\n\r\n protected createView(): Slick.RemoteView<TItem> {\r\n var opt = this.getViewOptions();\r\n return new Slick.RemoteView<TItem>(opt);\r\n }\r\n\r\n protected getDefaultSortBy(): any[] {\r\n if (this.slickGrid) {\r\n\r\n var columns = this.slickGrid.getColumns().filter(function (x) {\r\n return x.sortOrder && x.sortOrder !== 0;\r\n });\r\n\r\n if (columns.length > 0) {\r\n columns.sort(function (x1, y) {\r\n return (ss as any).compare(Math.abs(x1.sortOrder), Math.abs(y.sortOrder));\r\n });\r\n\r\n var list = [];\r\n for (var i = 0; i < columns.length; i++) {\r\n var col = columns[i];\r\n list.push(col.field + ((col.sortOrder < 0) ? ' DESC' : ''));\r\n }\r\n\r\n return list;\r\n }\r\n }\r\n\r\n return [];\r\n }\r\n\r\n protected usePager(): boolean {\r\n return false;\r\n }\r\n\r\n protected enableFiltering(): boolean {\r\n var attr = this.attrs(Serenity.FilterableAttribute);\r\n return attr.length > 0 && attr[0].value;\r\n }\r\n\r\n protected populateWhenVisible(): boolean {\r\n return false;\r\n }\r\n\r\n protected createFilterBar(): void {\r\n var filterBarDiv = $('<div/>').appendTo(this.element);\r\n var self = this;\r\n this.filterBar = new Serenity.FilterDisplayBar(filterBarDiv);\r\n if (!this.isAsyncWidget())\r\n this.initializeFilterBar();\r\n }\r\n\r\n protected getPagerOptions(): Slick.PagerOptions {\r\n return {\r\n view: this.view,\r\n rowsPerPage: 20,\r\n rowsPerPageOptions: [20, 100, 500, 2500]\r\n };\r\n }\r\n\r\n protected createPager(): void {\r\n var pagerDiv = $('<div></div>').appendTo(this.element);\r\n pagerDiv.slickPager(this.getPagerOptions());\r\n }\r\n\r\n protected getViewOptions() {\r\n var opt: Slick.RemoteViewOptions = {};\r\n opt.idField = this.getIdProperty();\r\n opt.sortBy = this.getDefaultSortBy();\r\n\r\n if (!this.usePager()) {\r\n opt.rowsPerPage = 0;\r\n }\r\n else if (this.element.hasClass('responsive-height')) {\r\n opt.rowsPerPage = (($(window.window).width() < 768) ? 20 : 100);\r\n }\r\n else {\r\n opt.rowsPerPage = 100;\r\n }\r\n\r\n opt.getItemMetadata = (item, index) => {\r\n return this.getItemMetadata(item, index);\r\n };\r\n\r\n return opt;\r\n }\r\n\r\n protected createToolbar(buttons: ToolButton[]): void {\r\n var toolbarDiv = $('<div class=\"grid-toolbar\"></div>').appendTo(this.element);\r\n this.toolbar = new Serenity.Toolbar(toolbarDiv, { buttons: buttons, hotkeyContext: this.element[0] });\r\n }\r\n\r\n getTitle(): string {\r\n if (!this.titleDiv) {\r\n return null;\r\n }\r\n\r\n return this.titleDiv.children().text();\r\n }\r\n\r\n setTitle(value: string) {\r\n if (value !== this.getTitle()) {\r\n if (value == null) {\r\n if (this.titleDiv) {\r\n this.titleDiv.remove();\r\n this.titleDiv = null;\r\n }\r\n }\r\n else {\r\n if (!this.titleDiv) {\r\n this.titleDiv = $('<div class=\"grid-title\"><div class=\"title-text\"></div></div>')\r\n .prependTo(this.element);\r\n }\r\n this.titleDiv.children().text(value);\r\n }\r\n\r\n this.layout();\r\n }\r\n }\r\n\r\n protected getItemType(): string {\r\n return 'Item';\r\n }\r\n\r\n protected itemLink(itemType?: string, idField?: string, text?: (ctx: Slick.FormatterContext) => string,\r\n cssClass?: (ctx: Slick.FormatterContext) => string, encode: boolean = true): Slick.Format {\r\n\r\n if (itemType == null) {\r\n itemType = this.getItemType();\r\n }\r\n\r\n if (idField == null) {\r\n idField = this.getIdProperty();\r\n }\r\n\r\n return Serenity.SlickFormatting.itemLink(itemType, idField, text, cssClass, encode);\r\n }\r\n\r\n protected getColumnsKey(): string {\r\n var attr = this.attrs(Serenity.ColumnsKeyAttribute);\r\n if (attr && attr.length > 0) {\r\n return attr[0].value;\r\n }\r\n\r\n return null;\r\n }\r\n\r\n protected getPropertyItemsAsync(): PromiseLike<PropertyItem[]> {\r\n return Promise.resolve()\r\n .then<PropertyItem[]>(() => {\r\n var columnsKey = this.getColumnsKey();\r\n if (!Q.isEmptyOrNull(columnsKey)) {\r\n return Q.getColumnsAsync(columnsKey);\r\n }\r\n return Promise.resolve<PropertyItem[]>([]);\r\n }, null);\r\n }\r\n\r\n protected getPropertyItems(): PropertyItem[] {\r\n var attr = this.attrs(Serenity.ColumnsKeyAttribute);\r\n\r\n var columnsKey = this.getColumnsKey();\r\n if (!Q.isEmptyOrNull(columnsKey)) {\r\n return Q.getColumns(columnsKey);\r\n }\r\n\r\n return [];\r\n }\r\n\r\n protected getColumns(): Slick.Column[] {\r\n var propertyItems = this.getPropertyItems();\r\n return this.propertyItemsToSlickColumns(propertyItems);\r\n }\r\n\r\n protected propertyItemsToSlickColumns(propertyItems: PropertyItem[]): Slick.Column[] {\r\n var columns = Serenity.PropertyItemSlickConverter.toSlickColumns(propertyItems);\r\n for (var i = 0; i < propertyItems.length; i++) {\r\n var item = propertyItems[i];\r\n var column = columns[i];\r\n if (item.editLink === true) {\r\n var oldFormat = { $: column.format };\r\n var css = { $: (item.editLinkCssClass) != null ? item.editLinkCssClass : null };\r\n column.format = this.itemLink(\r\n item.editLinkItemType != null ? item.editLinkItemType : null,\r\n item.editLinkIdField != null ? item.editLinkIdField : null,\r\n (ss as any).mkdel({ oldFormat: oldFormat }, function(ctx: Slick.FormatterContext) {\r\n if (this.oldFormat.$ != null) {\r\n return this.oldFormat.$(ctx);\r\n }\r\n return Q.htmlEncode(ctx.value);\r\n }),\r\n (ss as any).mkdel({ css: css }, function(ctx1: Slick.FormatterContext) {\r\n return Q.coalesce(this.css.$, '');\r\n }), false);\r\n\r\n if (!Q.isEmptyOrNull(item.editLinkIdField)) {\r\n column.referencedFields = column.referencedFields || [];\r\n column.referencedFields.push(item.editLinkIdField);\r\n }\r\n }\r\n }\r\n return columns;\r\n }\r\n\r\n protected getColumnsAsync(): PromiseLike<Slick.Column[]> {\r\n return this.getPropertyItemsAsync().then(propertyItems => {\r\n return this.propertyItemsToSlickColumns(propertyItems);\r\n }, null);\r\n }\r\n\r\n protected getSlickOptions(): Slick.GridOptions {\r\n var opt: Slick.GridOptions = {};\r\n opt.multiSelect = false;\r\n opt.multiColumnSort = true;\r\n opt.enableCellNavigation = false;\r\n opt.headerRowHeight = Serenity.DataGrid.defaultHeaderHeight;\r\n opt.rowHeight = Serenity.DataGrid.defaultRowHeight;\r\n return opt;\r\n }\r\n\r\n protected populateLock(): void {\r\n this.view.populateLock();\r\n }\r\n\r\n protected populateUnlock(): void {\r\n this.view.populateUnlock();\r\n }\r\n\r\n protected getGridCanLoad(): boolean {\r\n return true;\r\n }\r\n\r\n public refresh() {\r\n if (!this.populateWhenVisible()) {\r\n this.internalRefresh();\r\n return;\r\n }\r\n if (this.slickContainer.is(':visible')) {\r\n this.slickContainer.data('needsRefresh', false);\r\n this.internalRefresh();\r\n return;\r\n }\r\n this.slickContainer.data('needsRefresh', true);\r\n }\r\n\r\n protected refreshIfNeeded(): void {\r\n if (!!this.slickContainer.data('needsRefresh')) {\r\n this.slickContainer.data('needsRefresh', false);\r\n this.internalRefresh();\r\n }\r\n }\r\n\r\n protected internalRefresh(): void {\r\n this.view.populate();\r\n }\r\n\r\n public setIsDisabled(value: boolean): void {\r\n if (this.isDisabled !== value) {\r\n this.isDisabled = value;\r\n if (this.isDisabled) {\r\n this.view.setItems([], true);\r\n }\r\n\r\n this.updateDisabledState();\r\n }\r\n }\r\n\r\n private _readonly: boolean;\r\n\r\n public get readOnly(): boolean {\r\n return this.get_readOnly();\r\n }\r\n\r\n public set readOnly(value: boolean) {\r\n this.set_readOnly(value);\r\n }\r\n\r\n public get_readOnly() {\r\n return !!this._readonly;\r\n }\r\n\r\n public set_readOnly(value: boolean) {\r\n if (!!this._readonly != !!value) {\r\n this._readonly = !!value;\r\n this.updateInterface();\r\n }\r\n }\r\n\r\n protected updateInterface() {\r\n this.toolbar && this.toolbar.updateInterface();\r\n }\r\n\r\n protected getLocalTextDbPrefix(): string {\r\n if (this.localTextDbPrefix == null) {\r\n this.localTextDbPrefix = Q.coalesce(this.getLocalTextPrefix(), '');\r\n if (this.localTextDbPrefix.length > 0 && !Q.endsWith(this.localTextDbPrefix, '.')) {\r\n this.localTextDbPrefix = 'Db.' + this.localTextDbPrefix + '.';\r\n }\r\n }\r\n\r\n return this.localTextDbPrefix;\r\n }\r\n\r\n protected getLocalTextPrefix(): string {\r\n var attr = this.attrs(LocalTextPrefixAttribute);\r\n\r\n if (attr.length >= 1)\r\n return attr[0].value;\r\n\r\n return '';\r\n }\r\n\r\n protected getIdProperty(): string {\r\n if (this.idProperty == null) {\r\n var attr = this.attrs(IdPropertyAttribute);\r\n\r\n if (attr.length === 1) {\r\n this.idProperty = attr[0].value;\r\n }\r\n else {\r\n this.idProperty = 'ID';\r\n }\r\n }\r\n\r\n return this.idProperty;\r\n }\r\n\r\n protected getIsDeletedProperty(): string {\r\n return null;\r\n }\r\n\r\n protected getIsActiveProperty(): string {\r\n if (this.isActiveProperty == null) {\r\n var attr = this.attrs(IsActivePropertyAttribute);\r\n\r\n if (attr.length === 1) {\r\n this.isActiveProperty = attr[0].value;\r\n }\r\n else {\r\n this.isActiveProperty = '';\r\n }\r\n }\r\n return this.isActiveProperty;\r\n }\r\n\r\n protected updateDisabledState(): void {\r\n this.slickContainer.toggleClass('ui-state-disabled', !!this.isDisabled);\r\n }\r\n\r\n protected resizeCanvas(): void {\r\n this.slickGrid.resizeCanvas();\r\n }\r\n\r\n protected subDialogDataChange(): void {\r\n this.refresh();\r\n }\r\n\r\n protected addFilterSeparator(): void {\r\n this.ensureQuickFilterBar().addSeparator();\r\n }\r\n\r\n protected determineText(getKey: (prefix: string) => string) {\r\n var localTextPrefix = this.getLocalTextDbPrefix();\r\n if (!Q.isEmptyOrNull(localTextPrefix)) {\r\n var local = Q.tryGetText(getKey(localTextPrefix));\r\n if (local != null) {\r\n return local;\r\n }\r\n }\r\n\r\n return null;\r\n }\r\n\r\n protected addQuickFilter<TWidget extends Widget<any>, TOptions>(opt: QuickFilter<TWidget, TOptions>): TWidget {\r\n return this.ensureQuickFilterBar().add(opt);\r\n }\r\n\r\n protected addDateRangeFilter(field: string, title?: string): Serenity.DateEditor {\r\n return this.ensureQuickFilterBar().addDateRange(field, title);\r\n }\r\n\r\n protected dateRangeQuickFilter(field: string, title?: string) {\r\n return QuickFilterBar.dateRange(field, title);\r\n }\r\n\r\n protected addDateTimeRangeFilter(field: string, title?: string) {\r\n return this.ensureQuickFilterBar().addDateTimeRange(field, title);\r\n }\r\n\r\n protected dateTimeRangeQuickFilter(field: string, title?: string) {\r\n return QuickFilterBar.dateTimeRange(field, title);\r\n }\r\n\r\n protected addBooleanFilter(field: string, title?: string, yes?: string, no?: string): SelectEditor {\r\n return this.ensureQuickFilterBar().addBoolean(field, title, yes, no);\r\n }\r\n\r\n protected booleanQuickFilter(field: string, title?: string, yes?: string, no?: string) {\r\n return QuickFilterBar.boolean(field, title, yes, no);\r\n }\r\n\r\n protected invokeSubmitHandlers() {\r\n if (this.quickFiltersBar != null) {\r\n this.quickFiltersBar.onSubmit(this.view.params);\r\n }\r\n }\r\n\r\n protected quickFilterChange(e: JQueryEventObject) {\r\n this.persistSettings(null);\r\n this.view && (this.view.seekToPage = 1);\r\n this.refresh();\r\n }\r\n\r\n protected getPersistanceStorage(): SettingStorage {\r\n return Serenity.DataGrid.defaultPersistanceStorage;\r\n }\r\n\r\n protected getPersistanceKey(): string {\r\n var key = 'GridSettings:';\r\n var path = window.location.pathname;\r\n if (!Q.isEmptyOrNull(path)) {\r\n key += path.substr(1).split(String.fromCharCode(47)).slice(0, 2).join('/') + ':';\r\n }\r\n\r\n key += (ss as any).getTypeFullName((ss as any).getInstanceType(this));\r\n return key;\r\n }\r\n\r\n protected gridPersistanceFlags(): GridPersistanceFlags {\r\n return {};\r\n }\r\n\r\n protected canShowColumn(column: Slick.Column) {\r\n if (column == null) {\r\n return false;\r\n }\r\n\r\n var item = column.sourceItem;\r\n if (item == null) {\r\n return true;\r\n }\r\n\r\n if (item.filterOnly === true) {\r\n return false;\r\n }\r\n\r\n if (item.readPermission == null) {\r\n return true;\r\n }\r\n\r\n return Q.Authorization.hasPermission(item.readPermission);\r\n }\r\n\r\n protected getPersistedSettings(): PersistedGridSettings {\r\n var storage = this.getPersistanceStorage();\r\n if (storage == null)\r\n return null;\r\n\r\n var json = Q.trimToNull(storage.getItem(this.getPersistanceKey()));\r\n if (json != null && Q.startsWith(json, '{') && Q.endsWith(json, '}'))\r\n return JSON.parse(json);\r\n\r\n return null;\r\n }\r\n\r\n protected restoreSettings(settings?: PersistedGridSettings, flags?: GridPersistanceFlags): void {\r\n if (!this.slickGrid)\r\n return;\r\n\r\n if (settings == null) {\r\n settings = this.getPersistedSettings();\r\n if (settings == null)\r\n return;\r\n }\r\n\r\n var columns = this.slickGrid.getColumns();\r\n var colById: Q.Dictionary<Slick.Column> = null;\r\n var updateColById = function(cl: Slick.Column[]) {\r\n colById = {};\r\n for (var $t1 = 0; $t1 < cl.length; $t1++) {\r\n var c = cl[$t1];\r\n colById[c.id] = c;\r\n }\r\n };\r\n\r\n this.view.beginUpdate();\r\n this.restoringSettings++;\r\n try {\r\n flags = flags || this.gridPersistanceFlags();\r\n if (settings.columns != null) {\r\n if (flags.columnVisibility !== false) {\r\n var visible = {};\r\n updateColById(this.allColumns);\r\n var newColumns = [];\r\n for (var $t2 = 0; $t2 < settings.columns.length; $t2++) {\r\n var x = settings.columns[$t2];\r\n if (x.id != null && x.visible === true) {\r\n var column = colById[x.id];\r\n if (this.canShowColumn(column)) {\r\n column.visible = true;\r\n newColumns.push(column);\r\n delete colById[x.id];\r\n }\r\n }\r\n }\r\n for (var $t3 = 0; $t3 < this.allColumns.length; $t3++) {\r\n var c1 = this.allColumns[$t3];\r\n if (colById[c1.id] != null) {\r\n c1.visible = false;\r\n newColumns.push(c1);\r\n }\r\n }\r\n this.allColumns = newColumns;\r\n columns = this.allColumns.filter(function (x1) {\r\n return x1.visible === true;\r\n });\r\n }\r\n if (flags.columnWidths !== false) {\r\n updateColById(columns);\r\n for (var $t4 = 0; $t4 < settings.columns.length; $t4++) {\r\n var x2 = settings.columns[$t4];\r\n if (x2.id != null && x2.width != null && x2.width !== 0) {\r\n var column1 = colById[x2.id];\r\n if (column1 != null) {\r\n column1.width = x2.width;\r\n }\r\n }\r\n }\r\n }\r\n\r\n if (flags.sortColumns !== false) {\r\n updateColById(columns);\r\n var list = [];\r\n var sortColumns = settings.columns.filter(function (x3) {\r\n return x3.id != null && Q.coalesce(x3.sort, 0) !== 0;\r\n });\r\n\r\n sortColumns.sort(function (a, b) {\r\n return a.sort - b.sort;\r\n });\r\n\r\n for (var $t5 = 0; $t5 < sortColumns.length; $t5++) {\r\n var x4 = sortColumns[$t5];\r\n var column2 = colById[x4.id];\r\n if (column2 != null) {\r\n list.push({\r\n columnId: x4.id,\r\n sortAsc: x4.sort > 0\r\n });\r\n }\r\n }\r\n this.view.sortBy = list.map(function (x5) {\r\n return x5.columnId + ((x5.sortAsc === false) ? ' DESC' : '');\r\n });\r\n this.slickGrid.setSortColumns(list);\r\n }\r\n this.slickGrid.setColumns(columns);\r\n this.slickGrid.invalidate();\r\n }\r\n\r\n if (settings.filterItems != null &&\r\n flags.filterItems !== false &&\r\n this.filterBar != null &&\r\n this.filterBar.get_store() != null) {\r\n (ss as any).clear(this.filterBar.get_store().get_items());\r\n (ss as any).arrayAddRange(this.filterBar.get_store().get_items(), settings.filterItems);\r\n this.filterBar.get_store().raiseChanged();\r\n }\r\n\r\n if (settings.includeDeleted != null &&\r\n flags.includeDeleted !== false) {\r\n var includeDeletedToggle = this.element.find('.s-IncludeDeletedToggle');\r\n if (!!settings.includeDeleted !== includeDeletedToggle.hasClass('pressed')) {\r\n includeDeletedToggle.children('a').click();\r\n }\r\n }\r\n\r\n if (settings.quickFilters != null &&\r\n flags.quickFilters !== false &&\r\n this.quickFiltersDiv != null &&\r\n this.quickFiltersDiv.length > 0) {\r\n this.quickFiltersDiv.find('.quick-filter-item').each((i, e) => {\r\n var field = $(e).data('qffield');\r\n\r\n if (Q.isEmptyOrNull(field)) {\r\n return;\r\n }\r\n\r\n var widget = $('#' + this.uniqueName + '_QuickFilter_' + field).tryGetWidget(Widget);\r\n if (widget == null) {\r\n return;\r\n }\r\n\r\n var state = settings.quickFilters[field];\r\n var loadState = $(e).data('qfloadstate');\r\n if (loadState != null) {\r\n loadState(widget, state);\r\n }\r\n else {\r\n Serenity.EditorUtils.setValue(widget, state);\r\n }\r\n });\r\n }\r\n\r\n if (flags.quickSearch === true && (settings.quickSearchField != null || settings.quickSearchText != null)) {\r\n var qsInput = this.toolbar.element.find('.s-QuickSearchInput').first();\r\n if (qsInput.length > 0) {\r\n var qsWidget = qsInput.tryGetWidget(Serenity.QuickSearchInput);\r\n if (qsWidget != null) {\r\n this.view.populateLock();\r\n try {\r\n qsWidget.element.addClass('ignore-change');\r\n try {\r\n if (settings.quickSearchField != null) {\r\n qsWidget.set_field(settings.quickSearchField);\r\n }\r\n if (settings.quickSearchText != null &&\r\n Q.trimToNull(settings.quickSearchText) !== Q.trimToNull(qsWidget.element.val())) {\r\n qsWidget.element.val(settings.quickSearchText);\r\n }\r\n }\r\n finally {\r\n qsWidget.element.removeClass('ignore-change');\r\n qsWidget.element.triggerHandler('execute-search');\r\n }\r\n }\r\n finally {\r\n this.view.populateUnlock();\r\n }\r\n }\r\n }\r\n }\r\n }\r\n finally {\r\n this.restoringSettings--;\r\n this.view.endUpdate();\r\n }\r\n }\r\n\r\n protected persistSettings(flags?: GridPersistanceFlags): void {\r\n var storage = this.getPersistanceStorage();\r\n if (!storage) {\r\n return;\r\n }\r\n\r\n var settings = this.getCurrentSettings(flags);\r\n storage.setItem(this.getPersistanceKey(), $.toJSON(settings));\r\n }\r\n\r\n protected getCurrentSettings(flags?: GridPersistanceFlags) {\r\n flags = flags || this.gridPersistanceFlags();\r\n var settings: PersistedGridSettings = {};\r\n if (flags.columnVisibility !== false || flags.columnWidths !== false || flags.sortColumns !== false) {\r\n settings.columns = [];\r\n var sortColumns = this.slickGrid.getSortColumns();\r\n var $t1 = this.slickGrid.getColumns();\r\n for (var $t2 = 0; $t2 < $t1.length; $t2++) {\r\n var column = { $: $t1[$t2] };\r\n var p: PersistedGridColumn = {\r\n id: column.$.id\r\n };\r\n\r\n if (flags.columnVisibility !== false) {\r\n p.visible = true;\r\n }\r\n if (flags.columnWidths !== false) {\r\n p.width = column.$.width;\r\n }\r\n\r\n if (flags.sortColumns !== false) {\r\n var sort = Q.indexOf(sortColumns, (ss as any).mkdel({ column: column }, function(x: Slick.ColumnSort) {\r\n return x.columnId === this.column.$.id;\r\n }));\r\n\r\n p.sort = ((sort >= 0) ? ((sortColumns[sort].sortAsc !== false) ? (sort + 1) : (-sort - 1)) : 0);\r\n }\r\n settings.columns.push(p);\r\n }\r\n }\r\n\r\n if (flags.includeDeleted !== false) {\r\n settings.includeDeleted = this.element.find('.s-IncludeDeletedToggle').hasClass('pressed');\r\n }\r\n\r\n if (flags.filterItems !== false && (this.filterBar != null) && (this.filterBar.get_store() != null)) {\r\n settings.filterItems = this.filterBar.get_store().get_items().slice();\r\n }\r\n\r\n if (flags.quickSearch === true) {\r\n var qsInput = this.toolbar.element.find('.s-QuickSearchInput').first();\r\n if (qsInput.length > 0) {\r\n var qsWidget = qsInput.tryGetWidget(Serenity.QuickSearchInput);\r\n if (qsWidget != null) {\r\n settings.quickSearchField = qsWidget.get_field();\r\n settings.quickSearchText = qsWidget.element.val();\r\n }\r\n }\r\n }\r\n\r\n if (flags.quickFilters !== false && (this.quickFiltersDiv != null) && this.quickFiltersDiv.length > 0) {\r\n settings.quickFilters = {};\r\n this.quickFiltersDiv.find('.quick-filter-item').each((i, e) => {\r\n var field = $(e).data('qffield');\r\n if (Q.isEmptyOrNull(field)) {\r\n return;\r\n }\r\n\r\n var widget = $('#' + this.uniqueName + '_QuickFilter_' + field).tryGetWidget(Widget);\r\n if (widget == null) {\r\n return;\r\n }\r\n\r\n var saveState = $(e).data('qfsavestate');\r\n var state = (saveState != null) ? saveState(widget) : Serenity.EditorUtils.getValue(widget);\r\n settings.quickFilters[field] = state;\r\n if (flags.quickFilterText === true && $(e).hasClass('quick-filter-active')) {\r\n\r\n var getDisplayText = $(e).data('qfdisplaytext');\r\n var filterLabel = $(e).find('.quick-filter-label').text();\r\n\r\n var displayText;\r\n if (getDisplayText != null) {\r\n displayText = getDisplayText(widget, filterLabel);\r\n }\r\n else {\r\n displayText = filterLabel + ' = ' + Serenity.EditorUtils.getDisplayText(widget);\r\n }\r\n\r\n if (!Q.isEmptyOrNull(displayText)) {\r\n if (!Q.isEmptyOrNull(settings.quickFilterText)) {\r\n settings.quickFilterText += ' ' + Q.coalesce(Q.tryGetText('Controls.FilterPanel.And'), 'and') + ' ';\r\n settings.quickFilterText += displayText;\r\n }\r\n else {\r\n settings.quickFilterText = displayText;\r\n }\r\n }\r\n }\r\n });\r\n }\r\n return settings;\r\n }\r\n\r\n getElement(): JQuery {\r\n return this.element;\r\n }\r\n\r\n getGrid(): Slick.Grid {\r\n return this.slickGrid;\r\n }\r\n\r\n getView(): Slick.RemoteView<TItem> {\r\n return this.view;\r\n }\r\n\r\n getFilterStore(): FilterStore {\r\n return (this.filterBar == null) ? null : this.filterBar.get_store();\r\n }\r\n }\r\n}\r\n","namespace Serenity {\r\n\r\n @Decorators.registerClass('Serenity.EntityGrid')\r\n export class EntityGrid<TItem, TOptions> extends DataGrid<TItem, TOptions> {\r\n\r\n constructor(container: JQuery, options?: TOptions) {\r\n super(container, options);\r\n\r\n this.element.addClass('route-handler')\r\n .on('handleroute.' + this.uniqueName, (e: JQueryEventObject, arg: any) => {\r\n if (!!arg.handled)\r\n return;\r\n\r\n if (!!(arg.route === 'new')) {\r\n arg.handled = true;\r\n this.addButtonClick();\r\n return;\r\n }\r\n\r\n var parts = arg.route.split('/');\r\n if (!!(parts.length === 2 && parts[0] === 'edit')) {\r\n arg.handled = true;\r\n this.editItem(parts[1]);\r\n return;\r\n }\r\n\r\n if (!!(parts.length === 2 && parts[1] === 'new')) {\r\n arg.handled = true;\r\n this.editItemOfType((ss as any).cast(parts[0], String), null);\r\n return;\r\n }\r\n\r\n if (!!(parts.length === 3 && parts[1] === 'edit')) {\r\n arg.handled = true;\r\n this.editItemOfType((ss as any).cast(parts[0], String), parts[2]);\r\n }\r\n });\r\n }\r\n\r\n protected usePager(): boolean {\r\n return true;\r\n }\r\n\r\n protected createToolbarExtensions(): void {\r\n this.createIncludeDeletedButton();\r\n this.createQuickSearchInput();\r\n }\r\n\r\n protected getInitialTitle(): string {\r\n return this.getDisplayName();\r\n }\r\n\r\n protected getLocalTextPrefix(): string {\r\n var result = super.getLocalTextPrefix();\r\n\r\n if (Q.isEmptyOrNull(result)) {\r\n return this.getEntityType();\r\n }\r\n\r\n return result;\r\n }\r\n\r\n private entityType: string;\r\n\r\n protected getEntityType(): string {\r\n if (this.entityType != null)\r\n return this.entityType;\r\n\r\n var attr = this.attrs(EntityTypeAttribute);\r\n\r\n if (attr.length === 1) {\r\n return (this.entityType = attr[0].value);\r\n }\r\n\r\n var name = (ss as any).getTypeFullName((ss as any).getInstanceType(this));\r\n\r\n var px = name.indexOf('.');\r\n if (px >= 0) {\r\n name = name.substring(px + 1);\r\n }\r\n\r\n if (Q.endsWith(name, 'Grid')) {\r\n name = name.substr(0, name.length - 4);\r\n }\r\n else if (Q.endsWith(name, 'SubGrid')) {\r\n name = name.substr(0, name.length - 7);\r\n }\r\n\r\n this.entityType = name;\r\n\r\n return this.entityType;\r\n }\r\n\r\n private displayName: string;\r\n\r\n protected getDisplayName(): string {\r\n if (this.displayName != null)\r\n return this.displayName;\r\n\r\n var attr = this.attrs(System.ComponentModel.DisplayNameAttribute);\r\n if (attr.length >= 1) {\r\n this.displayName = attr[0].displayName;\r\n this.displayName = Q.LT.getDefault(this.displayName, this.displayName);\r\n }\r\n else {\r\n this.displayName = Q.tryGetText(this.getLocalTextDbPrefix() + 'EntityPlural');\r\n if (this.displayName == null)\r\n this.displayName = this.getEntityType();\r\n }\r\n\r\n return this.displayName;\r\n }\r\n\r\n private itemName: string;\r\n\r\n protected getItemName(): string {\r\n if (this.itemName != null)\r\n return this.itemName;\r\n\r\n var attr = this.attrs(ItemNameAttribute);\r\n if (attr.length >= 1) {\r\n this.itemName = attr[0].value;\r\n this.itemName = Q.LT.getDefault(this.itemName, this.itemName);\r\n }\r\n else {\r\n this.itemName = Q.tryGetText(this.getLocalTextDbPrefix() + 'EntitySingular');\r\n if (this.itemName == null)\r\n this.itemName = this.getEntityType();\r\n }\r\n\r\n return this.itemName;\r\n }\r\n\r\n protected getAddButtonCaption(): string {\r\n return Q.format(Q.text('Controls.EntityGrid.NewButton'), this.getItemName());\r\n }\r\n\r\n protected getButtons(): ToolButton[] {\r\n\r\n var buttons: ToolButton[] = [];\r\n buttons.push({\r\n title: this.getAddButtonCaption(),\r\n cssClass: 'add-button',\r\n hotkey: 'alt+n',\r\n onClick: () => {\r\n this.addButtonClick();\r\n },\r\n disabled: () => !this.hasInsertPermission() || this.readOnly\r\n });\r\n\r\n buttons.push(this.newRefreshButton(true));\r\n buttons.push(Serenity.ColumnPickerDialog.createToolButton(this as any));\r\n\r\n return buttons;\r\n }\r\n\r\n protected newRefreshButton(noText?: boolean): ToolButton {\r\n return {\r\n title: (noText ? null : Q.text('Controls.EntityGrid.RefreshButton')),\r\n hint: (noText ? Q.text('Controls.EntityGrid.RefreshButton') : null),\r\n cssClass: 'refresh-button',\r\n onClick: () => {\r\n this.refresh();\r\n }\r\n };\r\n }\r\n\r\n protected addButtonClick(): void {\r\n this.editItem(new Object());\r\n }\r\n\r\n protected editItem(entityOrId: any): void {\r\n this.createEntityDialog(this.getItemType(), dlg => {\r\n var dialog = (ss as any).safeCast(dlg, Serenity['IEditDialog']);\r\n if (dialog != null) {\r\n dialog.load(entityOrId, () => {\r\n dialog.dialogOpen(this.openDialogsAsPanel);\r\n });\r\n\r\n return;\r\n }\r\n\r\n throw new (ss as any).InvalidOperationException(\r\n Q.format(\"{0} doesn't implement IEditDialog!\",\r\n (ss as any).getTypeFullName((ss as any).getInstanceType(dlg))));\r\n });\r\n }\r\n\r\n protected editItemOfType(itemType: string, entityOrId: any): void {\r\n\r\n if (itemType === this.getItemType()) {\r\n this.editItem(entityOrId);\r\n return;\r\n }\r\n\r\n this.createEntityDialog(itemType, dlg => {\r\n var dialog = (ss as any).safeCast(dlg, Serenity['IEditDialog']);\r\n if (dialog != null) {\r\n dialog.load(entityOrId, () =>\r\n dialog.dialogOpen(this.openDialogsAsPanel));\r\n return;\r\n }\r\n\r\n throw new (ss as any).InvalidOperationException(\r\n Q.format(\"{0} doesn't implement IEditDialog!\",\r\n (ss as any).getTypeFullName((ss as any).getInstanceType(dlg))));\r\n });\r\n }\r\n\r\n private service: string;\r\n\r\n protected getService(): string {\r\n if (this.service != null)\r\n return this.service;\r\n\r\n var attr = this.attrs(ServiceAttribute);\r\n if (attr.length >= 1)\r\n this.service = attr[0].value;\r\n else\r\n this.service = Q.replaceAll(this.getEntityType(), '.', '/');\r\n\r\n return this.service;\r\n }\r\n\r\n protected getViewOptions(): Slick.RemoteViewOptions {\r\n var opt = super.getViewOptions();\r\n opt.url = Q.resolveUrl('~/Services/' + this.getService() + '/List');\r\n return opt;\r\n }\r\n\r\n protected getItemType() {\r\n return this.getEntityType();\r\n }\r\n\r\n protected routeDialog(itemType: string, dialog: Widget<any>) {\r\n Q.Router.dialog(this.element, dialog.element, () => {\r\n var hash = '';\r\n\r\n if (itemType !== this.getItemType())\r\n hash = itemType + '/';\r\n\r\n if (!!(dialog != null && (dialog as any).entityId != null))\r\n hash += 'edit/' + (dialog as any).entityId.toString();\r\n else\r\n hash += 'new';\r\n\r\n return hash;\r\n });\r\n }\r\n\r\n protected getInsertPermission(): string {\r\n return null;\r\n }\r\n\r\n protected hasInsertPermission(): boolean {\r\n var insertPermission = this.getInsertPermission();\r\n return insertPermission == null || Q.Authorization.hasPermission(this.getInsertPermission());\r\n }\r\n\r\n protected transferDialogReadOnly(dialog: Widget<any>) {\r\n if (this.readOnly)\r\n Serenity.EditorUtils.setReadOnly(dialog, true);\r\n }\r\n\r\n protected initDialog(dialog: Widget<any>): void {\r\n Serenity.SubDialogHelper.bindToDataChange(dialog, this, (e, dci) => {\r\n this.subDialogDataChange();\r\n }, true);\r\n\r\n this.transferDialogReadOnly(dialog);\r\n this.routeDialog(this.getItemType(), dialog);\r\n }\r\n\r\n protected initEntityDialog(itemType: string, dialog: Widget<any>): void {\r\n if (itemType === this.getItemType()) {\r\n this.initDialog(dialog);\r\n return;\r\n }\r\n\r\n Serenity.SubDialogHelper.bindToDataChange(dialog, this, (e, dci) => {\r\n this.subDialogDataChange();\r\n }, true);\r\n\r\n this.transferDialogReadOnly(dialog);\r\n this.routeDialog(itemType, dialog);\r\n }\r\n\r\n protected createEntityDialog(itemType: string, callback?: (dlg: Widget<any>) => void): Widget<any> {\r\n var dialogClass = this.getDialogTypeFor(itemType);\r\n var dialog = Serenity.Widget.create({\r\n type: dialogClass,\r\n options: this.getDialogOptionsFor(itemType),\r\n init: d => {\r\n this.initEntityDialog(itemType, d);\r\n callback && callback(d);\r\n }\r\n });\r\n\r\n return dialog;\r\n }\r\n\r\n protected getDialogOptions(): JQueryUI.DialogOptions {\r\n return {};\r\n }\r\n\r\n protected getDialogOptionsFor(itemType: string): JQueryUI.DialogOptions {\r\n if (itemType === this.getItemType())\r\n return this.getDialogOptions();\r\n\r\n return {};\r\n }\r\n\r\n protected getDialogTypeFor(itemType: string): { new(...args: any[]): Widget<any> } {\r\n\r\n if (itemType === this.getItemType()) {\r\n return this.getDialogType();\r\n }\r\n\r\n return Serenity.DialogTypeRegistry.get(itemType) as any;\r\n }\r\n\r\n private dialogType: WidgetDialogClass;\r\n\r\n protected getDialogType(): { new(...args: any[]): Widget<any> } {\r\n\r\n if (this.dialogType != null)\r\n return this.dialogType;\r\n\r\n var attr = this.attrs(DialogTypeAttribute);\r\n if (attr.length >= 1)\r\n this.dialogType = attr[0].value;\r\n else\r\n this.dialogType = Serenity.DialogTypeRegistry.get(this.getEntityType());\r\n\r\n return this.dialogType;\r\n }\r\n }\r\n}","namespace Serenity {\r\n\r\n @Serenity.Decorators.registerEditor('Serenity.CheckTreeEditor', [IGetEditValue, ISetEditValue, IReadOnly])\r\n @Serenity.Decorators.element(\"<div/>\")\r\n export class CheckTreeEditor<TItem extends CheckTreeItem<any>, TOptions> extends DataGrid<TItem, TOptions>\r\n implements IGetEditValue, ISetEditValue, IReadOnly {\r\n\r\n private byId: Q.Dictionary<TItem>;\r\n\r\n constructor(div: JQuery, opt?: TOptions) {\r\n super(div, opt);\r\n\r\n div.addClass('s-CheckTreeEditor');\r\n this.updateItems();\r\n }\r\n\r\n protected getIdProperty() {\r\n return \"id\";\r\n }\r\n\r\n protected getTreeItems(): TItem[] {\r\n return [];\r\n }\r\n\r\n protected updateItems(): void {\r\n var items = this.getTreeItems();\r\n var itemById = {};\r\n for (var i = 0; i < items.length; i++) {\r\n var item = items[i];\r\n item.children = [];\r\n if (!Q.isEmptyOrNull(item.id)) {\r\n itemById[item.id] = item;\r\n }\r\n if (!Q.isEmptyOrNull(item.parentId)) {\r\n var parent = itemById[item.parentId];\r\n if (parent != null) {\r\n parent.children.push(item);\r\n }\r\n }\r\n }\r\n this.view.addData({ Entities: items, Skip: 0, Take: 0, TotalCount: items.length });\r\n this.updateSelectAll();\r\n this.updateFlags();\r\n }\r\n\r\n getEditValue(property: PropertyItem, target: any): void {\r\n if (this.getDelimited())\r\n target[property.name] = this.get_value().join(\",\");\r\n else\r\n target[property.name] = this.get_value();\r\n }\r\n\r\n setEditValue(source: any, property: PropertyItem): void {\r\n var value = source[property.name];\r\n this.set_value(value);\r\n }\r\n\r\n protected getButtons(): ToolButton[] {\r\n var selectAllText = this.getSelectAllText();\r\n if (Q.isEmptyOrNull(selectAllText)) {\r\n return null;\r\n }\r\n\r\n var self = this;\r\n var buttons: ToolButton[] = [];\r\n buttons.push(Serenity.GridSelectAllButtonHelper.define(function () {\r\n return self;\r\n }, function (x) {\r\n return x.id;\r\n }, function (x1) {\r\n return x1.isSelected;\r\n }, (x2, v) => {\r\n if (x2.isSelected !== v) {\r\n x2.isSelected = v;\r\n this.itemSelectedChanged(x2);\r\n }\r\n }, null, () => {\r\n this.updateFlags();\r\n }));\r\n\r\n return buttons;\r\n }\r\n\r\n protected itemSelectedChanged(item: TItem): void {\r\n }\r\n\r\n protected getSelectAllText(): string {\r\n return Q.coalesce(Q.tryGetText('Controls.CheckTreeEditor.SelectAll'), 'Select All');\r\n }\r\n\r\n protected isThreeStateHierarchy(): boolean {\r\n return false;\r\n }\r\n\r\n protected createSlickGrid(): Slick.Grid {\r\n this.element.addClass('slick-no-cell-border').addClass('slick-no-odd-even');\r\n var result = super.createSlickGrid();\r\n this.element.addClass('slick-hide-header');\r\n result.resizeCanvas();\r\n return result;\r\n }\r\n\r\n protected onViewFilter(item: TItem): boolean {\r\n if (!super.onViewFilter(item)) {\r\n return false;\r\n }\r\n\r\n var items = this.view.getItems();\r\n var self = this;\r\n return Serenity.SlickTreeHelper.filterCustom(item, function (x) {\r\n if (x.parentId == null) {\r\n return null;\r\n }\r\n\r\n if (self.byId == null) {\r\n self.byId = {};\r\n for (var i = 0; i < items.length; i++) {\r\n var o = items[i];\r\n if (o.id != null) {\r\n self.byId[o.id] = o;\r\n }\r\n }\r\n }\r\n\r\n return self.byId[x.parentId];\r\n });\r\n }\r\n\r\n protected getInitialCollapse(): boolean {\r\n return false;\r\n }\r\n\r\n protected onViewProcessData(response: ListResponse<TItem>): ListResponse<TItem> {\r\n response = super.onViewProcessData(response);\r\n this.byId = null;\r\n Serenity.SlickTreeHelper.setIndents(response.Entities, function (x) {\r\n return x.id;\r\n }, function (x1) {\r\n return x1.parentId;\r\n }, this.getInitialCollapse());\r\n return response;\r\n }\r\n\r\n protected onClick(e: JQueryEventObject, row: number, cell: number): void {\r\n super.onClick(e, row, cell);\r\n\r\n if (!e.isDefaultPrevented()) {\r\n Serenity.SlickTreeHelper.toggleClick(e, row, cell, this.view, function (x) {\r\n return x.id;\r\n });\r\n }\r\n\r\n if (e.isDefaultPrevented()) {\r\n return;\r\n }\r\n\r\n var target = $(e.target);\r\n if (target.hasClass('check-box')) {\r\n e.preventDefault();\r\n\r\n if (this._readOnly)\r\n return;\r\n\r\n var checkedOrPartial = target.hasClass('checked') || target.hasClass('partial');\r\n var item = this.itemAt(row);\r\n var anyChanged = item.isSelected !== !checkedOrPartial;\r\n this.view.beginUpdate();\r\n try {\r\n if (item.isSelected !== !checkedOrPartial) {\r\n item.isSelected = !checkedOrPartial;\r\n this.view.updateItem(item.id, item);\r\n this.itemSelectedChanged(item);\r\n }\r\n anyChanged = this.setAllSubTreeSelected(item, item.isSelected) || anyChanged;\r\n this.updateSelectAll();\r\n this.updateFlags();\r\n }\r\n finally {\r\n this.view.endUpdate();\r\n }\r\n if (anyChanged) {\r\n this.element.triggerHandler('change');\r\n }\r\n }\r\n }\r\n\r\n protected updateSelectAll(): void {\r\n Serenity.GridSelectAllButtonHelper.update(this, function (x) {\r\n return x.isSelected;\r\n });\r\n }\r\n\r\n protected updateFlags(): void {\r\n var view = this.view;\r\n var items = view.getItems();\r\n var threeState = this.isThreeStateHierarchy();\r\n if (!threeState) {\r\n return;\r\n }\r\n view.beginUpdate();\r\n try {\r\n for (var i = 0; i < items.length; i++) {\r\n var item = items[i];\r\n if (item.children == null || item.children.length === 0) {\r\n var allsel = this.getDescendantsSelected(item);\r\n if (allsel !== item.isAllDescendantsSelected) {\r\n item.isAllDescendantsSelected = allsel;\r\n view.updateItem(item.id, item);\r\n }\r\n continue;\r\n }\r\n var allSelected = this.allDescendantsSelected(item);\r\n var selected = allSelected || this.anyDescendantsSelected(item);\r\n if (allSelected !== item.isAllDescendantsSelected || selected !== item.isSelected) {\r\n var selectedChange = item.isSelected !== selected;\r\n item.isAllDescendantsSelected = allSelected;\r\n item.isSelected = selected;\r\n view.updateItem(item.id, item);\r\n if (selectedChange) {\r\n this.itemSelectedChanged(item);\r\n }\r\n }\r\n }\r\n }\r\n finally {\r\n view.endUpdate();\r\n }\r\n }\r\n\r\n protected getDescendantsSelected(item: TItem): boolean {\r\n return true;\r\n }\r\n\r\n protected setAllSubTreeSelected(item: TItem, selected: boolean): boolean {\r\n var result = false;\r\n for (var i = 0; i < item.children.length; i++) {\r\n var sub = item.children[i];\r\n if (sub.isSelected !== selected) {\r\n result = true;\r\n sub.isSelected = selected;\r\n this.view.updateItem(sub.id, sub as TItem);\r\n this.itemSelectedChanged(sub as TItem);\r\n }\r\n if (sub.children.length > 0) {\r\n result = this.setAllSubTreeSelected(sub as TItem, selected) || result;\r\n }\r\n }\r\n return result;\r\n }\r\n\r\n protected allItemsSelected() {\r\n for (var i = 0; i < this.rowCount(); i++) {\r\n var row = this.itemAt(i);\r\n if (!row.isSelected) {\r\n return false;\r\n }\r\n }\r\n\r\n return this.rowCount() > 0;\r\n }\r\n\r\n protected allDescendantsSelected(item: TItem): boolean {\r\n if (item.children.length > 0) {\r\n for (var i = 0; i < item.children.length; i++) {\r\n var sub = item.children[i];\r\n if (!sub.isSelected) {\r\n return false;\r\n }\r\n\r\n if (!this.allDescendantsSelected(sub as TItem)) {\r\n return false;\r\n }\r\n }\r\n }\r\n return true;\r\n }\r\n\r\n protected getDelimited() {\r\n return !!!!this.options['delimited'];\r\n }\r\n\r\n protected anyDescendantsSelected(item: TItem): boolean {\r\n if (item.children.length > 0) {\r\n for (var i = 0; i < item.children.length; i++) {\r\n var sub = item.children[i];\r\n if (sub.isSelected) {\r\n return true;\r\n }\r\n if (this.anyDescendantsSelected(sub as TItem)) {\r\n return true;\r\n }\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n protected getColumns(): Slick.Column[] {\r\n var self = this;\r\n var columns = [];\r\n columns.push({\r\n field: 'text', name: 'Kayıt', width: 80, format: Serenity.SlickFormatting.treeToggle(function () {\r\n return self.view;\r\n }, function (x) {\r\n return x.id;\r\n }, ctx => {\r\n var cls = 'check-box';\r\n var item = ctx.item;\r\n if (item.hideCheckBox) {\r\n return this.getItemText(ctx);\r\n }\r\n var threeState = this.isThreeStateHierarchy();\r\n if (item.isSelected) {\r\n if (threeState && !item.isAllDescendantsSelected) {\r\n cls += ' partial';\r\n }\r\n else {\r\n cls += ' checked';\r\n }\r\n }\r\n if (this._readOnly)\r\n cls += ' readonly';\r\n return '<span class=\"' + cls + '\"></span>' + this.getItemText(ctx);\r\n })\r\n });\r\n return columns;\r\n }\r\n\r\n protected getItemText(ctx: Slick.FormatterContext): string {\r\n return Q.htmlEncode(ctx.value);\r\n }\r\n\r\n protected getSlickOptions(): Slick.GridOptions {\r\n var opt = super.getSlickOptions();\r\n opt.forceFitColumns = true;\r\n return opt;\r\n }\r\n\r\n protected sortItems(): void {\r\n if (!this.moveSelectedUp()) {\r\n return;\r\n }\r\n var oldIndexes = {};\r\n var list = this.view.getItems();\r\n var i = 0;\r\n for (var $t1 = 0; $t1 < list.length; $t1++) {\r\n var x = list[$t1];\r\n oldIndexes[x.id] = i++;\r\n }\r\n list.sort(function (x1, y) {\r\n if (x1.isSelected && !y.isSelected) {\r\n return -1;\r\n }\r\n if (y.isSelected && !x1.isSelected) {\r\n return 1;\r\n }\r\n var c = Q.turkishLocaleCompare(x1.text, y.text);\r\n if (c !== 0) {\r\n return c;\r\n }\r\n return (ss as any).compare(oldIndexes[x1.id], oldIndexes[y.id]);\r\n });\r\n\r\n this.view.setItems(list, true);\r\n }\r\n\r\n protected moveSelectedUp(): boolean {\r\n return false;\r\n }\r\n\r\n private _readOnly: boolean;\r\n\r\n public get_readOnly() {\r\n return this._readOnly;\r\n }\r\n\r\n public set_readOnly(value: boolean) {\r\n if (!!this._readOnly != !!value) {\r\n this._readOnly = !!value;\r\n this.view.refresh();\r\n }\r\n }\r\n\r\n private get_value(): string[] {\r\n var list = [];\r\n var items = this.view.getItems();\r\n for (var i = 0; i < items.length; i++) {\r\n if (items[i].isSelected) {\r\n list.push(items[i].id);\r\n }\r\n }\r\n return list;\r\n }\r\n\r\n public get value() {\r\n return this.get_value();\r\n }\r\n\r\n private set_value(value: string | string[]) {\r\n\r\n var selected = {};\r\n if (value != null) {\r\n if (typeof value == \"string\") {\r\n value = value.split(',')\r\n .map(x => Q.trimToNull(x))\r\n .filter(x => x != null);\r\n }\r\n\r\n for (var i = 0; i < value.length; i++) {\r\n selected[value[i]] = true;\r\n }\r\n }\r\n\r\n this.view.beginUpdate();\r\n try {\r\n var items = this.view.getItems();\r\n for (var i1 = 0; i1 < items.length; i1++) {\r\n var item = items[i1];\r\n var select = selected[item.id];\r\n if (select !== item.isSelected) {\r\n item.isSelected = select;\r\n this.view.updateItem(item.id, item);\r\n }\r\n }\r\n this.updateSelectAll();\r\n this.updateFlags();\r\n this.sortItems();\r\n }\r\n finally {\r\n this.view.endUpdate();\r\n }\r\n }\r\n\r\n public set value(v: string[]) {\r\n this.set_value(v);\r\n }\r\n }\r\n\r\n export interface CheckLookupEditorOptions {\r\n lookupKey?: string;\r\n checkedOnTop?: boolean;\r\n showSelectAll?: boolean;\r\n hideSearch?: boolean;\r\n delimited?: boolean;\r\n cascadeFrom?: string;\r\n cascadeField?: string;\r\n cascadeValue?: any;\r\n filterField?: string;\r\n filterValue?: any;\r\n }\r\n\r\n @Decorators.registerEditor(\"Serenity.CheckLookupEditor\")\r\n export class CheckLookupEditor<TItem = any> extends CheckTreeEditor<Serenity.CheckTreeItem<TItem>, CheckLookupEditorOptions> {\r\n\r\n private searchText: string;\r\n private enableUpdateItems: boolean;\r\n\r\n constructor(div: JQuery, options: CheckLookupEditorOptions) {\r\n super(div, options);\r\n\r\n this.enableUpdateItems = true;\r\n this.setCascadeFrom(this.options.cascadeFrom);\r\n this.updateItems();\r\n Q.ScriptData.bindToChange('Lookup.' + this.getLookupKey(), this.uniqueName,\r\n () => this.updateItems());\r\n }\r\n\r\n protected updateItems() {\r\n if (this.enableUpdateItems)\r\n super.updateItems();\r\n }\r\n\r\n protected getLookupKey() {\r\n return this.options.lookupKey;\r\n }\r\n\r\n protected getButtons(): Serenity.ToolButton[] {\r\n return Q.coalesce(super.getButtons(), this.options.hideSearch ? null : []);\r\n }\r\n\r\n protected createToolbarExtensions() {\r\n super.createToolbarExtensions();\r\n\r\n Serenity.GridUtils.addQuickSearchInputCustom(this.toolbar.element, (field, text) => {\r\n this.searchText = Select2.util.stripDiacritics(text || '').toUpperCase();\r\n this.view.setItems(this.view.getItems(), true);\r\n });\r\n }\r\n\r\n protected getSelectAllText(): string {\r\n if (!this.options.showSelectAll)\r\n return null;\r\n\r\n return super.getSelectAllText();\r\n }\r\n\r\n protected cascadeItems(items: TItem[]) {\r\n\r\n var val = this.get_cascadeValue();\r\n\r\n if (val == null || val === '') {\r\n\r\n if (!Q.isEmptyOrNull(this.get_cascadeField())) {\r\n return [];\r\n }\r\n\r\n return items;\r\n }\r\n\r\n var key = val.toString();\r\n var fld = this.get_cascadeField();\r\n\r\n return items.filter(x => {\r\n var itemKey = Q.coalesce(x[fld], Serenity.ReflectionUtils.getPropertyValue(x, fld));\r\n return !!(itemKey != null && itemKey.toString() === key);\r\n });\r\n }\r\n\r\n protected filterItems(items: TItem[]) {\r\n var val = this.get_filterValue();\r\n\r\n if (val == null || val === '') {\r\n return items;\r\n }\r\n\r\n var key = val.toString();\r\n var fld = this.get_filterField();\r\n\r\n return items.filter(x => {\r\n var itemKey = Q.coalesce(x[fld], Serenity.ReflectionUtils.getPropertyValue(x, fld));\r\n return !!(itemKey != null && itemKey.toString() === key);\r\n });\r\n }\r\n\r\n protected getLookupItems(lookup: Q.Lookup<TItem>): TItem[] {\r\n return this.filterItems(this.cascadeItems(lookup.items));\r\n }\r\n\r\n protected getTreeItems() {\r\n var lookup = Q.getLookup<TItem>(this.options.lookupKey);\r\n var items = this.getLookupItems(lookup);\r\n return items.map(item => <Serenity.CheckTreeItem<TItem>>{\r\n id: Q.coalesce(item[lookup.idField], \"\").toString(),\r\n text: Q.coalesce(item[lookup.textField], \"\").toString(),\r\n source: item\r\n });\r\n }\r\n\r\n protected onViewFilter(item: CheckTreeItem<TItem>) {\r\n return super.onViewFilter(item) &&\r\n (Q.isEmptyOrNull(this.searchText) ||\r\n Select2.util.stripDiacritics(item.text || '')\r\n .toUpperCase().indexOf(this.searchText) >= 0);\r\n }\r\n\r\n protected moveSelectedUp(): boolean {\r\n return this.options.checkedOnTop;\r\n }\r\n\r\n protected get_cascadeFrom(): string {\r\n return this.options.cascadeFrom;\r\n }\r\n\r\n get cascadeFrom(): string {\r\n return this.get_cascadeFrom();\r\n }\r\n\r\n protected getCascadeFromValue(parent: Serenity.Widget<any>) {\r\n return Serenity.EditorUtils.getValue(parent);\r\n }\r\n\r\n protected cascadeLink: Serenity.CascadedWidgetLink<Widget<any>>;\r\n\r\n protected setCascadeFrom(value: string) {\r\n\r\n if (Q.isEmptyOrNull(value)) {\r\n if (this.cascadeLink != null) {\r\n this.cascadeLink.set_parentID(null);\r\n this.cascadeLink = null;\r\n }\r\n this.options.cascadeFrom = null;\r\n return;\r\n }\r\n\r\n this.cascadeLink = new Serenity.CascadedWidgetLink<Widget<any>>(Widget, this, p => {\r\n this.set_cascadeValue(this.getCascadeFromValue(p));\r\n });\r\n\r\n this.cascadeLink.set_parentID(value);\r\n this.options.cascadeFrom = value;\r\n }\r\n\r\n protected set_cascadeFrom(value: string) {\r\n if (value !== this.options.cascadeFrom) {\r\n this.setCascadeFrom(value);\r\n this.updateItems();\r\n }\r\n }\r\n\r\n set cascadeFrom(value: string) {\r\n this.set_cascadeFrom(value);\r\n }\r\n\r\n protected get_cascadeField() {\r\n return Q.coalesce(this.options.cascadeField, this.options.cascadeFrom);\r\n }\r\n\r\n get cascadeField(): string {\r\n return this.get_cascadeField();\r\n }\r\n\r\n protected set_cascadeField(value: string) {\r\n this.options.cascadeField = value;\r\n }\r\n\r\n set cascadeField(value: string) {\r\n this.set_cascadeField(value);\r\n }\r\n\r\n protected get_cascadeValue(): any {\r\n return this.options.cascadeValue;\r\n }\r\n\r\n get cascadeValue(): any {\r\n return this.get_cascadeValue();\r\n }\r\n\r\n protected set_cascadeValue(value: any) {\r\n if (this.options.cascadeValue !== value) {\r\n this.options.cascadeValue = value;\r\n this.value = [];\r\n this.updateItems();\r\n }\r\n }\r\n\r\n set cascadeValue(value: any) {\r\n this.set_cascadeValue(value);\r\n }\r\n\r\n protected get_filterField() {\r\n return this.options.filterField;\r\n }\r\n\r\n get filterField(): string {\r\n return this.get_filterField();\r\n }\r\n\r\n protected set_filterField(value: string) {\r\n this.options.filterField = value;\r\n }\r\n\r\n set filterField(value: string) {\r\n this.set_filterField(value);\r\n }\r\n\r\n protected get_filterValue(): any {\r\n return this.options.filterValue;\r\n }\r\n\r\n get filterValue(): any {\r\n return this.get_filterValue();\r\n }\r\n\r\n protected set_filterValue(value: any) {\r\n if (this.options.filterValue !== value) {\r\n this.options.filterValue = value;\r\n this.value = null;\r\n this.updateItems();\r\n }\r\n }\r\n\r\n set filterValue(value: any) {\r\n this.set_filterValue(value);\r\n }\r\n }\r\n}","namespace Serenity {\r\n export class TemplatedPanel<TOptions> extends TemplatedWidget<TOptions> {\r\n constructor(container: JQuery, options?: TOptions) {\r\n super(container, options);\r\n\r\n this.initValidator();\r\n this.initTabs();\r\n this.initToolbar();\r\n }\r\n\r\n destroy() {\r\n if (this.tabs) {\r\n this.tabs.tabs('destroy');\r\n this.tabs = null;\r\n }\r\n\r\n\t\t\tif (this.toolbar) {\r\n this.toolbar.destroy();\r\n this.toolbar = null;\r\n }\r\n\r\n\t\t\tif (this.validator) {\r\n this.byId('Form').remove();\r\n this.validator = null;\r\n }\r\n\r\n super.destroy();\r\n }\r\n\r\n protected tabs: JQuery;\r\n protected toolbar: Serenity.Toolbar;\r\n protected validator: JQueryValidation.Validator;\r\n protected isPanel: boolean;\r\n protected responsive: boolean;\r\n\r\n protected arrange(): void {\r\n this.element.find('.require-layout').filter(':visible').each(function (i, e) {\r\n $(e).triggerHandler('layout');\r\n });\r\n }\r\n\r\n protected getToolbarButtons(): ToolButton[] {\r\n return [];\r\n }\r\n\r\n protected getValidatorOptions(): JQueryValidation.ValidationOptions {\r\n return {};\r\n }\r\n\r\n protected initTabs(): void {\r\n var tabsDiv = this.byId('Tabs');\r\n if (tabsDiv.length === 0) {\r\n return;\r\n }\r\n this.tabs = tabsDiv.tabs({});\r\n }\r\n\r\n protected initToolbar(): void {\r\n var toolbarDiv = this.byId('Toolbar');\r\n if (toolbarDiv.length === 0) {\r\n return;\r\n }\r\n var opt = { buttons: this.getToolbarButtons() };\r\n this.toolbar = new Toolbar(toolbarDiv, opt);\r\n }\r\n\r\n protected initValidator(): void {\r\n var form = this.byId('Form');\r\n if (form.length > 0) {\r\n var valOptions = this.getValidatorOptions();\r\n this.validator = form.validate(Q.validateOptions(valOptions));\r\n }\r\n }\r\n\r\n protected resetValidation(): void {\r\n if (this.validator) {\r\n (this.validator as any).resetAll();\r\n }\r\n }\r\n\r\n protected validateForm(): boolean {\r\n return this.validator == null || !!this.validator.form();\r\n }\r\n }\r\n}","namespace Serenity {\r\n\r\n @Decorators.registerClass('Serenity.PropertyPanel')\r\n export class PropertyPanel<TItem, TOptions> extends TemplatedPanel<TOptions> {\r\n\r\n private _entity: TItem;\r\n private _entityId: any;\r\n\r\n constructor(container: JQuery, options?: TOptions) {\r\n super(container, options);\r\n\r\n if (!this.isAsyncWidget()) {\r\n this.initPropertyGrid();\r\n this.loadInitialEntity();\r\n }\r\n }\r\n\r\n destroy() {\r\n if (this.propertyGrid) {\r\n this.propertyGrid.destroy();\r\n this.propertyGrid = null;\r\n }\r\n if (this.validator) {\r\n this.byId('Form').remove();\r\n this.validator = null;\r\n }\r\n super.destroy();\r\n }\r\n\r\n protected initPropertyGrid() {\r\n var pgDiv = this.byId('PropertyGrid');\r\n if (pgDiv.length <= 0) {\r\n return;\r\n }\r\n var pgOptions = this.getPropertyGridOptions();\r\n this.propertyGrid = (new Serenity.PropertyGrid(pgDiv, pgOptions)).init(null);\r\n if (this.element.closest('.ui-Panel').hasClass('s-Flexify')) {\r\n this.propertyGrid.element.children('.categories').flexHeightOnly(1);\r\n }\r\n }\r\n\r\n protected initPropertyGridAsync() {\r\n return Promise.resolve().then(() => {\r\n var pgDiv = this.byId('PropertyGrid');\r\n if (pgDiv.length <= 0) {\r\n return Promise.resolve();\r\n }\r\n return this.getPropertyGridOptionsAsync().then(pgOptions => {\r\n this.propertyGrid = new Serenity.PropertyGrid(pgDiv, pgOptions);\r\n if (this.element.closest('.ui-Panel').hasClass('s-Flexify')) {\r\n this.propertyGrid.element.children('.categories').flexHeightOnly(1);\r\n }\r\n return this.propertyGrid.initialize();\r\n });\r\n });\r\n }\r\n\r\n protected loadInitialEntity(): void {\r\n if (this.propertyGrid) {\r\n this.propertyGrid.load(new Object());\r\n }\r\n }\r\n\r\n protected initializeAsync(): PromiseLike<void> {\r\n return super.initializeAsync()\r\n .then(() => this.initPropertyGridAsync())\r\n .then(() => this.loadInitialEntity());\r\n }\r\n\r\n protected getFormKey(): string {\r\n var attributes = (ss as any).getAttributes(\r\n (ss as any).getInstanceType(this), Serenity.FormKeyAttribute, true);\r\n\r\n if (attributes.length >= 1) {\r\n return attributes[0].value;\r\n }\r\n var name = (ss as any).getTypeFullName((ss as any).getInstanceType(this));\r\n var px = name.indexOf('.');\r\n if (px >= 0) {\r\n name = name.substring(px + 1);\r\n }\r\n if (Q.endsWith(name, 'Panel')) {\r\n name = name.substr(0, name.length - 6);\r\n }\r\n else if (Q.endsWith(name, 'Panel')) {\r\n name = name.substr(0, name.length - 5);\r\n }\r\n return name;\r\n }\r\n\r\n protected getPropertyGridOptions(): PropertyGridOptions {\r\n return {\r\n idPrefix: this.idPrefix,\r\n items: this.getPropertyItems(),\r\n mode: 1,\r\n useCategories: false,\r\n localTextPrefix: 'Forms.' + this.getFormKey() + '.'\r\n };\r\n }\r\n\r\n protected getPropertyGridOptionsAsync(): PromiseLike<PropertyGridOptions> {\r\n return this.getPropertyItemsAsync().then(propertyItems => {\r\n return {\r\n idPrefix: this.idPrefix,\r\n items: propertyItems,\r\n mode: 1,\r\n useCategories: false,\r\n localTextPrefix: 'Forms.' + this.getFormKey() + '.'\r\n };\r\n });\r\n }\r\n\r\n protected getPropertyItems(): PropertyItem[] {\r\n var formKey = this.getFormKey();\r\n return Q.getForm(formKey);\r\n }\r\n\r\n protected getPropertyItemsAsync(): PromiseLike<PropertyItem[]> {\r\n return Promise.resolve().then(() => {\r\n var formKey = this.getFormKey();\r\n return Q.getFormAsync(formKey);\r\n });\r\n }\r\n\r\n protected getSaveEntity(): TItem {\r\n var entity = new Object();\r\n if (this.propertyGrid) {\r\n this.propertyGrid.save(entity);\r\n }\r\n return entity as TItem;\r\n }\r\n\r\n protected get_entity(): TItem {\r\n return this._entity;\r\n }\r\n\r\n protected get_entityId(): any {\r\n return this._entityId;\r\n }\r\n \r\n protected set_entity(value: TItem): void {\r\n this._entity = Q.coalesce(value, new Object());\r\n }\r\n\r\n protected set_entityId(value: any): void {\r\n this._entityId = value;\r\n }\r\n\r\n protected validateBeforeSave(): boolean {\r\n return this.validator.form();\r\n }\r\n\r\n protected propertyGrid: Serenity.PropertyGrid;\r\n }\r\n}","namespace Serenity {\r\n\r\n @Decorators.registerInterface('Serenity.IEditDialog')\r\n export class IEditDialog {\r\n }\r\n\r\n export interface IEditDialog {\r\n load(entityOrId: any, done: () => void, fail: (p1: any) => void): void;\r\n }\r\n\r\n @Serenity.Decorators.registerClass('Serenity.EntityDialog', [Serenity['IEditDialog'], IReadOnly])\r\n export class EntityDialog<TItem, TOptions> extends TemplatedDialog<TOptions> implements IEditDialog, IReadOnly {\r\n\r\n protected entity: TItem;\r\n protected entityId: any;\r\n protected propertyGrid: PropertyGrid;\r\n\r\n protected toolbar: Toolbar;\r\n protected saveAndCloseButton: JQuery;\r\n protected applyChangesButton: JQuery;\r\n protected deleteButton: JQuery;\r\n protected undeleteButton: JQuery;\r\n protected cloneButton: JQuery;\r\n protected editButton: JQuery;\r\n\r\n protected localizationGrid: PropertyGrid;\r\n protected localizationButton: JQuery;\r\n protected localizationPendingValue: any;\r\n protected localizationLastValue: any;\r\n\r\n static defaultLanguageList: () => string[][];\r\n\r\n constructor(opt?: TOptions) {\r\n super(opt);\r\n\r\n if (!this.isAsyncWidget()) {\r\n this.initPropertyGrid();\r\n this.initLocalizationGrid();\r\n }\r\n }\r\n\r\n protected initializeAsync(): PromiseLike<void> {\r\n return super.initializeAsync()\r\n .then(() => this.initPropertyGridAsync())\r\n .then(() => this.initLocalizationGridAsync());\r\n }\r\n\r\n destroy(): void {\r\n\r\n if (this.propertyGrid) {\r\n this.propertyGrid.destroy();\r\n this.propertyGrid = null;\r\n }\r\n\r\n if (this.localizationGrid) {\r\n this.localizationGrid.destroy();\r\n this.localizationGrid = null;\r\n }\r\n\r\n this.undeleteButton = null;\r\n this.applyChangesButton = null;\r\n this.deleteButton = null;\r\n this.saveAndCloseButton = null;\r\n this.editButton = null;\r\n this.cloneButton = null;\r\n this.toolbar = null;\r\n\r\n super.destroy();\r\n }\r\n\r\n protected get_entity(): TItem {\r\n return this.entity;\r\n }\r\n\r\n protected set_entity(entity: any): void {\r\n this.entity = entity || new Object();\r\n }\r\n\r\n protected get_entityId(): any {\r\n return this.entityId;\r\n }\r\n\r\n protected set_entityId(value: any) {\r\n this.entityId = value;\r\n }\r\n\r\n protected getEntityNameFieldValue(): any {\r\n return Q.coalesce(this.get_entity()[this.getNameProperty()], '').toString();\r\n }\r\n\r\n protected getEntityTitle(): string {\r\n if (!this.isEditMode()) {\r\n return Q.format(Q.text('Controls.EntityDialog.NewRecordTitle'), this.getEntitySingular());\r\n }\r\n else {\r\n var titleFormat = (this.isViewMode() || this.readOnly || !this.hasSavePermission()) ?\r\n Q.text('Controls.EntityDialog.ViewRecordTitle') : Q.text('Controls.EntityDialog.EditRecordTitle');\r\n var title = Q.coalesce(this.getEntityNameFieldValue(), '');\r\n return Q.format(titleFormat,\r\n this.getEntitySingular(), (Q.isEmptyOrNull(title) ? '' : (' (' + title + ')')));\r\n }\r\n }\r\n\r\n protected updateTitle(): void {\r\n this.dialogTitle = this.getEntityTitle();\r\n }\r\n\r\n protected isCloneMode(): boolean {\r\n return false;\r\n }\r\n\r\n protected isEditMode(): boolean {\r\n return this.get_entityId() != null && !this.isCloneMode();\r\n }\r\n\r\n protected isDeleted(): boolean {\r\n if (this.get_entityId() == null) {\r\n return false;\r\n }\r\n\r\n var isDeletedProperty = this.getIsDeletedProperty();\r\n if (isDeletedProperty) {\r\n return !!this.get_entity()[isDeletedProperty];\r\n }\r\n\r\n var value = this.get_entity()[this.getIsActiveProperty()];\r\n if (value == null) {\r\n return false;\r\n }\r\n\r\n return value < 0;\r\n }\r\n\r\n protected isNew(): boolean {\r\n return this.get_entityId() == null;\r\n }\r\n\r\n protected isNewOrDeleted(): boolean {\r\n return this.isNew() || this.isDeleted();\r\n }\r\n\r\n protected getDeleteOptions(callback: (response: DeleteResponse) => void): ServiceOptions<DeleteResponse> {\r\n return {};\r\n }\r\n\r\n protected deleteHandler(options: ServiceOptions<DeleteResponse>, callback: (response: DeleteResponse) => void): void {\r\n Q.serviceCall(options);\r\n }\r\n\r\n protected doDelete(callback: (response: DeleteResponse) => void): void {\r\n var self = this;\r\n\r\n var request: DeleteRequest = {\r\n EntityId: this.get_entityId()\r\n };\r\n\r\n var baseOptions: Q.ServiceOptions<DeleteResponse> = {\r\n service: this.getService() + '/Delete',\r\n request: request,\r\n onSuccess: response => {\r\n self.onDeleteSuccess(response);\r\n if (callback != null) {\r\n callback(response);\r\n }\r\n self.element.triggerHandler('ondatachange', [{\r\n entityId: request.EntityId,\r\n entity: this.entity,\r\n type: 'delete'\r\n }]);\r\n }\r\n };\r\n\r\n var thisOptions = this.getDeleteOptions(callback);\r\n var finalOptions = $.extend(baseOptions, thisOptions);\r\n\r\n this.deleteHandler(finalOptions, callback);\r\n }\r\n\r\n protected onDeleteSuccess(response: DeleteResponse): void {\r\n }\r\n\r\n protected attrs<TAttr>(attrType: { new(...args: any[]): TAttr }): TAttr[] {\r\n return (ss as any).getAttributes((ss as any).getInstanceType(this), attrType, true);\r\n }\r\n\r\n private entityType: string;\r\n\r\n protected getEntityType(): string {\r\n\r\n if (this.entityType != null)\r\n return this.entityType;\r\n\r\n var typeAttributes = this.attrs(EntityTypeAttribute);\r\n\r\n if (typeAttributes.length === 1)\r\n return (this.entityType = typeAttributes[0].value);\r\n\r\n // remove global namespace\r\n var name = (ss as any).getTypeFullName((ss as any).getInstanceType(this));\r\n var px = name.indexOf('.');\r\n if (px >= 0)\r\n name = name.substring(px + 1);\r\n\r\n // don't like this kind of convention, make it obsolete soon...\r\n if (Q.endsWith(name, 'Dialog') || Q.endsWith(name, 'Control'))\r\n name = name.substr(0, name.length - 6);\r\n else if (Q.endsWith(name, 'Panel'))\r\n name = name.substr(0, name.length - 5);\r\n\r\n return (this.entityType = name);\r\n }\r\n\r\n private formKey: string;\r\n\r\n protected getFormKey(): string {\r\n if (this.formKey != null)\r\n return this.formKey;\r\n\r\n var attributes = this.attrs(FormKeyAttribute);\r\n\r\n if (attributes.length >= 1)\r\n return (this.formKey = attributes[0].value);\r\n\r\n return (this.formKey = this.getEntityType());\r\n }\r\n\r\n private localTextDbPrefix: string;\r\n\r\n protected getLocalTextDbPrefix(): string {\r\n if (this.localTextDbPrefix != null)\r\n return this.localTextDbPrefix;\r\n\r\n this.localTextDbPrefix = Q.coalesce(this.getLocalTextPrefix(), '');\r\n\r\n if (this.localTextDbPrefix.length > 0 && !Q.endsWith(this.localTextDbPrefix, '.'))\r\n this.localTextDbPrefix = 'Db.' + this.localTextDbPrefix + '.';\r\n\r\n return this.localTextDbPrefix;\r\n }\r\n\r\n protected getLocalTextPrefix(): string {\r\n var attributes = this.attrs(LocalTextPrefixAttribute);\r\n\r\n if (attributes.length >= 1)\r\n return attributes[0].value;\r\n\r\n return this.getEntityType();\r\n }\r\n\r\n private entitySingular: string;\r\n\r\n protected getEntitySingular(): string {\r\n if (this.entitySingular != null)\r\n return this.entitySingular;\r\n\r\n var attributes = this.attrs(ItemNameAttribute);\r\n\r\n if (attributes.length >= 1) {\r\n this.entitySingular = attributes[0].value;\r\n this.entitySingular = Q.LT.getDefault(this.entitySingular, this.entitySingular);\r\n }\r\n else {\r\n var es = Q.tryGetText(this.getLocalTextDbPrefix() + 'EntitySingular');\r\n if (es == null) \r\n es = this.getEntityType();\r\n this.entitySingular = es;\r\n }\r\n\r\n return this.entitySingular;\r\n }\r\n\r\n private nameProperty: string;\r\n\r\n protected getNameProperty(): string {\r\n if (this.nameProperty != null)\r\n return this.nameProperty;\r\n\r\n var attributes = this.attrs(NamePropertyAttribute);\r\n\r\n if (attributes.length >= 1)\r\n this.nameProperty = attributes[0].value;\r\n else\r\n this.nameProperty = 'Name';\r\n\r\n return this.nameProperty;\r\n }\r\n\r\n private idProperty: string;\r\n\r\n protected getIdProperty(): string {\r\n if (this.idProperty != null)\r\n return this.idProperty;\r\n\r\n var attributes = this.attrs(IdPropertyAttribute);\r\n if (attributes.length >= 1)\r\n this.idProperty = attributes[0].value;\r\n else\r\n this.idProperty = 'ID';\r\n\r\n return this.idProperty;\r\n }\r\n\r\n protected isActiveProperty: string;\r\n\r\n protected getIsActiveProperty(): string {\r\n if (this.isActiveProperty != null)\r\n return this.isActiveProperty;\r\n\r\n var attributes = this.attrs(IsActivePropertyAttribute)\r\n if (attributes.length >= 1)\r\n this.isActiveProperty = attributes[0].value;\r\n else\r\n this.isActiveProperty = 'IsActive';\r\n\r\n return this.isActiveProperty;\r\n }\r\n\r\n protected getIsDeletedProperty(): string {\r\n return null;\r\n }\r\n\r\n protected service: string;\r\n\r\n protected getService() {\r\n if (this.service != null)\r\n return this.service;\r\n\r\n var attributes = this.attrs(ServiceAttribute);\r\n if (attributes.length >= 1)\r\n this.service = attributes[0].value;\r\n else\r\n this.service = Q.replaceAll(this.getEntityType(), '.', '/');\r\n\r\n return this.service;\r\n }\r\n\r\n load(entityOrId: any, done: () => void, fail: (ex: ss.Exception) => void): void {\r\n\r\n var action = () => {\r\n\r\n if (entityOrId == null) {\r\n this.loadResponse({});\r\n done && done();\r\n return;\r\n }\r\n\r\n var scriptType = typeof (entityOrId);\r\n if (scriptType === 'string' || scriptType === 'number') {\r\n var entityId = entityOrId;\r\n\r\n this.loadById(entityId, function (response) {\r\n if (done)\r\n window.setTimeout(done, 0);\r\n }, null);\r\n\r\n return;\r\n }\r\n\r\n var entity = entityOrId || new Object();\r\n this.loadResponse({ Entity: entity });\r\n done && done();\r\n };\r\n\r\n if (fail == null) {\r\n action();\r\n return;\r\n }\r\n\r\n try {\r\n action();\r\n }\r\n catch (ex1) {\r\n var ex = (ss.Exception as any).wrap(ex1);\r\n fail(ex);\r\n }\r\n }\r\n\r\n loadNewAndOpenDialog(asPanel?: boolean): void {\r\n this.loadResponse({});\r\n this.dialogOpen(asPanel);\r\n }\r\n\r\n loadEntityAndOpenDialog(entity: TItem, asPanel?: boolean): void {\r\n this.loadResponse({ Entity: entity });\r\n this.dialogOpen(asPanel);\r\n }\r\n\r\n protected loadResponse(data: any): void {\r\n data = data || {};\r\n this.onLoadingData(data);\r\n var entity = data.Entity || new Object();\r\n this.beforeLoadEntity(entity);\r\n this.loadEntity(entity);\r\n this.set_entity(entity);\r\n this.afterLoadEntity();\r\n }\r\n\r\n protected loadEntity(entity: TItem): void {\r\n var idField = this.getIdProperty();\r\n\r\n if (idField != null)\r\n this.set_entityId(entity[idField]);\r\n \r\n this.set_entity(entity);\r\n\r\n if (this.propertyGrid != null) {\r\n this.propertyGrid.set_mode((this.isEditMode() ?\r\n PropertyGridMode.update : PropertyGridMode.insert));\r\n this.propertyGrid.load(entity);\r\n }\r\n }\r\n\r\n protected beforeLoadEntity(entity: TItem): void {\r\n this.localizationPendingValue = null;\r\n this.localizationLastValue = null;\r\n }\r\n\r\n protected afterLoadEntity(): void {\r\n this.updateInterface();\r\n this.updateTitle();\r\n }\r\n\r\n public loadByIdAndOpenDialog(entityId: any, asPanel?: boolean) {\r\n this.loadById(entityId,\r\n response => window.setTimeout(() => this.dialogOpen(asPanel), 0),\r\n () => {\r\n if (!this.element.is(':visible')) {\r\n this.element.remove();\r\n }\r\n });\r\n }\r\n\r\n protected onLoadingData(data: RetrieveResponse<TItem>): void {\r\n }\r\n\r\n protected getLoadByIdOptions(id: any, callback: (response: RetrieveResponse<TItem>) => void): ServiceOptions<RetrieveResponse<TItem>> {\r\n return {};\r\n }\r\n\r\n protected getLoadByIdRequest(id: any): RetrieveRequest {\r\n var request: RetrieveRequest = {};\r\n request.EntityId = id;\r\n return request;\r\n }\r\n\r\n protected reloadById(): void {\r\n this.loadById(this.get_entityId());\r\n }\r\n\r\n loadById(id: any, callback?: (response: RetrieveResponse<TItem>) => void, fail?: () => void) {\r\n var baseOptions: Q.ServiceOptions<RetrieveResponse<TItem>> = {\r\n service: this.getService() + '/Retrieve',\r\n blockUI: true,\r\n request: this.getLoadByIdRequest(id),\r\n onSuccess: response => {\r\n this.loadResponse(response);\r\n callback && callback(response);\r\n },\r\n onCleanup: () => {\r\n if (this.validator != null) {\r\n Q.validatorAbortHandler(this.validator);\r\n }\r\n }\r\n };\r\n\r\n var thisOptions = this.getLoadByIdOptions(id, callback);\r\n var finalOptions = $.extend(baseOptions, thisOptions);\r\n this.loadByIdHandler(finalOptions, callback, fail);\r\n }\r\n\r\n protected loadByIdHandler(options: ServiceOptions<RetrieveResponse<TItem>>, callback: (response: RetrieveResponse<TItem>) => void, fail: () => void): void {\r\n var request = Q.serviceCall(options);\r\n fail && request.fail(fail);\r\n }\r\n\r\n protected initLocalizationGrid(): void {\r\n var pgDiv = this.byId('PropertyGrid');\r\n if (pgDiv.length <= 0) {\r\n return;\r\n }\r\n var pgOptions = this.getPropertyGridOptions();\r\n this.initLocalizationGridCommon(pgOptions);\r\n }\r\n\r\n protected initLocalizationGridAsync(): PromiseLike<void> {\r\n return Promise.resolve().then(() => {\r\n\r\n var pgDiv = this.byId('PropertyGrid');\r\n if (pgDiv.length <= 0) {\r\n return Promise.resolve();\r\n }\r\n\r\n return this.getPropertyGridOptionsAsync().then(pgOptions => {\r\n this.initLocalizationGridCommon(pgOptions);\r\n });\r\n });\r\n }\r\n\r\n protected initLocalizationGridCommon(pgOptions: PropertyGridOptions) {\r\n var pgDiv = this.byId('PropertyGrid');\r\n\r\n if (!Q.any(pgOptions.items, x => x.localizable === true))\r\n return;\r\n\r\n var localGridDiv = $('<div/>')\r\n .attr('id', this.idPrefix + 'LocalizationGrid')\r\n .hide().insertAfter(pgDiv);\r\n\r\n pgOptions.idPrefix = this.idPrefix + 'Localization_';\r\n\r\n var items: PropertyItem[] = [];\r\n for (var item1 of pgOptions.items) {\r\n var langs = null;\r\n\r\n if (item1.localizable === true) {\r\n var copy = $.extend({}, item1);\r\n copy.oneWay = true;\r\n copy.readOnly = true;\r\n copy.required = false;\r\n copy.defaultValue = null;\r\n items.push(copy);\r\n\r\n if (langs == null)\r\n langs = this.getLangs();\r\n\r\n for (var lang of langs) {\r\n copy = $.extend({}, item1);\r\n copy.name = lang[0] + '$' + copy.name;\r\n copy.title = lang[1];\r\n copy.cssClass = [copy.cssClass, 'translation'].join(' ');\r\n copy.insertable = true;\r\n copy.updatable = true;\r\n copy.oneWay = false;\r\n copy.required = false;\r\n copy.localizable = false;\r\n copy.defaultValue = null;\r\n items.push(copy);\r\n }\r\n }\r\n }\r\n\r\n pgOptions.items = items;\r\n\r\n this.localizationGrid = (new Serenity.PropertyGrid(localGridDiv, pgOptions)).init(null);\r\n localGridDiv.addClass('s-LocalizationGrid');\r\n }\r\n\r\n protected isLocalizationMode(): boolean {\r\n return this.localizationButton != null && this.localizationButton.hasClass('pressed');\r\n }\r\n\r\n protected isLocalizationModeAndChanged(): boolean {\r\n if (!this.isLocalizationMode()) {\r\n return false;\r\n }\r\n\r\n var newValue = this.getLocalizationGridValue();\r\n return $.toJSON(this.localizationLastValue) != $.toJSON(newValue);\r\n }\r\n\r\n protected localizationButtonClick(): void {\r\n if (this.isLocalizationMode() && !this.validateForm()) {\r\n return;\r\n }\r\n\r\n if (this.isLocalizationModeAndChanged()) {\r\n var newValue = this.getLocalizationGridValue();\r\n this.localizationLastValue = newValue;\r\n this.localizationPendingValue = newValue;\r\n }\r\n\r\n this.localizationButton.toggleClass('pressed');\r\n this.updateInterface();\r\n if (this.isLocalizationMode()) {\r\n this.loadLocalization();\r\n }\r\n }\r\n\r\n protected getLanguages(): any[] {\r\n if (Serenity.EntityDialog.defaultLanguageList != null)\r\n return Serenity.EntityDialog.defaultLanguageList() || [];\r\n\r\n return [];\r\n }\r\n\r\n // for compatibility with older getLanguages methods written in Saltaralle\r\n private getLangs(): any {\r\n\r\n var langsTuple = this.getLanguages();\r\n var langs = (ss as any).safeCast(langsTuple, Array);\r\n if (langs == null || langs.length === 0 ||\r\n langs[0] == null || !Q.isArray(langs[0])) {\r\n langs = Array.prototype.slice.call(langsTuple.map(function (x: any) {\r\n return [x.item1, x.item2];\r\n }));\r\n }\r\n\r\n return langs;\r\n }\r\n\r\n protected loadLocalization(): void {\r\n if (this.localizationLastValue == null && this.isNew()) {\r\n this.localizationGrid.load({});\r\n this.setLocalizationGridCurrentValues();\r\n this.localizationLastValue = this.getLocalizationGridValue();\r\n return;\r\n }\r\n\r\n if (this.localizationLastValue != null) {\r\n this.localizationGrid.load(this.localizationLastValue);\r\n this.setLocalizationGridCurrentValues();\r\n return;\r\n }\r\n\r\n var opt = <Q.ServiceOptions<any>>{\r\n service: this.getService() + '/Retrieve',\r\n blockUI: true,\r\n request: {\r\n EntityId: this.get_entityId(),\r\n ColumnSelection: 'keyOnly',\r\n IncludeColumns: ['Localizations']\r\n },\r\n onSuccess: response => {\r\n var copy = $.extend(new Object(), this.get_entity());\r\n if (response.Localizations) {\r\n for (var language of Object.keys(response.Localizations)) {\r\n var entity = response.Localizations[language];\r\n for (var key of Object.keys(entity)) {\r\n copy[language + '$' + key] = entity[key];\r\n }\r\n }\r\n }\r\n \r\n this.localizationGrid.load(copy);\r\n this.setLocalizationGridCurrentValues();\r\n this.localizationPendingValue = null;\r\n this.localizationLastValue = this.getLocalizationGridValue();\r\n }\r\n };\r\n\r\n Q.serviceCall(opt);\r\n }\r\n\r\n protected setLocalizationGridCurrentValues(): void {\r\n var valueByName = {};\r\n\r\n this.localizationGrid.enumerateItems((item, widget) => {\r\n if (item.name.indexOf('$') < 0 && widget.element.is(':input')) {\r\n valueByName[item.name] = this.byId(item.name).val();\r\n widget.element.val(valueByName[item.name]);\r\n }\r\n });\r\n\r\n this.localizationGrid.enumerateItems((item1, widget1) => {\r\n var idx = item1.name.indexOf('$');\r\n if (idx >= 0 && widget1.element.is(':input')) {\r\n var hint = valueByName[item1.name.substr(idx + 1)];\r\n if (hint != null && hint.length > 0) {\r\n widget1.element.attr('title', hint).attr('placeholder', hint);\r\n }\r\n }\r\n });\r\n }\r\n\r\n protected getLocalizationGridValue(): any {\r\n var value = {};\r\n this.localizationGrid.save(value);\r\n\r\n for (var k of Object.keys(value)) {\r\n if (k.indexOf('$') < 0) {\r\n delete value[k];\r\n }\r\n }\r\n\r\n return value;\r\n }\r\n\r\n protected getPendingLocalizations(): any {\r\n if (this.localizationPendingValue == null) {\r\n return null;\r\n }\r\n\r\n var result: Q.Dictionary<any> = {};\r\n var idField = this.getIdProperty();\r\n var langs = this.getLangs();\r\n\r\n for (var pair of langs) {\r\n var language = pair[0];\r\n var entity: any = {};\r\n\r\n if (idField != null) {\r\n entity[idField] = this.get_entityId();\r\n }\r\n\r\n var prefix = language + '$';\r\n\r\n for (var k of Object.keys(this.localizationPendingValue)) {\r\n if (Q.startsWith(k, prefix)) \r\n entity[k.substr(prefix.length)] = this.localizationPendingValue[k];\r\n }\r\n\r\n result[language] = entity;\r\n }\r\n\r\n return result;\r\n }\r\n\r\n protected initPropertyGrid(): void {\r\n var pgDiv = this.byId('PropertyGrid');\r\n if (pgDiv.length <= 0) {\r\n return;\r\n }\r\n var pgOptions = this.getPropertyGridOptions();\r\n this.propertyGrid = (new Serenity.PropertyGrid(pgDiv, pgOptions)).init(null);\r\n if (this.element.closest('.ui-dialog').hasClass('s-Flexify')) {\r\n this.propertyGrid.element.children('.categories').flexHeightOnly(1);\r\n }\r\n }\r\n\r\n protected initPropertyGridAsync(): PromiseLike<void> {\r\n\r\n return Promise.resolve().then(() => {\r\n\r\n var pgDiv = this.byId('PropertyGrid');\r\n if (pgDiv.length <= 0) {\r\n return Promise.resolve();\r\n }\r\n\r\n return this.getPropertyGridOptionsAsync().then(pgOptions => {\r\n this.propertyGrid = new Serenity.PropertyGrid(pgDiv, pgOptions);\r\n\r\n if (this.element.closest('.ui-dialog').hasClass('s-Flexify'))\r\n this.propertyGrid.element.children('.categories').flexHeightOnly(1);\r\n\r\n return this.propertyGrid.init() as any;\r\n });\r\n });\r\n }\r\n\r\n protected getPropertyItems() {\r\n var formKey = this.getFormKey();\r\n return Q.getForm(formKey);\r\n }\r\n\r\n protected getPropertyGridOptions(): PropertyGridOptions {\r\n return {\r\n idPrefix: this.idPrefix,\r\n items: this.getPropertyItems(),\r\n mode: PropertyGridMode.insert,\r\n localTextPrefix: 'Forms.' + this.getFormKey() + '.',\r\n useCategories: true\r\n };\r\n }\r\n\r\n protected getPropertyGridOptionsAsync(): PromiseLike<PropertyGridOptions> {\r\n\r\n return this.getPropertyItemsAsync().then(propertyItems => {\r\n return <PropertyGridOptions>{\r\n idPrefix: this.idPrefix,\r\n items: propertyItems,\r\n mode: 1,\r\n localTextPrefix: 'Forms.' + this.getFormKey() + '.',\r\n useCategories: true\r\n };\r\n });\r\n\r\n }\r\n\r\n protected getPropertyItemsAsync(): PromiseLike<PropertyItem[]> {\r\n return Promise.resolve().then(() => {\r\n var formKey = this.getFormKey();\r\n return Q.getFormAsync(formKey);\r\n });\r\n }\r\n\r\n protected validateBeforeSave(): boolean {\r\n return true;\r\n }\r\n\r\n protected getSaveOptions(callback: (response: SaveResponse) => void): ServiceOptions<SaveResponse> {\r\n\r\n var opt: Q.ServiceOptions<SaveResponse> = {};\r\n\r\n opt.service = this.getService() + '/' + (this.isEditMode() ? 'Update' : 'Create'),\r\n\r\n opt.onSuccess = response => {\r\n this.onSaveSuccess(response);\r\n\r\n callback && callback(response);\r\n\r\n var typ = (this.isEditMode() ? 'update' : 'create');\r\n\r\n var ent = opt.request == null ? null : opt.request.Entity;\r\n var eid: any = this.isEditMode() ? this.get_entityId() :\r\n (response == null ? null : response.EntityId);\r\n\r\n var dci = {\r\n type: typ,\r\n entity: ent,\r\n entityId: eid\r\n };\r\n\r\n this.element.triggerHandler('ondatachange', [dci]);\r\n };\r\n\r\n opt.onCleanup = () => {\r\n this.validator && Q.validatorAbortHandler(this.validator);\r\n };\r\n\r\n opt.request = this.getSaveRequest();\r\n\r\n return opt;\r\n }\r\n\r\n protected getSaveEntity(): TItem {\r\n\r\n var entity: TItem = new Object() as any;\r\n\r\n if (this.propertyGrid != null) {\r\n this.propertyGrid.save(entity);\r\n }\r\n\r\n if (this.isEditMode()) {\r\n var idField = this.getIdProperty();\r\n if (idField != null && entity[idField] == null) {\r\n entity[idField] = this.get_entityId();\r\n }\r\n }\r\n\r\n return entity;\r\n }\r\n\r\n protected getSaveRequest(): SaveRequest<TItem> {\r\n\r\n var entity = this.getSaveEntity();\r\n var req: SaveRequest<TItem> = {};\r\n req.Entity = entity;\r\n\r\n if (this.isEditMode()) {\r\n var idField = this.getIdProperty();\r\n if (idField != null) {\r\n req.EntityId = this.get_entityId();\r\n }\r\n }\r\n\r\n if (this.localizationPendingValue != null) {\r\n req.Localizations = this.getPendingLocalizations();\r\n }\r\n\r\n return req;\r\n }\r\n\r\n protected onSaveSuccess(response: SaveResponse): void {\r\n }\r\n\r\n protected save_submitHandler(callback: (response: SaveResponse) => void): void {\r\n var options = this.getSaveOptions(callback);\r\n this.saveHandler(options, callback);\r\n }\r\n\r\n protected save(callback?: (response: SaveResponse) => void): void | boolean {\r\n return Serenity.ValidationHelper.submit(this.byId('Form'),\r\n () => this.validateBeforeSave(),\r\n () => this.save_submitHandler(callback));\r\n }\r\n\r\n protected saveHandler(options: ServiceOptions<SaveResponse>,\r\n callback: (response: SaveResponse) => void): void {\r\n Q.serviceCall(options);\r\n }\r\n\r\n protected initToolbar(): void {\r\n\r\n super.initToolbar();\r\n\r\n if (!this.toolbar)\r\n return;\r\n\r\n this.saveAndCloseButton = this.toolbar.findButton('save-and-close-button');\r\n this.applyChangesButton = this.toolbar.findButton('apply-changes-button');\r\n this.deleteButton = this.toolbar.findButton('delete-button');\r\n this.undeleteButton = this.toolbar.findButton('undo-delete-button');\r\n this.editButton = this.toolbar.findButton('edit-button');\r\n this.cloneButton = this.toolbar.findButton('clone-button');\r\n this.localizationButton = this.toolbar.findButton('localization-button');\r\n }\r\n\r\n protected showSaveSuccessMessage(response: SaveResponse): void {\r\n Q.notifySuccess(Q.text('Controls.EntityDialog.SaveSuccessMessage'), '', null);\r\n }\r\n\r\n protected getToolbarButtons(): ToolButton[] {\r\n var list: ToolButton[] = [];\r\n\r\n list.push({\r\n title: Q.text('Controls.EntityDialog.SaveButton'),\r\n cssClass: 'save-and-close-button',\r\n hotkey: 'alt+s',\r\n onClick: () => {\r\n this.save(response => {\r\n this.dialogClose();\r\n });\r\n },\r\n visible: () => !this.isDeleted() && !this.isViewMode(),\r\n disabled: () => !this.hasSavePermission() || this.readOnly\r\n });\r\n\r\n list.push({\r\n title: '',\r\n hint: Q.text('Controls.EntityDialog.ApplyChangesButton'),\r\n cssClass: 'apply-changes-button',\r\n hotkey: 'alt+a',\r\n onClick: () => {\r\n this.save(response1 => {\r\n\r\n if (this.isEditMode()) {\r\n var id1 = response1.EntityId;\r\n if (id1 == null) {\r\n id1 = this.get_entityId();\r\n }\r\n this.loadById(id1);\r\n }\r\n else {\r\n this.loadById(response1.EntityId);\r\n }\r\n\r\n this.showSaveSuccessMessage(response1);\r\n });\r\n },\r\n visible: () => !this.isDeleted() && !this.isViewMode(),\r\n disabled: () => !this.hasSavePermission() || this.readOnly\r\n });\r\n\r\n list.push({\r\n title: Q.text('Controls.EntityDialog.DeleteButton'),\r\n cssClass: 'delete-button',\r\n hotkey: 'alt+x',\r\n onClick: () => {\r\n Q.confirm(Q.text('Controls.EntityDialog.DeleteConfirmation'), () => {\r\n this.doDelete(() => this.dialogClose());\r\n });\r\n },\r\n visible: () => this.isEditMode() && !this.isDeleted() && !this.isViewMode(),\r\n disabled: () => !this.hasDeletePermission() || this.readOnly\r\n });\r\n\r\n list.push({\r\n title: Q.text('Controls.EntityDialog.UndeleteButton'),\r\n cssClass: 'undo-delete-button',\r\n onClick: () => {\r\n if (this.isDeleted()) {\r\n Q.confirm(Q.text('Controls.EntityDialog.UndeleteConfirmation'), () => {\r\n this.undelete(() => this.loadById(this.get_entityId()));\r\n });\r\n }\r\n },\r\n visible: () => this.isEditMode() && this.isDeleted() && !this.isViewMode(),\r\n disabled: () => !this.hasDeletePermission() || this.readOnly\r\n });\r\n\r\n if (this.useViewMode()) {\r\n list.push({\r\n title: Q.text('Controls.EntityDialog.EditButton'),\r\n cssClass: 'edit-button',\r\n icon: 'fa-edit',\r\n onClick: () => {\r\n if (!this.isEditMode())\r\n return;\r\n\r\n this.editClicked = true;\r\n this.updateInterface();\r\n this.updateTitle();\r\n },\r\n visible: () => this.isViewMode(),\r\n disabled: () => !this.hasSavePermission() || this.readOnly\r\n });\r\n }\r\n\r\n list.push({\r\n title: Q.text('Controls.EntityDialog.LocalizationButton'),\r\n cssClass: 'localization-button',\r\n onClick: () => this.localizationButtonClick()\r\n });\r\n\r\n list.push({\r\n title: Q.text('Controls.EntityDialog.CloneButton'),\r\n cssClass: 'clone-button',\r\n onClick: () => {\r\n\r\n if (!this.isEditMode()) {\r\n return;\r\n }\r\n\r\n var cloneEntity = this.getCloningEntity();\r\n\r\n Serenity.Widget.create({\r\n type: (ss as any).getInstanceType(this),\r\n init: w => Serenity.SubDialogHelper.bubbleDataChange(\r\n Serenity.SubDialogHelper.cascade(w, this.element), this, true)\r\n .loadEntityAndOpenDialog(cloneEntity, null)\r\n });\r\n },\r\n visible: () => false,\r\n disabled: () => !this.hasInsertPermission() || this.readOnly\r\n });\r\n\r\n return list;\r\n }\r\n\r\n protected getCloningEntity(): TItem {\r\n\r\n var clone: TItem = new Object() as any;\r\n clone = $.extend(clone, this.get_entity());\r\n\r\n var idField = this.getIdProperty();\r\n if (!Q.isEmptyOrNull(idField)) {\r\n delete clone[idField];\r\n }\r\n\r\n var isActiveField = this.getIsActiveProperty();\r\n if (!Q.isEmptyOrNull(isActiveField)) {\r\n delete clone[isActiveField];\r\n }\r\n\r\n var isDeletedField = this.getIsDeletedProperty();\r\n if (!Q.isEmptyOrNull(isDeletedField)) {\r\n delete clone[isDeletedField];\r\n }\r\n\r\n return clone;\r\n }\r\n\r\n protected updateInterface(): void {\r\n\r\n Serenity.EditorUtils.setContainerReadOnly(this.byId('Form'), false);\r\n\r\n var isDeleted = this.isDeleted();\r\n var isLocalizationMode = this.isLocalizationMode();\r\n var hasSavePermission = this.hasSavePermission();\r\n var viewMode = this.isViewMode();\r\n var isDeleted = this.isDeleted();\r\n var readOnly = this.readOnly;\r\n\r\n this.toolbar.updateInterface();\r\n\r\n if (this.tabs != null) {\r\n Serenity.TabsExtensions.setDisabled(this.tabs, 'Log', this.isNewOrDeleted());\r\n }\r\n\r\n if (this.propertyGrid != null) {\r\n this.propertyGrid.element.toggle(!isLocalizationMode);\r\n }\r\n\r\n if (this.localizationGrid != null) {\r\n this.localizationGrid.element.toggle(isLocalizationMode);\r\n }\r\n\r\n if (this.localizationButton != null) {\r\n this.localizationButton.toggle(this.localizationGrid != null);\r\n this.localizationButton.find('.button-inner')\r\n .text((this.isLocalizationMode() ?\r\n Q.text('Controls.EntityDialog.LocalizationBack') :\r\n Q.text('Controls.EntityDialog.LocalizationButton')));\r\n }\r\n\r\n if (isLocalizationMode) {\r\n\r\n if (this.toolbar != null)\r\n this.toolbar.findButton('tool-button')\r\n .not('.localization-hidden')\r\n .addClass('.localization-hidden').hide();\r\n\r\n this.localizationButton && this.localizationButton.show();\r\n\r\n return;\r\n }\r\n\r\n this.toolbar.findButton('localization-hidden')\r\n .removeClass('localization-hidden').show();\r\n\r\n this.saveAndCloseButton && this.saveAndCloseButton\r\n .find('.button-inner').text(Q.text((this.isNew() ? 'Controls.EntityDialog.SaveButton' :\r\n 'Controls.EntityDialog.UpdateButton')));\r\n\r\n if (!hasSavePermission || viewMode || readOnly)\r\n Serenity.EditorUtils.setContainerReadOnly(this.byId(\"Form\"), true);\r\n }\r\n\r\n protected getUndeleteOptions(callback?: (response: UndeleteResponse) => void): ServiceOptions<UndeleteResponse> {\r\n return {}\r\n }\r\n\r\n protected undeleteHandler(options: ServiceOptions<UndeleteResponse>, callback: (response: UndeleteResponse) => void): void {\r\n Q.serviceCall(options);\r\n }\r\n\r\n protected undelete(callback?: (response: UndeleteResponse) => void): void {\r\n var baseOptions: Q.ServiceOptions<UndeleteResponse> = {};\r\n baseOptions.service = this.getService() + '/Undelete';\r\n\r\n var request: UndeleteRequest = {};\r\n request.EntityId = this.get_entityId();\r\n\r\n baseOptions.request = request;\r\n baseOptions.onSuccess = response => {\r\n callback && callback(response);\r\n this.element.triggerHandler('ondatachange', [{\r\n entityId: this.get_entityId(),\r\n entity: this.entity,\r\n type: 'undelete'\r\n }]);\r\n };\r\n\r\n var thisOptions = this.getUndeleteOptions(callback);\r\n var finalOptions = $.extend(baseOptions, thisOptions);\r\n this.undeleteHandler(finalOptions, callback);\r\n }\r\n\r\n private _readonly: boolean;\r\n\r\n public get readOnly(): boolean {\r\n return this.get_readOnly();\r\n }\r\n\r\n public set readOnly(value: boolean) {\r\n this.set_readOnly(value);\r\n }\r\n\r\n public get_readOnly() {\r\n return !!this._readonly;\r\n }\r\n\r\n public set_readOnly(value: boolean) {\r\n if (!!this._readonly != !!value) {\r\n this._readonly = !!value;\r\n this.updateInterface();\r\n this.updateTitle();\r\n }\r\n }\r\n\r\n protected getInsertPermission(): string {\r\n return null;\r\n }\r\n\r\n protected getUpdatePermission(): string {\r\n return null;\r\n }\r\n\r\n protected getDeletePermission(): string {\r\n return null;\r\n }\r\n\r\n protected hasDeletePermission() {\r\n var deletePermission = this.getDeletePermission();\r\n return deletePermission == null || Q.Authorization.hasPermission(deletePermission);\r\n }\r\n\r\n protected hasInsertPermission() {\r\n var insertPermission = this.getInsertPermission();\r\n return insertPermission == null || Q.Authorization.hasPermission(insertPermission);\r\n }\r\n\r\n protected hasUpdatePermission() {\r\n var updatePermission = this.getUpdatePermission();\r\n return updatePermission == null || Q.Authorization.hasPermission(updatePermission);\r\n }\r\n\r\n protected hasSavePermission(): boolean {\r\n return this.isNew() ? this.hasInsertPermission() : this.hasUpdatePermission();\r\n }\r\n\r\n protected editClicked: boolean;\r\n\r\n protected isViewMode() {\r\n return this.useViewMode() && this.isEditMode() && !this.editClicked;\r\n }\r\n\r\n protected useViewMode() {\r\n return false;\r\n }\r\n }\r\n}","namespace Serenity {\r\n export namespace Reporting {\r\n export interface ReportDialogOptions {\r\n reportKey?: string;\r\n }\r\n\r\n @Decorators.registerClass('Serenity.Reporting.ReportDialog')\r\n export class ReportDialog extends TemplatedDialog<ReportDialogOptions> {\r\n constructor(opt: ReportDialogOptions) {\r\n super(opt);\r\n\r\n if (opt.reportKey) {\r\n this.loadReport(opt.reportKey);\r\n }\r\n }\r\n\r\n protected propertyGrid: Serenity.PropertyGrid;\r\n protected propertyItems: Serenity.PropertyItem[];\r\n protected reportKey: string;\r\n\r\n protected createPropertyGrid(): void {\r\n if (this.propertyGrid) {\r\n this.byId('PropertyGrid').html('').attr('class', '');\r\n this.propertyGrid = null;\r\n }\r\n this.propertyGrid = (new Serenity.PropertyGrid(this.byId('PropertyGrid'), {\r\n idPrefix: this.idPrefix,\r\n useCategories: true,\r\n items: this.propertyItems\r\n })).init(null);\r\n }\r\n\r\n loadReport(reportKey: string): void {\r\n Q.serviceCall({\r\n service: 'Report/Retrieve', request: { ReportKey: reportKey },\r\n onSuccess: (response: ReportRetrieveResponse) => {\r\n this.reportKey = Q.coalesce(response.ReportKey, reportKey);\r\n this.propertyItems = response.Properties || [];\r\n this.dialogTitle = response.Title;\r\n this.createPropertyGrid();\r\n var set = response.InitialSettings;\r\n if (set == null) {\r\n set = new Object();\r\n }\r\n this.propertyGrid.load(set);\r\n this.toolbar.findButton('print-preview-button').toggle(!response.IsDataOnlyReport);\r\n this.toolbar.findButton('export-pdf-button').toggle(!response.IsDataOnlyReport);\r\n this.toolbar.findButton('export-docx-button').toggle(!response.IsDataOnlyReport);\r\n this.dialogOpen(null);\r\n }\r\n });\r\n }\r\n\r\n executeReport(targetFrame: string, exportType: string): void {\r\n if (!this.validateForm()) {\r\n return;\r\n }\r\n var parameters = new Object();\r\n this.propertyGrid.save(parameters);\r\n Q.postToService({\r\n service: 'Report/Execute',\r\n request: {\r\n ReportKey: this.reportKey,\r\n DesignId: 'Default',\r\n ExportType: exportType,\r\n Parameters: parameters\r\n }, target: targetFrame\r\n });\r\n\r\n }\r\n\r\n protected getToolbarButtons() {\r\n var buttons = [];\r\n buttons.push({\r\n title: 'Önizleme', cssClass: 'print-preview-button', onClick: () => {\r\n this.executeReport('_blank', null);\r\n }\r\n });\r\n buttons.push({\r\n title: 'PDF', cssClass: 'export-pdf-button', onClick: () => {\r\n this.executeReport('', 'Pdf');\r\n }\r\n });\r\n buttons.push({\r\n title: 'Excel', cssClass: 'export-xlsx-button', onClick: () => {\r\n this.executeReport('', 'Xlsx');\r\n }\r\n });\r\n buttons.push({\r\n title: 'Word', cssClass: 'export-docx-button', onClick: () => {\r\n this.executeReport('', 'Docx');\r\n }\r\n });\r\n return buttons;\r\n }\r\n }\r\n\r\n export interface ReportExecuteRequest extends ServiceRequest {\r\n ExportType?: string;\r\n ReportKey?: string;\r\n DesignId?: string;\r\n Parameters?: any;\r\n }\r\n\r\n @Decorators.registerClass('Serenity.Reporting.ReportPage')\r\n export class ReportPage extends Serenity.Widget<any> {\r\n constructor(div: JQuery) {\r\n super(div);\r\n\r\n $('.report-link').click((e) => this.reportLinkClick(e));\r\n $('div.line').click((e) => this.categoryClick(e));\r\n var self = this;\r\n new Serenity.QuickSearchInput($('#QuickSearchInput'), {\r\n onSearch: function (field, text, done) {\r\n self.updateMatchFlags(text);\r\n done(true);\r\n }\r\n });\r\n }\r\n\r\n protected updateMatchFlags(text: string) {\r\n var liList = $('#ReportList').find('li').removeClass('non-match');\r\n text = Q.trimToNull(text);\r\n if (text == null) {\r\n liList.children('ul').hide();\r\n liList.show().removeClass('expanded');\r\n return;\r\n }\r\n var parts = (ss as any).netSplit(text, [44, 32].map(function (i) {\r\n return String.fromCharCode(i);\r\n }), null, 1);\r\n for (var i = 0; i < parts.length; i++) {\r\n parts[i] = Q.trimToNull(Select2.util.stripDiacritics(parts[i]).toUpperCase());\r\n }\r\n var reportItems = liList.filter('.report-item');\r\n reportItems.each(function (i1, e) {\r\n var x = $(e);\r\n var title = Select2.util.stripDiacritics(Q.coalesce(x.text(), '').toUpperCase());\r\n for (var $t1 = 0; $t1 < parts.length; $t1++) {\r\n var p = parts[$t1];\r\n if (p != null && !(title.indexOf(p) !== -1)) {\r\n x.addClass('non-match');\r\n break;\r\n }\r\n }\r\n });\r\n var matchingItems = reportItems.not('.non-match');\r\n var visibles = matchingItems.parents('li').add(matchingItems);\r\n var nonVisibles = liList.not(visibles);\r\n nonVisibles.hide().addClass('non-match');\r\n visibles.show();\r\n if (visibles.length <= 100) {\r\n liList.children('ul').show();\r\n liList.addClass('expanded');\r\n }\r\n }\r\n\r\n protected categoryClick(e: JQueryEventObject) {\r\n var li = $(e.target).closest('li');\r\n if (li.hasClass('expanded')) {\r\n li.find('ul').hide('fast');\r\n li.removeClass('expanded');\r\n li.find('li').removeClass('expanded');\r\n }\r\n else {\r\n li.addClass('expanded');\r\n li.children('ul').show('fast');\r\n if (li.children('ul').children('li').length === 1 && !li.children('ul').children('li').hasClass('expanded')) {\r\n li.children('ul').children('li').children('.line').click();\r\n }\r\n }\r\n }\r\n\r\n protected reportLinkClick(e: JQueryEventObject) {\r\n e.preventDefault();\r\n var dialog = new ReportDialog({ reportKey: $(e.target).data('key') });\r\n }\r\n }\r\n\r\n export interface ReportRetrieveRequest extends ServiceRequest {\r\n ReportKey?: string;\r\n }\r\n\r\n export interface ReportRetrieveResponse extends ServiceResponse {\r\n ReportKey?: string;\r\n Properties?: PropertyItem[];\r\n Title?: string;\r\n InitialSettings?: any;\r\n IsDataOnlyReport?: boolean;\r\n }\r\n }\r\n}","\r\nnamespace Serenity {\r\n\r\n @Decorators.registerClass()\r\n @Decorators.resizable()\r\n @Decorators.responsive()\r\n export class ColumnPickerDialog extends Serenity.TemplatedDialog<any> {\r\n\r\n private ulVisible: JQuery;\r\n private ulHidden: JQuery;\r\n private colById: Q.Dictionary<Slick.Column>;\r\n\r\n public allColumns: Slick.Column[];\r\n public visibleColumns: string[];\r\n public defaultColumns: string[];\r\n public done: () => void;\r\n\r\n constructor() {\r\n super();\r\n\r\n new Serenity.QuickSearchInput(this.byId(\"Search\"), {\r\n onSearch: (fld, txt, done) => {\r\n txt = Q.trimToNull(txt);\r\n if (txt != null)\r\n txt = Select2.util.stripDiacritics(txt.toLowerCase());\r\n\r\n this.element.find('li').each((x, e) => {\r\n $(e).toggle(!txt || Select2.util.stripDiacritics(\r\n $(e).text().toLowerCase()).indexOf(txt) >= 0);\r\n });\r\n done && done(true);\r\n }\r\n });\r\n\r\n this.ulVisible = this.byId(\"VisibleCols\");\r\n this.ulHidden = this.byId(\"HiddenCols\");\r\n }\r\n\r\n public static createToolButton(grid: DataGrid<any, any>): ToolButton {\r\n function onClick() {\r\n var picker = new Serenity.ColumnPickerDialog();\r\n picker.allColumns = (grid as any).allColumns;\r\n if ((grid as any).initialSettings) {\r\n var initialSettings = (grid as any).initialSettings as PersistedGridSettings;\r\n if (initialSettings.columns && initialSettings.columns.length)\r\n picker.defaultColumns = initialSettings.columns.map(x => x.id);\r\n }\r\n picker.visibleColumns = grid.slickGrid.getColumns().map(x => x.id);\r\n picker.done = () => {\r\n (grid as any).allColumns = picker.allColumns;\r\n var visible = picker.allColumns.filter(x => x.visible === true);\r\n grid.slickGrid.setColumns(visible);\r\n (grid as any).persistSettings();\r\n grid.refresh();\r\n };\r\n\r\n Q.Router.dialog(grid.element, picker.element, () => \"columns\");\r\n picker.dialogOpen();\r\n }\r\n\r\n grid.element.on('handleroute.' + (grid as any).uniqueName, (e, arg) => {\r\n if (arg && !arg.handled && arg.route == \"columns\") {\r\n onClick();\r\n }\r\n });\r\n\r\n return {\r\n hint: Q.text(\"Controls.ColumnPickerDialog.Title\"),\r\n cssClass: \"column-picker-button\",\r\n onClick: onClick\r\n }\r\n }\r\n\r\n protected getDialogOptions() {\r\n var opt = super.getDialogOptions();\r\n opt.title = Q.text(\"Controls.ColumnPickerDialog.Title\");\r\n opt.width = 600;\r\n opt.buttons = [\r\n {\r\n text: Q.text(\"Controls.ColumnPickerDialog.RestoreDefaults\"),\r\n click: () => {\r\n let liByKey: Q.Dictionary<JQuery> = {};\r\n this.ulVisible.children().add(this.ulHidden.children()).each((x, e) => {\r\n let el = $(e);\r\n liByKey[el.data('key')] = el;\r\n });\r\n\r\n let last: JQuery = null;\r\n for (let id of this.defaultColumns) {\r\n let li = liByKey[id];\r\n if (!li)\r\n continue;\r\n\r\n if (last == null)\r\n li.prependTo(this.ulVisible);\r\n else\r\n li.insertAfter(last);\r\n\r\n last = li;\r\n let key: string = li.data('key');\r\n delete liByKey[key];\r\n }\r\n\r\n for (let key in liByKey)\r\n liByKey[key].appendTo(this.ulHidden);\r\n\r\n this.updateListStates();\r\n }\r\n },\r\n {\r\n text: Q.text(\"Dialogs.OkButton\"),\r\n click: () => {\r\n let newColumns: Slick.Column[] = [];\r\n\r\n for (var col of this.allColumns)\r\n col.visible = false;\r\n\r\n this.visibleColumns = this.ulVisible.children().toArray().map(x => {\r\n let id = $(x).data(\"key\");\r\n var col = this.colById[id];\r\n col.visible = true;\r\n newColumns.push(col);\r\n return id;\r\n });\r\n\r\n for (var col of this.allColumns) {\r\n if (!col.visible)\r\n newColumns.push(col);\r\n }\r\n\r\n this.allColumns = newColumns;\r\n this.done && this.done();\r\n this.dialogClose()\r\n }\r\n },\r\n {\r\n text: Q.text(\"Dialogs.CancelButton\"),\r\n click: () => {\r\n this.dialogClose()\r\n }\r\n }\r\n ];\r\n\r\n return opt;\r\n }\r\n\r\n private getTitle(col: Slick.Column) {\r\n if (col.id == \"__select__\")\r\n return \"[x]\";\r\n\r\n return col.name || col.toolTip || col.id;\r\n }\r\n\r\n private allowHide(col: Slick.Column): boolean {\r\n return col.sourceItem == null || col.sourceItem.allowHide == null || col.sourceItem.allowHide;\r\n }\r\n\r\n private createLI(col: Slick.Column): JQuery {\r\n var allowHide = this.allowHide(col);\r\n return $(`\r\n<li data-key=\"${col.id}\" class=\"${allowHide ? \"\" : \"cant-hide\"}\">\r\n <span class=\"drag-handle\">☰</span>\r\n ${ Q.htmlEncode(this.getTitle(col)) }\r\n ${ allowHide ? `<i class=\"js-hide\" title=\"${ Q.text(\"Controls.ColumnPickerDialog.HideHint\") }\">✖</i>` : '' }\r\n <i class=\"js-show fa fa-eye\" title=\"${ Q.text(\"Controls.ColumnPickerDialog.ShowHint\") }\"></i>\r\n</li>`);\r\n }\r\n\r\n private updateListStates() {\r\n this.ulVisible.children().removeClass(\"bg-info\").addClass(\"bg-success\");\r\n this.ulHidden.children().removeClass(\"bg-success\").addClass(\"bg-info\");\r\n }\r\n\r\n protected setupColumns(): void {\r\n this.allColumns = this.allColumns || [];\r\n this.visibleColumns = this.visibleColumns || [];\r\n\r\n let visible: Q.Dictionary<boolean> = {};\r\n for (let id of this.visibleColumns) {\r\n visible[id] = true;\r\n }\r\n\r\n this.colById = {};\r\n for (let c of this.allColumns) {\r\n this.colById[c.id] = c;\r\n }\r\n\r\n if (this.defaultColumns == null)\r\n this.defaultColumns = this.visibleColumns.slice(0);\r\n\r\n let hidden: Slick.Column[] = [];\r\n\r\n for (let c of this.allColumns) {\r\n if (!visible[c.id] && (!c.sourceItem ||\r\n (c.sourceItem.filterOnly !== true &&\r\n (c.sourceItem.readPermission == null || Q.Authorization.hasPermission(c.sourceItem.readPermission))))) {\r\n hidden.push(c);\r\n }\r\n }\r\n\r\n let hiddenColumns = hidden.sort((a, b) => Q.turkishLocaleCompare(this.getTitle(a), this.getTitle(b)));\r\n\r\n for (let id of this.visibleColumns) {\r\n var c = this.colById[id];\r\n if (!c)\r\n continue;\r\n\r\n this.createLI(c).appendTo(this.ulVisible);\r\n }\r\n\r\n for (let c of hiddenColumns) {\r\n this.createLI(c).appendTo(this.ulHidden);\r\n }\r\n\r\n this.updateListStates();\r\n\r\n if (typeof Sortable !== \"undefined\" &&\r\n Sortable.create) {\r\n\r\n Sortable.create(this.ulVisible[0], {\r\n group: this.uniqueName + \"_group\",\r\n filter: '.js-hide',\r\n onFilter: evt => {\r\n $(evt.item).appendTo(this.ulHidden);\r\n this.updateListStates();\r\n },\r\n onMove: x => {\r\n if ($(x.dragged).hasClass('cant-hide') &&\r\n x.from == this.ulVisible[0] &&\r\n x.to !== x.from)\r\n return false;\r\n return true;\r\n },\r\n onEnd: evt => this.updateListStates()\r\n });\r\n\r\n Sortable.create(this.ulHidden[0], {\r\n group: this.uniqueName + \"_group\",\r\n sort: false,\r\n filter: '.js-show',\r\n onFilter: evt => {\r\n $(evt.item).appendTo(this.ulVisible);\r\n this.updateListStates();\r\n },\r\n onEnd: evt => this.updateListStates()\r\n });\r\n }\r\n }\r\n\r\n protected onDialogOpen(): void {\r\n super.onDialogOpen();\r\n this.element.find(\"input\").removeAttr(\"disabled\")\r\n this.element.closest('.ui-dialog').children(\".ui-dialog-buttonpane\")\r\n .find('button').eq(0).addClass(\"restore-defaults\")\r\n .next().focus();\r\n\r\n this.setupColumns();\r\n Q.centerDialog(this.element);\r\n }\r\n\r\n protected getTemplate() {\r\n return `\r\n<div class=\"search\"><input id=\"~_Search\" type=\"text\" disabled /></div>\r\n<div class=\"columns-container\">\r\n<div class=\"column-list visible-list bg-success\">\r\n <h5><i class=\"fa fa-eye\"></i> ${ Q.text(\"Controls.ColumnPickerDialog.VisibleColumns\") }</h5>\r\n <ul id=\"~_VisibleCols\"></ul>\r\n</div>\r\n<div class=\"column-list hidden-list bg-info\">\r\n <h5><i class=\"fa fa-list\"></i> ${ Q.text(\"Controls.ColumnPickerDialog.HiddenColumns\") }</h5>\r\n <ul id=\"~_HiddenCols\"></ul>\r\n</div>\r\n</div>`;\r\n }\r\n }\r\n}\r\n","namespace Serenity {\r\n\r\n /**\r\n * A mixin that can be applied to a DataGrid for tree functionality\r\n */\r\n export class TreeGridMixin<TItem> {\r\n\r\n private dataGrid: DataGrid<TItem, any>;\r\n private getId: (item: TItem) => any;\r\n\r\n constructor(private options: TreeGridMixinOptions<TItem>) {\r\n var dg = this.dataGrid = options.grid;\r\n var idProperty = (dg as any).getIdProperty();\r\n var getId = this.getId = (item: TItem) => (item as any)[idProperty];\r\n\r\n dg.element.find('.grid-container').on('click', e => {\r\n if ($(e.target).hasClass('s-TreeToggle')) {\r\n var src = dg.slickGrid.getCellFromEvent(e);\r\n if (src.cell >= 0 &&\r\n src.row >= 0) {\r\n SlickTreeHelper.toggleClick<TItem>(e, src.row, src.row, dg.view, getId);\r\n }\r\n }\r\n });\r\n\r\n var oldViewFilter = (dg as any).onViewFilter;\r\n (dg as any).onViewFilter = function (item: TItem) {\r\n if (!oldViewFilter.apply(this, [item]))\r\n return false;\r\n\r\n return SlickTreeHelper.filterById(item, dg.view, options.getParentId);\r\n };\r\n\r\n var oldProcessData = (dg as any).onViewProcessData;\r\n (dg as any).onViewProcessData = function (response: ListResponse<TItem>) {\r\n\r\n response = oldProcessData.apply(this, [response]);\r\n response.Entities = TreeGridMixin.applyTreeOrdering(response.Entities, getId, options.getParentId);\r\n SlickTreeHelper.setIndents(response.Entities, getId, options.getParentId,\r\n (options.initialCollapse && options.initialCollapse()) || false);\r\n return response;\r\n };\r\n\r\n if (options.toggleField) {\r\n var col = Q.tryFirst(dg['allColumns'] || dg.slickGrid.getColumns() || [], x => x.field == options.toggleField);\r\n if (col) {\r\n col.format = SlickFormatting.treeToggle(() => dg.view, getId,\r\n col.format || (ctx => Q.htmlEncode(ctx.value)));\r\n col.formatter = SlickHelper.convertToFormatter(col.format);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Expands / collapses all rows in a grid automatically\r\n */\r\n toggleAll(): void {\r\n SlickTreeHelper.setCollapsed(this.dataGrid.view.getItems(),\r\n !this.dataGrid.view.getItems().every(x => (x as any)._collapsed == true));\r\n\r\n this.dataGrid.view.setItems(this.dataGrid.view.getItems(), true);\r\n }\r\n\r\n collapseAll(): void {\r\n SlickTreeHelper.setCollapsed(this.dataGrid.view.getItems(), true);\r\n this.dataGrid.view.setItems(this.dataGrid.view.getItems(), true);\r\n }\r\n \r\n expandAll(): void {\r\n SlickTreeHelper.setCollapsed(this.dataGrid.view.getItems(), false);\r\n this.dataGrid.view.setItems(this.dataGrid.view.getItems(), true);\r\n }\r\n \r\n /**\r\n * Reorders a set of items so that parents comes before their children.\r\n * This method is required for proper tree ordering, as it is not so easy to perform with SQL.\r\n * @param items list of items to be ordered\r\n * @param getId a delegate to get ID of a record (must return same ID with grid identity field)\r\n * @param getParentId a delegate to get parent ID of a record\r\n */\r\n static applyTreeOrdering<TItem>(items: TItem[], getId: (item: TItem) => any, getParentId: (item: TItem) => any): TItem[] {\r\n var result: TItem[] = [];\r\n\r\n var byId = Q.toGrouping(items, getId);\r\n var byParentId = Q.toGrouping(items, getParentId);\r\n var visited = {};\r\n\r\n function takeChildren(theParentId: any) {\r\n if (visited[theParentId])\r\n return;\r\n\r\n visited[theParentId] = true;\r\n for (var child of (byParentId[theParentId] || [])) {\r\n result.push(child);\r\n takeChildren(getId(child));\r\n }\r\n }\r\n\r\n for (var item of items)\r\n {\r\n var parentId = getParentId(item);\r\n if (parentId == null ||\r\n !((byId[parentId] || []).length)) {\r\n result.push(item);\r\n takeChildren(getId(item));\r\n }\r\n }\r\n\r\n return result;\r\n }\r\n }\r\n\r\n export interface TreeGridMixinOptions<TItem> {\r\n // data grid object\r\n grid: Serenity.DataGrid<TItem, any>;\r\n // a function to get parent id\r\n getParentId: (item: TItem) => any;\r\n // where should the toggle button be placed\r\n toggleField: string;\r\n // a delegate that should return initial collapsing state\r\n initialCollapse?: () => boolean;\r\n }\r\n}\r\n","interface JQuery {\r\n flexHeightOnly(flexY?: number): JQuery;\r\n flexWidthOnly(flexX?: number): JQuery;\r\n flexWidthHeight(flexX: number, flexY: number): JQuery;\r\n flexX(flexX: number): JQuery;\r\n flexY(flexY: number): JQuery;\r\n}\r\n\r\nif ($.fn.button && ($.fn.button as any).noConflict) {\r\n let btn = ($.fn.button as any).noConflict();\r\n ($.fn as any).btn = btn;\r\n}\r\n\r\n$.fn.flexHeightOnly = function (flexY = 1) {\r\n return this.flexWidthHeight(0, flexY);\r\n}\r\n\r\n$.fn.flexWidthOnly = function (flexX = 1) {\r\n return this.flexWidthHeight(flexX, 0);\r\n}\r\n\r\n$.fn.flexWidthHeight = function (flexX = 1, flexY = 1) {\r\n return this.addClass('flexify').data('flex-x', flexX).data('flex-y', flexY);\r\n}\r\n\r\n$.fn.flexX = function (flexX: number): JQuery {\r\n return this.data('flex-x', flexX);\r\n}\r\n\r\n$.fn.flexY = function (flexY: number): JQuery {\r\n return this.data('flex-y', flexY);\r\n}","interface JQuery {\r\n getWidget<TWidget>(widgetType: { new (...args: any[]): TWidget }): TWidget;\r\n tryGetWidget<TWidget>(widgetType: { new (...args: any[]): TWidget }): TWidget;\r\n}","if ($.fn.button && ($.fn.button as any).noConflict) {\r\n let btn = ($.fn.button as any).noConflict();\r\n ($.fn as any).btn = btn;\r\n}","\r\ninterface JQuery {\r\n slickPager(options: Slick.PagerOptions): JQuery;\r\n}\r\n\r\n// PAGER -----\r\n(function ($: JQueryStatic) {\r\n\r\n$.widget(\"ui.slickPager\", {\r\n options: {\r\n view: null,\r\n showRowsPerPage: true,\r\n rowsPerPageOptions: [20, 100, 500, 2000]\r\n },\r\n\r\n _create: function () {\r\n var self = this;\r\n var o = self.options;\r\n var v = o.view;\r\n\r\n if (!v)\r\n throw \"SlickPager requires view option to be set!\";\r\n\r\n this.element.addClass('s-SlickPager slick-pg')\r\n .html(\r\n '<div class=\"slick-pg-in\">' + \r\n '<div class=\"slick-pg-grp\">' +\r\n '<div class=\"slick-pg-first slick-pg-btn\"><span class=\"slick-pg-btn-span\"></span></div>' + \r\n '<div class=\"slick-pg-prev slick-pg-btn\"><span class=\"slick-pg-btn-span\"></span></div>' + \r\n '</div><div class=\"slick-pg-sep\"></div><div class=\"slick-pg-grp\">' + \r\n '<span class=\"slick-pg-control\"> ' + Q.text(\"Controls.Pager.Page\") +\r\n ' <input class=\"slick-pg-current\" type=\"text\" size=\"4\" value=\"1\" /> / ' +\r\n '<span class=\"slick-pg-total\"> 1 </span></span>' + \r\n '</div><div class=\"slick-pg-sep\"></div><div class=\"slick-pg-grp\">' + \r\n '<div class=\"slick-pg-next slick-pg-btn\"><span class=\"slick-pg-btn-span\"></span></div>' + \r\n '<div class=\"slick-pg-last slick-pg-btn\"><span class=\"slick-pg-btn-span\"></span></div>' + \r\n '</div><div class=\"slick-pg-sep\"></div><div class=\"slick-pg-grp\">' + \r\n '<div class=\"slick-pg-reload slick-pg-btn\"><span class=\"slick-pg-btn-span\"></span></div>' + \r\n '</div><div class=\"slick-pg-sep\"></div>' + \r\n '<div class=\"slick-pg-grp\"><span class=\"slick-pg-stat\"></span></div></div>');\r\n\r\n $('.slick-pg-reload', this.element).click(function () { v.populate() });\r\n $('.slick-pg-first', this.element).click(function () { self._changePage('first') });\r\n $('.slick-pg-prev', this.element).click(function () { self._changePage('prev') });\r\n $('.slick-pg-next', this.element).click(function () { self._changePage('next') });\r\n $('.slick-pg-last', this.element).click(function () { self._changePage('last') });\r\n $('.slick-pg-current', this.element).keydown(function (e) { if (e.keyCode == 13) self._changePage('input') });\r\n\r\n if (self.options.showRowsPerPage) {\r\n var opt: string, sel = \"\";\r\n for (var nx = 0; nx < o.rowsPerPageOptions.length; nx++) {\r\n if (v.rowsPerPage == o.rowsPerPageOptions[nx]) \r\n sel = 'selected=\"selected\"'; else sel = '';\r\n opt += \"<option value='\" + o.rowsPerPageOptions[nx] + \"' \" + sel + \" >\" + o.rowsPerPageOptions[nx] + \" </option>\";\r\n };\r\n $('.slick-pg-in', this.element).prepend('<div class=\"slick-pg-grp\"><select class=\"slick-pg-size\" name=\"rp\">' + opt + '</select></div><div class=\"slick-pg-sep\"></div>');\r\n $('select.slick-pg-size', this.element).change(\r\n function () {\r\n if (o.onRowsPerPageChange)\r\n o.onRowsPerPageChange(+this.value);\r\n else {\r\n v.newp = 1;\r\n v.setPagingOptions({\r\n page: 1,\r\n rowsPerPage: +this.value \r\n });\r\n }\r\n }\r\n );\r\n }\r\n\r\n v.onPagingInfoChanged.subscribe(function() {\r\n self._updatePager();\r\n });\r\n },\r\n \r\n destroy: function () {\r\n $.Widget.prototype.destroy.apply(this, arguments);\r\n },\r\n \r\n _changePage: function (ctype: string) { //change page\r\n\r\n var view = this.options.view;\r\n\r\n if (!view || view.loading)\r\n return true;\r\n\r\n var info = view.getPagingInfo();\r\n var pages = (!info.rowsPerPage || !info.totalCount) ? 1 : Math.ceil(info.totalCount / info.rowsPerPage);\r\n\r\n var newp: number;\r\n\r\n switch (ctype) {\r\n case 'first': newp = 1; break;\r\n case 'prev': if (info.page > 1) newp = parseInt(info.page) - 1; break;\r\n case 'next': if (info.page < pages) newp = parseInt(info.page) + 1; break;\r\n case 'last': newp = pages; break;\r\n case 'input':\r\n var nv = parseInt($('input.slick-pg-current', this.element).val());\r\n if (isNaN(nv)) \r\n nv = 1;\r\n else if (nv < 1) \r\n nv = 1;\r\n else if (nv > pages) \r\n nv = pages;\r\n\r\n $('.slick-pg-current', this.element).val(nv);\r\n\r\n newp = nv;\r\n break;\r\n }\r\n\r\n if (newp == info.page)\r\n return false;\r\n\r\n if (this.options.onChangePage)\r\n this.options.onChangePage(newp);\r\n else {\r\n view.setPagingOptions({ page: newp });\r\n }\r\n },\r\n\r\n _updatePager: function () { \r\n\r\n var view = this.options.view;\r\n var info = view.getPagingInfo();\r\n var pages = (!info.rowsPerPage || !info.totalCount) ? 1 : Math.ceil(info.totalCount / info.rowsPerPage);\r\n\r\n $('.slick-pg-current', this.element).val(info.page);\r\n $('.slick-pg-total', this.element).html(pages as any);\r\n\r\n var r1 = (info.page - 1) * info.rowsPerPage + 1;\r\n var r2 = r1 + info.rowsPerPage - 1;\r\n\r\n if (info.totalCount < r2) \r\n r2 = info.totalCount;\r\n\r\n var stat: string;\r\n\r\n if (info.loading) {\r\n stat = Q.text(\"Controls.Pager.LoadingStatus\");\r\n }\r\n else if (info.error) {\r\n stat = info.error;\r\n }\r\n else if (info.totalCount > 0) {\r\n stat = Q.text(\"Controls.Pager.PageStatus\");\r\n stat = stat.replace(/{from}/, <any>r1);\r\n stat = stat.replace(/{to}/, <any>r2);\r\n stat = stat.replace(/{total}/, info.totalCount);\r\n }\r\n else\r\n stat = Q.text(\"Controls.Pager.NoRowStatus\");\r\n\r\n $('.slick-pg-stat', this.element).html(stat);\r\n $('.slick-pg-size', this.element).val((info.rowsPerPage || 0).toString());\r\n },\r\n\r\n _setOption: function (key: string, value: any) {\r\n $.Widget.prototype._setOption.apply(this, arguments);\r\n }\r\n});\r\n\r\n})(jQuery); \r\n\r\ndeclare namespace Slick.Data {\r\n class GroupItemMetadataProvider {\r\n constructor();\r\n }\r\n}\r\n\r\ndeclare namespace Slick {\r\n interface PagerOptions {\r\n view?: Slick.RemoteView<any>;\r\n showRowsPerPage?: boolean;\r\n rowsPerPage?: number;\r\n rowsPerPageOptions?: number[],\r\n onChangePage?: (newPage: number) => void\r\n }\r\n\r\n interface FormatterContext {\r\n row?: number;\r\n cell?: number;\r\n value?: any;\r\n column?: any;\r\n item?: any;\r\n }\r\n\r\n interface Formatter {\r\n format(ctx: FormatterContext): string;\r\n }\r\n\r\n export type Format = (ctx: Slick.FormatterContext) => string;\r\n\r\n export interface IEventData {\r\n isPropagationStopped(): boolean;\r\n isImmediatePropagationStopped(): boolean;\r\n }\r\n\r\n class Event<TArgs = any> {\r\n subscribe(handler: Handler<TArgs>): void;\r\n unsubscribe(handler: Handler<TArgs>): void;\r\n notify(args?: TArgs, e?: IEventData, scope?: any): void;\r\n clear(): void;\r\n }\r\n\r\n interface PositionInfo {\r\n bottom: number;\r\n height: number;\r\n left: number;\r\n right: number;\r\n top: number;\r\n visible: boolean;\r\n width: number;\r\n }\r\n\r\n interface SlickRangeInfo {\r\n top: number;\r\n bottom: number;\r\n leftPx: number;\r\n rightPx: number;\r\n }\r\n\r\n class EventData {\r\n constructor();\r\n isPropagationStopped(): boolean;\r\n isImmediatePropagationStopped(): boolean;\r\n }\r\n\r\n type AsyncPostRender = (cellNode: any, row: number, item: any, column: Slick.Column, clean?: boolean) => void;\r\n type CancellableViewCallback<TEntity> = (view: Slick.RemoteView<TEntity>) => boolean;\r\n type ColumnFormatter = (row: number, cell: number, value: any, column: Slick.Column, item: any) => string;\r\n type RemoteViewAjaxCallback<TEntity> = (view: Slick.RemoteView<TEntity>, options: JQueryAjaxSettings) => boolean;\r\n type RemoteViewFilter<TEntity> = (item: TEntity, view: Slick.RemoteView<TEntity>) => boolean;\r\n type RemoteViewProcessCallback<TEntity> = (data: Serenity.ListResponse<TEntity>, view: Slick.RemoteView<TEntity>) => Serenity.ListResponse<TEntity>;\r\n type Handler<TArgs> = (e: JQueryEventObject, args: TArgs) => void;\r\n\r\n class EventHandler<TArgs = any> {\r\n subscribe<TArgs>(event: Event<TArgs>, handler: Handler<TArgs>): EventHandler<TArgs>;\r\n unsubscribe<TArgs>(event: Event<TArgs>, handler: Handler<TArgs>): EventHandler<TArgs>;\r\n unsubscribeAll(): EventHandler<TArgs>;\r\n }\r\n\r\n interface Column {\r\n asyncPostRender?: Slick.AsyncPostRender;\r\n behavior?: any;\r\n cannotTriggerInsert?: boolean;\r\n cssClass?: string;\r\n defaultSortAsc?: boolean;\r\n editor?: Function;\r\n field: string;\r\n focusable?: boolean;\r\n formatter?: Slick.ColumnFormatter;\r\n headerCssClass?: string;\r\n id?: string;\r\n maxWidth?: any;\r\n minWidth?: number;\r\n name?: string;\r\n rerenderOnResize?: boolean;\r\n resizable?: boolean;\r\n selectable?: boolean;\r\n sortable?: boolean;\r\n toolTip?: string;\r\n width?: number;\r\n format?: (ctx: Slick.FormatterContext) => string;\r\n referencedFields?: string[];\r\n sourceItem?: Serenity.PropertyItem;\r\n sortOrder?: number;\r\n groupTotalsFormatter?: (p1?: GroupTotals<any>, p2?: Column) => string;\r\n visible?: boolean;\r\n }\r\n\r\n class RowMoveManager {\r\n constructor(options: Slick.RowMoveManagerOptions);\r\n onBeforeMoveRows: Slick.Event;\r\n onMoveRows: Slick.Event;\r\n }\r\n\r\n class RowSelectionModel {\r\n }\r\n\r\n class AutoTooltips {\r\n constructor(options: Slick.AutoTooltipsOptions);\r\n }\r\n\r\n export interface AutoTooltipsOptions {\r\n enableForHeaderCells?: boolean;\r\n enableForCells?: boolean;\r\n maxToolTipLength?: number;\r\n }\r\n\r\n interface GroupInfo<TItem> {\r\n getter?: any;\r\n formatter?: (p1: Slick.Group<TItem>) => string;\r\n comparer?: (a: Slick.Group<TItem>, b: Slick.Group<TItem>) => number;\r\n aggregators?: any[];\r\n aggregateCollapsed?: boolean;\r\n lazyTotalsCalculation?: boolean;\r\n }\r\n\r\n interface RowCell {\r\n row: number;\r\n cell: number;\r\n }\r\n\r\n interface RowMoveManagerOptions {\r\n cancelEditOnDrag: boolean;\r\n }\r\n\r\n interface SummaryOptions {\r\n aggregators: any[];\r\n }\r\n\r\n class Group<TEntity> {\r\n isGroup: boolean;\r\n level: number;\r\n count: number;\r\n value: any;\r\n title: string;\r\n collapsed: boolean;\r\n totals: any;\r\n rows: any;\r\n groups: Group<TEntity>[];\r\n groupingKey: string;\r\n }\r\n\r\n class GroupTotals<TEntity> {\r\n isGroupTotals: boolean;\r\n group: Group<TEntity>;\r\n initialized: boolean;\r\n sum: any;\r\n avg: any;\r\n min: any;\r\n max: any;\r\n }\r\n\r\n interface GridOptions {\r\n asyncEditorLoading?: boolean;\r\n asyncEditorLoadDelay?: number;\r\n asyncPostRenderDelay?: number;\r\n asyncPostRenderCleanupDelay?: number;\r\n autoEdit?: boolean;\r\n autoHeight?: boolean;\r\n cellFlashingCssClass?: string;\r\n cellHighlightCssClass?: string;\r\n dataItemColumnValueExtractor?: () => void;\r\n groupingPanel?: boolean,\r\n groupingPanelHeight?: number;\r\n setGroupingPanelVisibility?: (value: boolean) => void;\r\n defaultColumnWidth?: number;\r\n defaultFormatter?: () => void;\r\n editable?: boolean;\r\n editCommandHandler?: () => void;\r\n editorFactory?: () => void;\r\n editorLock?: any;\r\n enableAddRow?: boolean;\r\n enableAsyncPostRender?: boolean;\r\n enableAsyncPostRenderCleanup?: boolean;\r\n enableCellRangeSelection?: boolean;\r\n enableCellNavigation?: boolean;\r\n enableColumnReorder?: boolean;\r\n enableRowReordering?: boolean;\r\n enableTextSelectionOnCells?: boolean;\r\n explicitInitialization?: boolean;\r\n forceFitColumns?: boolean;\r\n forceSyncScrolling?: boolean;\r\n formatterFactory?: () => void;\r\n fullWidthRows?: boolean;\r\n frozenColumn?: number;\r\n frozenRow?: number;\r\n frozenBottom?: boolean;\r\n headerRowHeight?: number;\r\n leaveSpaceForNewRows?: boolean;\r\n minBuffer?: number;\r\n multiColumnSort?: boolean;\r\n multiSelect?: boolean;\r\n renderAllCells?: boolean;\r\n rowHeight?: number;\r\n selectedCellCssClass?: string;\r\n showHeaderRow?: boolean;\r\n showFooterRow?: boolean;\r\n syncColumnCellResize?: boolean;\r\n topPanelHeight?: number;\r\n }\r\n\r\n interface RemoteView<TEntity> {\r\n constructor(options: RemoteViewOptions): void;\r\n onSubmit: Slick.CancellableViewCallback<TEntity>;\r\n onDataChanged: Slick.Event;\r\n onDataLoaded: Slick.Event;\r\n onAjaxCall: Slick.RemoteViewAjaxCallback<TEntity>;\r\n onProcessData: Slick.RemoteViewProcessCallback<TEntity>;\r\n addData(data: Serenity.ListResponse<TEntity>): void;\r\n beginUpdate(): void;\r\n endUpdate(): void;\r\n deleteItem(id: any): void;\r\n getItems(): TEntity[];\r\n setFilter(filter: RemoteViewFilter<TEntity>): void;\r\n setItems(items: any[], fullReset: boolean): void;\r\n getItemById(id: any): TEntity;\r\n getRowById(id: any): number;\r\n updateItem(id: any, item: TEntity): void;\r\n addItem(item: TEntity): void;\r\n getIdxById(id: any): any;\r\n getItemByIdx(index: number): any;\r\n setGrouping(groupInfo: Slick.GroupInfo<TEntity>[]): void;\r\n collapseAllGroups(level: number): void;\r\n expandAllGroups(level: number): void;\r\n expandGroup(keys: any[]): void;\r\n collapseGroup(keys: any[]): void;\r\n setSummaryOptions(options: Slick.SummaryOptions): void;\r\n refresh(): void;\r\n populate(): void;\r\n populateLock(): void;\r\n populateUnlock(): void;\r\n getItem(row: number): any;\r\n getLength(): number;\r\n params: any;\r\n sortBy: string[];\r\n url: string;\r\n seekToPage?: number;\r\n }\r\n\r\n interface RemoteViewOptions {\r\n autoLoad?: boolean;\r\n idField?: string;\r\n contentType?: string;\r\n dataType?: string;\r\n filter?: any;\r\n params?: any;\r\n onSubmit?: Slick.Event;\r\n url?: string;\r\n sortBy?: any;\r\n rowsPerPage?: number;\r\n seekToPage?: number;\r\n onProcessData?: Slick.Event;\r\n method?: string;\r\n getItemMetadata?: (p1?: any, p2?: number) => any;\r\n errorMsg?: string;\r\n }\r\n\r\n interface ColumnSort {\r\n columnId?: string;\r\n sortAsc?: boolean;\r\n }\r\n\r\n interface RangeInfo {\r\n top?: number;\r\n bottom?: number;\r\n leftPx?: number;\r\n rightPx?: number;\r\n }\r\n\r\n class Grid {\r\n constructor(container: JQuery, data: any, columns: Column[], options: GridOptions);\r\n }\r\n\r\n interface Grid {\r\n init(): void;\r\n destroy(): void;\r\n getData(): any[];\r\n getDataItem(index: number): any;\r\n setData(data: any[], scrollToTop: boolean): void;\r\n getDataLength(): number;\r\n getOptions(): GridOptions;\r\n setOptions(options: GridOptions): void;\r\n getSelectedRows(): any;\r\n getSelectionModel(): any;\r\n setSelectionModel(model: any): any;\r\n setSelectedRows(rows: any): void;\r\n autoSizeColumns(): void;\r\n getColumnIndex(id: string): number;\r\n getColumns(): Column[];\r\n getUID(): string;\r\n setColumns(columns: Column[]): void;\r\n setSortColumn(columnId: string, ascending: boolean): void;\r\n setSortColumns(cols: Slick.ColumnSort[]): void;\r\n updateColumnHeader(columnId: string, title: string, toolTip: string): void;\r\n addCellCssStyles(key: string, hash: any): void;\r\n canCellBeActive(row: number, col: number): boolean;\r\n canCellBeSelected(row: number, col: number): boolean;\r\n editActiveCell(editor: Function): void;\r\n flashCell(row: number, cell: number, speed: number): void;\r\n getActiveCell(): Slick.RowCell;\r\n getActiveCellNode(): any;\r\n getActiveCellPosition(): Slick.PositionInfo;\r\n getCellCssStyles(key: string): any;\r\n getCellEditor(): any;\r\n getCellFromEvent(e: any): Slick.RowCell;\r\n getCellFromPoint(x: number, y: number): Slick.RowCell;\r\n getCellNode(row: number, cell: number): any;\r\n getCellNodeBox(row: number, cell: number): Slick.PositionInfo;\r\n goToCell(row: number, cell: number, forceEdit: boolean): void;\r\n navigateDown(): void;\r\n navigateLeft(): void;\r\n navigateNext(): void;\r\n navigatePrev(): void;\r\n navigateRight(): void;\r\n navigateUp(): void;\r\n removeCellCssStyles(key: string): void;\r\n resetActiveCell(): void;\r\n registerPlugin(plugin: any): void;\r\n setActiveCell(row: number, cell: number): void;\r\n setCellCssStyles(key: string, hash: any): void;\r\n getCanvasNode(): any;\r\n getGridPosition(): Slick.PositionInfo;\r\n getRenderedRange(viewportTop: number, viewportLeft: number): Slick.RangeInfo;\r\n getViewport(viewportTop: number, viewportLeft: number): Slick.RangeInfo;\r\n getViewport(): Slick.RangeInfo;\r\n invalidate(): void;\r\n invalidateAllRows(): void;\r\n invalidateRow(row: number): void;\r\n invalidateRows(rows: any): void;\r\n render(): void;\r\n resizeCanvas(): void;\r\n scrollCellIntoView(row: number, cell: number): void;\r\n scrollRowIntoView(row: number, doPaging: boolean): void;\r\n scrollRowToTop(row: number): void;\r\n updateCell(row: number, cell: number): void;\r\n updateRow(row: number): void;\r\n updateRowCount(): void;\r\n updateColumnHeader(columnId: string, title?: string, toolTip?: string): void;\r\n getGroupingPanel(): HTMLDivElement;\r\n getHeaderRow(): any;\r\n getEditorLock(): any;\r\n getHeaderRowColumn(columnId: string): any;\r\n getSortColumns(): any;\r\n getTopPanel(): any;\r\n setHeaderRowVisibility(visible: boolean): void;\r\n onScroll?: Slick.Event;\r\n onSort?: Slick.Event;\r\n onHeaderContextMenu?: Slick.Event;\r\n onHeaderClick?: Slick.Event;\r\n onMouseEnter?: Slick.Event;\r\n onMouseLeave?: Slick.Event;\r\n onClick?: Slick.Event;\r\n onDblClick?: Slick.Event;\r\n onContextMenu?: Slick.Event;\r\n onKeyDown?: Slick.Event;\r\n onAddNewRow?: Slick.Event;\r\n onValidationError?: Slick.Event;\r\n onViewportChanged?: Slick.Event;\r\n onColumnsReordered?: Slick.Event;\r\n onColumnsResized?: Slick.Event;\r\n onCellChange?: Slick.Event;\r\n onBeforeEditCell?: Slick.Event;\r\n onBeforeCellEditorDestroy?: Slick.Event;\r\n onHeaderCellRendered?: Slick.Event;\r\n onBeforeHeaderCellDestroy?: Slick.Event;\r\n onBeforeDestroy?: Slick.Event;\r\n onActiveCellChanged?: Slick.Event;\r\n onActiveCellPositionChanged?: Slick.Event;\r\n onDragInit?: Slick.Event;\r\n onDragStart?: Slick.Event;\r\n onDrag?: Slick.Event;\r\n onDragEnd?: Slick.Event;\r\n onSelectedRowsChanged?: Slick.Event;\r\n onCellCssStylesChanged?: Slick.Event;\r\n }\r\n}\r\n\r\nnamespace Slick.Data {\r\n var GroupItemMetadataProvider: any;\r\n}\r\n\r\nnamespace Slick {\r\n export class RemoteView<TEntity> {\r\n constructor(options: any) {\r\n var self = this;\r\n\r\n var defaults = {\r\n groupItemMetadataProvider: <any>null,\n inlineFilters: false\n }\r\n\r\n var idProperty: string;\r\n var items: any[] = [];\r\n var rows: any[] = [];\r\n var idxById = {};\r\n var rowsById: any = null;\r\n var filter: any = null;\r\n var updated: any = null;\r\n var suspend = 0;\r\n\r\n var sortAsc = true;\r\n var fastSortField: string;\r\n var sortComparer: any;\r\n var refreshHints: any = {};\n var prevRefreshHints: any = {};\n var filterArgs: any;\n var filteredItems: any = [];\n var compiledFilter: any;\n var compiledFilterWithCaching: any;\n var filterCache: any[] = [];\n\n var groupingInfoDefaults = {\n getter: <any>null,\n formatter: <any>null,\n comparer: function (a: any, b: any) {\n return (a.value === b.value ? 0 :\n (a.value > b.value ? 1 : -1)\n );\n },\n predefinedValues: <any[]>[],\n aggregateEmpty: false,\n aggregateCollapsed: false,\n aggregateChildGroups: false,\n collapsed: false,\n displayTotalsRow: true,\n lazyTotalsCalculation: false\n };\n var summaryOptions: any = {};\n var groupingInfos: any[] = [];\n var groups: any[] = [];\n var toggledGroupsByLevel: any[] = [];\n var groupingDelimiter = ':|:';\n\r\n var page = 1;\r\n var totalRows = 0;\r\n\r\n var onRowCountChanged = new Event();\r\n var onRowsChanged = new Event();\r\n var onPagingInfoChanged = new Event();\r\n\r\n var loading: any = false;\r\n var errorMessage: string = null;\r\n var populateLocks = 0;\r\n var populateCalls = 0;\r\n var contentType: string;\r\n var dataType: string;\r\n var totalCount: number = null;\r\n var onDataChanged = new Event();\r\n var onDataLoading = new Event();\r\n var onDataLoaded = new Event();\r\n var onClearData = new Event();\r\n var intf: any;\r\n\r\n function beginUpdate() {\r\n suspend++;\r\n }\r\n\r\n function endUpdate() {\r\n suspend--;\r\n if (suspend <= 0)\r\n refresh();\r\n }\r\n\r\n function setRefreshHints(hints: any) {\n refreshHints = hints;\n }\n\n function setFilterArgs(args: any) {\n filterArgs = args;\n }\n\r\n function updateIdxById(startingIndex?: number) {\r\n startingIndex = startingIndex || 0;\n var id: any;\r\n for (var i = startingIndex, l = items.length; i < l; i++) {\n id = items[i][idProperty];\n if (id === undefined) {\n var msg = \"Each data element must implement a unique '\" +\r\n idProperty + \"' property. Object at index '\" + i + \"' \" +\r\n \"has no identity value: \";\r\n\r\n msg += (<any>$).toJSON(items[i]);\r\n throw msg;\r\n }\r\n idxById[id] = i;\r\n }\r\n }\r\n\r\n function ensureIdUniqueness() {\n var id: any;\n for (var i = 0, l = items.length; i < l; i++) {\n id = items[i][idProperty];\n if (id === undefined || idxById[id] !== i) {\n var msg = \"Each data element must implement a unique '\" +\r\n idProperty + \"' property. Object at index '\" + i + \"' \";\r\n\r\n if (id == undefined)\r\n msg += \"has no identity value: \";\r\n else\r\n msg += \"has repeated identity value '\" + id + \"': \";\r\n\r\n msg += (<any>$).toJSON(items[i]);\r\n throw msg;\n }\n }\n }\r\n\r\n function getItems() {\r\n return items;\r\n }\r\n\r\n function setItems(data: any[]) {\r\n items = filteredItems = data;\r\n idxById = {};\r\n rowsById = null;\r\n summaryOptions.totals = {};\r\n updateIdxById();\r\n ensureIdUniqueness();\r\n\r\n if (suspend) {\r\n recalc(items);\r\n }\r\n else {\r\n refresh();\r\n }\r\n\r\n onDataChanged.notify({ dataView: self }, null, self);\r\n }\r\n\r\n function setPagingOptions(args: any) {\r\n var anyChange = false;\r\n\r\n if (args.rowsPerPage != undefined &&\r\n intf.rowsPerPage != args.rowsPerPage) {\r\n intf.rowsPerPage = args.rowsPerPage;\r\n anyChange = true;\r\n }\r\n\r\n if (args.page != undefined) {\r\n var newPage: number;\r\n if (!intf.rowsPerPage)\r\n newPage = 1;\r\n else if (totalCount == null)\r\n newPage = args.page;\r\n else\r\n newPage = Math.min(args.page, Math.ceil(totalCount / intf.rowsPerPage) + 1);\r\n\r\n if (newPage < 1)\r\n newPage = 1;\r\n\r\n if (newPage != page) {\r\n intf.seekToPage = newPage;\r\n anyChange = true;\r\n }\r\n }\r\n\r\n if (anyChange)\r\n populate();\r\n }\r\n\r\n function getPagingInfo() {\r\n return {\r\n rowsPerPage: intf.rowsPerPage,\r\n page: page,\r\n totalCount: totalCount,\r\n loading: loading,\r\n error: errorMessage,\r\n dataView: self\r\n };\r\n }\r\n\r\n function sort(comparer: any, ascending: boolean) {\n sortAsc = ascending;\n sortComparer = comparer;\n fastSortField = null;\n if (ascending === false) {\n items.reverse();\n }\n items.sort(comparer);\n if (ascending === false) {\n items.reverse();\n }\n idxById = {};\n updateIdxById();\n refresh();\n }\n\n /***\n * Provides a workaround for the extremely slow sorting in IE.\n * Does a [lexicographic] sort on a give column by temporarily overriding Object.prototype.toString\n * to return the value of that field and then doing a native Array.sort().\n */\n function fastSort(field: any, ascending: boolean) {\n sortAsc = ascending;\n fastSortField = field;\n sortComparer = null;\n var oldToString = Object.prototype.toString;\n Object.prototype.toString = (typeof field === \"function\") ? field : function () {\n return this[field]\n };\n // an extra reversal for descending sort keeps the sort stable\n // (assuming a stable native sort implementation, which isn't true in some cases)\n if (ascending === false) {\n items.reverse();\n }\n items.sort();\n Object.prototype.toString = oldToString;\n if (ascending === false) {\n items.reverse();\n }\n idxById = {};\n updateIdxById();\n refresh();\n }\n\n function reSort() {\n if (sortComparer) {\n sort(sortComparer, sortAsc);\n } else if (fastSortField) {\n fastSort(fastSortField, sortAsc);\n }\n }\n\n function setFilter(filterFn: any) {\n filter = filterFn;\n if (options.inlineFilters) {\n compiledFilter = compileFilter();\n compiledFilterWithCaching = compileFilterWithCaching();\n }\n refresh();\n }\r\n\r\n function getGrouping() {\n return groupingInfos;\n }\n\n function setSummaryOptions(summary: any) {\n summary = summary || {};\n summaryOptions.aggregators = summary.aggregators || [];\n summaryOptions.compiledAccumulators = [];\n summaryOptions.totals = {};\n var idx = summaryOptions.aggregators.length;\n while (idx--) {\n summaryOptions.compiledAccumulators[idx] = compileAccumulatorLoop(summaryOptions.aggregators[idx]);\n }\n setGrouping(groupingInfos || []);\n }\n\n function getGrandTotals() {\n summaryOptions.totals = summaryOptions.totals || {};\n\n if (!summaryOptions.totals.initialized) {\n summaryOptions.aggregators = summaryOptions.aggregators || [];\n summaryOptions.compiledAccumulators = summaryOptions.compiledAccumulators || [];\n var agg: any, idx = summaryOptions.aggregators.length;\n\n while (idx--) {\n agg = summaryOptions.aggregators[idx];\n agg.init();\n summaryOptions.compiledAccumulators[idx].call(agg, items);\n agg.storeResult(summaryOptions.totals);\n }\n summaryOptions.totals.initialized = true;\n }\n\n return summaryOptions.totals;\n }\n\n function setGrouping(groupingInfo: any) {\n if (!options.groupItemMetadataProvider) {\n options.groupItemMetadataProvider = new Slick.Data.GroupItemMetadataProvider();\n }\n\n groups = [];\n toggledGroupsByLevel = [];\n groupingInfo = groupingInfo || [];\n groupingInfos = (groupingInfo instanceof Array) ? groupingInfo : [groupingInfo];\n\n for (var i = 0; i < groupingInfos.length; i++) {\n var gi = groupingInfos[i] = $.extend(true, {}, groupingInfoDefaults, groupingInfos[i]);\n gi.aggregators = gi.aggregators || summaryOptions.aggregators || [];\n gi.getterIsAFn = typeof gi.getter === \"function\";\n\n // pre-compile accumulator loops\n gi.compiledAccumulators = [];\n var idx = gi.aggregators.length;\n while (idx--) {\n gi.compiledAccumulators[idx] = compileAccumulatorLoop(gi.aggregators[idx]);\n }\n\n toggledGroupsByLevel[i] = {};\n }\n\n refresh();\n }\n\r\n function getItemByIdx(i: number) {\r\n return items[i];\r\n }\r\n\r\n function getIdxById(id: any) {\r\n return idxById[id];\r\n }\r\n\r\n function ensureRowsByIdCache() {\n if (!rowsById) {\n rowsById = {};\n for (var i = 0, l = rows.length; i < l; i++) {\n rowsById[rows[i][idProperty]] = i;\n }\n }\n }\n\n function getRowById(id: any) {\n ensureRowsByIdCache();\n return rowsById[id];\n }\n\n function getItemById(id: any) {\n return items[idxById[id]];\n }\n\r\n function mapIdsToRows(idArray: any[]) {\n var rows: any[] = [];\n ensureRowsByIdCache();\n for (var i = 0, l = idArray.length; i < l; i++) {\n var row = rowsById[idArray[i]];\n if (row != null) {\n rows[rows.length] = row;\n }\n }\n return rows;\n }\n\n function mapRowsToIds(rowArray: any[]) {\n var ids: any[] = [];\n for (var i = 0, l = rowArray.length; i < l; i++) {\n if (rowArray[i] < rows.length) {\n ids[ids.length] = rows[rowArray[i]][idProperty];\n }\n }\n return ids;\n }\n\n function updateItem(id: any, item: any) {\n if (idxById[id] === undefined || id !== item[idProperty]) {\n throw \"Invalid or non-matching id\";\n }\n items[idxById[id]] = item;\n if (!updated) {\n updated = {};\n }\n updated[id] = true;\n refresh();\n }\n\n function insertItem(insertBefore: number, item: any) {\n items.splice(insertBefore, 0, item);\n updateIdxById(insertBefore);\n refresh();\n }\n\n function addItem(item: any) {\n items.push(item);\n updateIdxById(items.length - 1);\n refresh();\n }\n\n function deleteItem(id: any) {\n var idx = idxById[id];\n if (idx === undefined) {\n throw \"Invalid id\";\n }\n delete idxById[id];\n items.splice(idx, 1);\n updateIdxById(idx);\n refresh();\n }\n\n function getRows() {\n return rows;\n }\n\n function getLength() {\n return rows.length;\n }\n\n function getItem(i: number) {\n var item = rows[i];\n\n // if this is a group row, make sure totals are calculated and update the title\n if (item && item.__group && item.totals && !item.totals.initialized) {\n var gi = groupingInfos[item.level];\n if (!gi.displayTotalsRow) {\n calculateTotals(item.totals);\n item.title = gi.formatter ? gi.formatter(item) : item.value;\n }\n }\n // if this is a totals row, make sure it's calculated\n else if (item && item.__groupTotals && !item.initialized) {\n calculateTotals(item);\n }\n\n return item;\n }\n\r\n function getItemMetadata(i: number) {\n var item = rows[i];\n if (item === undefined) {\n return null;\n }\n\n // overrides for grouping rows\n if (item.__group) {\n return options.groupItemMetadataProvider.getGroupRowMetadata(item);\n }\n\n // overrides for totals rows\n if (item.__groupTotals) {\n return options.groupItemMetadataProvider.getTotalsRowMetadata(item);\n }\n\n return (options.getItemMetadata && options.getItemMetadata(item, i)) || null;\n }\n\n function expandCollapseAllGroups(level: number, collapse: boolean) {\n if (level == null) {\n for (var i = 0; i < groupingInfos.length; i++) {\n toggledGroupsByLevel[i] = {};\n groupingInfos[i].collapsed = collapse;\n }\n } else {\n toggledGroupsByLevel[level] = {};\n groupingInfos[level].collapsed = collapse;\n }\n refresh();\n }\n\r\n /**\n * @param level {Number} Optional level to collapse. If not specified, applies to all levels.\n */\n function collapseAllGroups(level: number) {\n expandCollapseAllGroups(level, true);\n }\n\n /**\n * @param level {Number} Optional level to expand. If not specified, applies to all levels.\n */\n function expandAllGroups(level: number) {\n expandCollapseAllGroups(level, false);\n }\n\n function resolveLevelAndGroupingKey(args: any) {\n var arg0 = args[0];\n if (args.length === 1 && arg0.indexOf(groupingDelimiter) !== -1) {\n return { level: arg0.split(groupingDelimiter).length - 1, groupingKey: arg0 };\n } else {\n return { level: args.length - 1, groupingKey: args.join(groupingDelimiter) };\n }\n }\n\n function expandCollapseGroup(args: any, collapse: any) {\n var opts = resolveLevelAndGroupingKey(args);\n toggledGroupsByLevel[opts.level][opts.groupingKey] = groupingInfos[opts.level].collapsed ^ collapse;\n refresh();\n }\n\n /**\n * @param varArgs Either a Slick.Group's \"groupingKey\" property, or a\n * variable argument list of grouping values denoting a unique path to the row. For\n * example, calling collapseGroup('high', '10%') will collapse the '10%' subgroup of\n * the 'high' group.\n */\n function collapseGroup(varArgs: any[]) {\n var args = Array.prototype.slice.call(arguments);\n expandCollapseGroup(args, true);\n }\n\n /**\n * @param varArgs Either a Slick.Group's \"groupingKey\" property, or a\n * variable argument list of grouping values denoting a unique path to the row. For\n * example, calling expandGroup('high', '10%') will expand the '10%' subgroup of\n * the 'high' group.\n */\n function expandGroup(varArgs: any[]) {\n var args = Array.prototype.slice.call(arguments);\n expandCollapseGroup(args, false);\n }\n\n function getGroups() {\n return groups;\n }\n\n function getOrCreateGroup(groupsByVal: any, val: any, level: number, parentGroup: any, groups: any[]) {\n var group = groupsByVal[val];\n\n if (!group) {\n group = new Slick.Group<any>();\n group.value = val;\n group.level = level;\n group.groupingKey = (parentGroup ? parentGroup.groupingKey + groupingDelimiter : '') + val;\n groups[groups.length] = group;\n groupsByVal[val] = group;\n }\n\n return group;\n }\n\n function extractGroups(rows: any[], parentGroup?: any) {\n var group: any;\n var val: any;\n var groups: any[] = [];\n var groupsByVal = {};\n var r: any;\n var level = parentGroup ? parentGroup.level + 1 : 0;\n var gi = groupingInfos[level];\n\n for (var i = 0, l: number = gi.predefinedValues.length; i < l; i++) {\n val = gi.predefinedValues[i];\n group = getOrCreateGroup(groupsByVal, val, level, parentGroup, groups);\n }\n\n for (var i = 0, l = rows.length; i < l; i++) {\n r = rows[i];\n val = gi.getterIsAFn ? gi.getter(r) : r[gi.getter];\n group = getOrCreateGroup(groupsByVal, val, level, parentGroup, groups);\n\n group.rows[group.count++] = r;\n }\n\n if (level < groupingInfos.length - 1) {\n for (var i = 0; i < groups.length; i++) {\n group = groups[i];\n group.groups = extractGroups(group.rows, group);\n }\n }\n\n groups.sort(groupingInfos[level].comparer);\n\n return groups;\n }\n\n function calculateTotals(totals: any) {\n var group = totals.group;\n var gi = groupingInfos[group.level];\n var isLeafLevel = (group.level == groupingInfos.length);\n var agg: any, idx = gi.aggregators.length;\n\n if (!isLeafLevel && gi.aggregateChildGroups) {\n // make sure all the subgroups are calculated\n var i = group.groups.length;\n while (i--) {\n if (!group.groups[i].totals.initialized) {\n calculateTotals(group.groups[i].totals);\n }\n }\n }\n\n while (idx--) {\n agg = gi.aggregators[idx];\n agg.init();\n if (!isLeafLevel && gi.aggregateChildGroups) {\n gi.compiledAccumulators[idx].call(agg, group.groups);\n } else {\n gi.compiledAccumulators[idx].call(agg, group.rows);\n }\n agg.storeResult(totals);\n }\n totals.initialized = true;\n }\n\n function addGroupTotals(group: any) {\n var gi = groupingInfos[group.level];\n var totals = new Slick.GroupTotals<TEntity>();\n totals.group = group;\n group.totals = totals;\n if (!gi.lazyTotalsCalculation) {\n calculateTotals(totals);\n }\n }\n\n function addTotals(groups: any[], level?: number) {\n level = level || 0;\n var gi = groupingInfos[level];\n var groupCollapsed = gi.collapsed;\n var toggledGroups = toggledGroupsByLevel[level];\n var idx = groups.length, g: any;\n while (idx--) {\n g = groups[idx];\n\n if (g.collapsed && !gi.aggregateCollapsed) {\n continue;\n }\n\n // Do a depth-first aggregation so that parent group aggregators can access subgroup totals.\n if (g.groups) {\n addTotals(g.groups, level + 1);\n }\n\n if (gi.aggregators.length && (\n gi.aggregateEmpty || g.rows.length || (g.groups && g.groups.length))) {\n addGroupTotals(g);\n }\n\n g.collapsed = groupCollapsed ^ toggledGroups[g.groupingKey];\n g.title = gi.formatter ? gi.formatter(g) : g.value;\n }\n }\n\n function flattenGroupedRows(groups: any[], level?: number) {\n level = level || 0;\n var gi = groupingInfos[level];\n var groupedRows: any[] = [], rows: any[], gl = 0, g: any;\n for (var i = 0, l = groups.length; i < l; i++) {\n g = groups[i];\n groupedRows[gl++] = g;\n\n if (!g.collapsed) {\n rows = g.groups ? flattenGroupedRows(g.groups, level + 1) : g.rows;\n for (var j = 0, jj = rows.length; j < jj; j++) {\n groupedRows[gl++] = rows[j];\n }\n }\n\n if (g.totals && gi.displayTotalsRow && (!g.collapsed || gi.aggregateCollapsed)) {\n groupedRows[gl++] = g.totals;\n }\n }\n return groupedRows;\n }\n\r\n function getFunctionInfo(fn: any) {\n var fnRegex = /^function[^(]*\\(([^)]*)\\)\\s*{([\\s\\S]*)}$/;\n var matches = fn.toString().match(fnRegex);\n return {\n params: matches[1].split(\",\"),\n body: matches[2]\n };\n }\n\n function compileAccumulatorLoop(aggregator: any) {\n var accumulatorInfo = getFunctionInfo(aggregator.accumulate);\n var fn: any = new Function(\n \"_items\",\n \"for (var \" + accumulatorInfo.params[0] + \", _i=0, _il=_items.length; _i<_il; _i++) {\" +\n accumulatorInfo.params[0] + \" = _items[_i]; \" +\n accumulatorInfo.body +\n \"}\"\n );\n fn.displayName = fn.name = \"compiledAccumulatorLoop\";\n return fn;\n }\n\r\n function compileFilter() {\n var filterInfo = getFunctionInfo(filter);\n\n var filterBody = filterInfo.body\n .replace(/return false\\s*([;}]|$)/gi, \"{ continue _coreloop; }$1\")\n .replace(/return true\\s*([;}]|$)/gi, \"{ _retval[_idx++] = $item$; continue _coreloop; }$1\")\n .replace(/return ([^;}]+?)\\s*([;}]|$)/gi,\n \"{ if ($1) { _retval[_idx++] = $item$; }; continue _coreloop; }$2\");\n\n // This preserves the function template code after JS compression,\n // so that replace() commands still work as expected.\n var tpl = [\n //\"function(_items, _args) { \",\n \"var _retval = [], _idx = 0; \",\n \"var $item$, $args$ = _args; \",\n \"_coreloop: \",\n \"for (var _i = 0, _il = _items.length; _i < _il; _i++) { \",\n \"$item$ = _items[_i]; \",\n \"$filter$; \",\n \"} \",\n \"return _retval; \"\n //\"}\"\n ].join(\"\");\n tpl = tpl.replace(/\\$filter\\$/gi, filterBody);\n tpl = tpl.replace(/\\$item\\$/gi, filterInfo.params[0]);\n tpl = tpl.replace(/\\$args\\$/gi, filterInfo.params[1]);\n\n var fn: any = new Function(\"_items,_args\", tpl);\n fn.displayName = fn.name = \"compiledFilter\";\n return fn;\n }\n\n function compileFilterWithCaching() {\n var filterInfo = getFunctionInfo(filter);\n\n var filterBody = filterInfo.body\n .replace(/return false\\s*([;}]|$)/gi, \"{ continue _coreloop; }$1\")\n .replace(/return true\\s*([;}]|$)/gi, \"{ _cache[_i] = true;_retval[_idx++] = $item$; continue _coreloop; }$1\")\n .replace(/return ([^;}]+?)\\s*([;}]|$)/gi,\n \"{ if ((_cache[_i] = $1)) { _retval[_idx++] = $item$; }; continue _coreloop; }$2\");\n\n // This preserves the function template code after JS compression,\n // so that replace() commands still work as expected.\n var tpl = [\n //\"function(_items, _args, _cache) { \",\n \"var _retval = [], _idx = 0; \",\n \"var $item$, $args$ = _args; \",\n \"_coreloop: \",\n \"for (var _i = 0, _il = _items.length; _i < _il; _i++) { \",\n \"$item$ = _items[_i]; \",\n \"if (_cache[_i]) { \",\n \"_retval[_idx++] = $item$; \",\n \"continue _coreloop; \",\n \"} \",\n \"$filter$; \",\n \"} \",\n \"return _retval; \"\n //\"}\"\n ].join(\"\");\n tpl = tpl.replace(/\\$filter\\$/gi, filterBody);\n tpl = tpl.replace(/\\$item\\$/gi, filterInfo.params[0]);\n tpl = tpl.replace(/\\$args\\$/gi, filterInfo.params[1]);\n\n var fn: any = new Function(\"_items,_args,_cache\", tpl);\n fn.displayName = fn.name = \"compiledFilterWithCaching\";\n return fn;\n }\n\n function uncompiledFilter(items: any[], args: any) {\n var retval: any[] = [], idx = 0;\n\n for (var i = 0, ii = items.length; i < ii; i++) {\n if (filter(items[i], args)) {\n retval[idx++] = items[i];\n }\n }\n\n return retval;\n }\n\n function uncompiledFilterWithCaching(items: any[], args: any, cache: any) {\n var retval: any[] = [], idx = 0, item: any;\n\n for (var i = 0, ii = items.length; i < ii; i++) {\n item = items[i];\n if (cache[i]) {\n retval[idx++] = item;\n } else if (filter(item, args)) {\n retval[idx++] = item;\n cache[i] = true;\n }\n }\n\n return retval;\n }\n\n function getFilteredAndPagedItems(items: any[]) {\n if (filter) {\n var batchFilter = options.inlineFilters ? compiledFilter : uncompiledFilter;\n var batchFilterWithCaching = options.inlineFilters ? compiledFilterWithCaching : uncompiledFilterWithCaching;\n\n if (refreshHints.isFilterNarrowing) {\n filteredItems = batchFilter(filteredItems, filterArgs);\n } else if (refreshHints.isFilterExpanding) {\n filteredItems = batchFilterWithCaching(items, filterArgs, filterCache);\n } else if (!refreshHints.isFilterUnchanged) {\n filteredItems = batchFilter(items, filterArgs);\n }\n } else {\n // special case: if not filtering and not paging, the resulting\n // rows collection needs to be a copy so that changes due to sort\n // can be caught\n filteredItems = items.concat();\n }\n\n // get the current page\n return { totalRows: filteredItems.length, rows: filteredItems };\n }\n\n function getRowDiffs(rows: any[], newRows: any[]) {\n var item: any, r: any, eitherIsNonData: boolean, diff: any[] = [];\n var from = 0, to = newRows.length;\n\n if (refreshHints && refreshHints.ignoreDiffsBefore) {\n from = Math.max(0,\n Math.min(newRows.length, refreshHints.ignoreDiffsBefore));\n }\n\n if (refreshHints && refreshHints.ignoreDiffsAfter) {\n to = Math.min(newRows.length,\n Math.max(0, refreshHints.ignoreDiffsAfter));\n }\n\n for (var i = from, rl = rows.length; i < to; i++) {\n if (i >= rl) {\n diff[diff.length] = i;\n } else {\n item = newRows[i];\n r = rows[i];\n\n if ((groupingInfos.length && (eitherIsNonData = (item.__nonDataRow) || (r.__nonDataRow)) &&\n item.__group !== r.__group ||\n item.__group && !item.equals(r))\n || (eitherIsNonData &&\n // no good way to compare totals since they are arbitrary DTOs\n // deep object comparison is pretty expensive\n // always considering them 'dirty' seems easier for the time being\n (item.__groupTotals || r.__groupTotals))\n || item[idProperty] != r[idProperty]\n || (updated && updated[item[idProperty]])\n ) {\n diff[diff.length] = i;\n }\n }\n }\n return diff;\n }\n\n function recalc(_items: any[]) {\n rowsById = null;\n\n if (refreshHints.isFilterNarrowing != prevRefreshHints.isFilterNarrowing ||\n refreshHints.isFilterExpanding != prevRefreshHints.isFilterExpanding) {\n filterCache = [];\n }\n\n var filteredItems = getFilteredAndPagedItems(_items);\n totalRows = filteredItems.totalRows;\n var newRows = filteredItems.rows;\n\n summaryOptions.totals = {};\n\n groups = [];\n if (groupingInfos.length) {\n groups = extractGroups(newRows);\n if (groups.length) {\n addTotals(groups);\n newRows = flattenGroupedRows(groups);\n }\n }\n\n var diff = getRowDiffs(rows, newRows);\n\n rows = newRows;\n\n return diff;\n }\n\n function refresh() {\n if (suspend) {\n return;\n }\n\n var countBefore = rows.length;\n var totalRowsBefore = totalRows;\n\n var diff = recalc(items); // pass as direct refs to avoid closure perf hit\n\n updated = null;\n prevRefreshHints = refreshHints;\n refreshHints = {};\n\n if (totalRowsBefore !== totalRows) {\n onPagingInfoChanged.notify(getPagingInfo(), null, self);\n }\n if (countBefore !== rows.length) {\n onRowCountChanged.notify({ previous: countBefore, current: rows.length, dataView: self }, null, self);\n }\n if (diff.length > 0) {\n onRowsChanged.notify({ rows: diff, dataView: self }, null, self);\n }\n }\n\r\n /***\n * Wires the grid and the DataView together to keep row selection tied to item ids.\n * This is useful since, without it, the grid only knows about rows, so if the items\n * move around, the same rows stay selected instead of the selection moving along\n * with the items.\n *\n * NOTE: This doesn't work with cell selection model.\n *\n * @param grid {Slick.Grid} The grid to sync selection with.\n * @param preserveHidden {Boolean} Whether to keep selected items that go out of the\n * view due to them getting filtered out.\n * @param preserveHiddenOnSelectionChange {Boolean} Whether to keep selected items\n * that are currently out of the view (see preserveHidden) as selected when selection\n * changes.\n * @return {Slick.Event} An event that notifies when an internal list of selected row ids\n * changes. This is useful since, in combination with the above two options, it allows\n * access to the full list selected row ids, and not just the ones visible to the grid.\n * @method syncGridSelection\n */\n function syncGridSelection(grid: any, preserveHidden: boolean, preserveHiddenOnSelectionChange: boolean) {\n var self = this;\n var inHandler: any;\n var selectedRowIds = self.mapRowsToIds(grid.getSelectedRows());\n var onSelectedRowIdsChanged = new Slick.Event();\n\n function setSelectedRowIds(rowIds: any[]) {\n if (selectedRowIds.join(\",\") == rowIds.join(\",\")) {\n return;\n }\n\n selectedRowIds = rowIds;\n\n onSelectedRowIdsChanged.notify({\n \"grid\": grid,\n \"ids\": selectedRowIds,\n \"dataView\": self\n }, new Slick.EventData(), self);\n }\n\n function update() {\n if (selectedRowIds.length > 0) {\n inHandler = true;\n var selectedRows = self.mapIdsToRows(selectedRowIds);\n if (!preserveHidden) {\n setSelectedRowIds(self.mapRowsToIds(selectedRows));\n }\n grid.setSelectedRows(selectedRows);\n inHandler = false;\n }\n }\n\n grid.onSelectedRowsChanged.subscribe(function (e: any, args: any) {\n if (inHandler) { return; }\n var newSelectedRowIds = self.mapRowsToIds(grid.getSelectedRows());\n if (!preserveHiddenOnSelectionChange || !grid.getOptions().multiSelect) {\n setSelectedRowIds(newSelectedRowIds);\n } else {\n // keep the ones that are hidden\n var existing = $.grep(selectedRowIds, function (id) { return self.getRowById(id) === undefined; });\n // add the newly selected ones\n setSelectedRowIds(existing.concat(newSelectedRowIds));\n }\n });\n\n this.onRowsChanged.subscribe(update);\n this.onRowCountChanged.subscribe(update);\n\n return onSelectedRowIdsChanged;\n }\n\n function syncGridCellCssStyles(grid: Slick.Grid, key: string) {\n var hashById: any;\n var inHandler: any;\n\n // since this method can be called after the cell styles have been set,\n // get the existing ones right away\n storeCellCssStyles(grid.getCellCssStyles(key));\n\n function storeCellCssStyles(hash: any) {\n hashById = {};\n for (var row in hash) {\n var id: any = rows[row][idProperty];\n hashById[id] = hash[row];\n } \n }\n\n function update() {\n if (hashById) {\n inHandler = true;\n ensureRowsByIdCache();\n var newHash = {};\n for (var id in hashById) {\n var row = rowsById[id];\n if (row != undefined) {\n newHash[row] = hashById[id];\n }\n }\n grid.setCellCssStyles(key, newHash);\n inHandler = false;\n }\n }\n\n grid.onCellCssStylesChanged.subscribe(function (e, args) {\n if (inHandler) { return; }\n if (key != args.key) { return; }\n if (args.hash) {\n storeCellCssStyles(args.hash);\n }\n });\n\n this.onRowsChanged.subscribe(update);\n this.onRowCountChanged.subscribe(update);\n }\r\n\r\n function addData(data: any) {\r\n\r\n if (intf.onProcessData && data)\r\n data = intf.onProcessData(data, intf) || data;\r\n\r\n errorMessage = null;\r\n loading && loading.abort();\r\n loading = false;\r\n\r\n if (!data) {\r\n errorMessage = intf.errormsg;\r\n onPagingInfoChanged.notify(getPagingInfo());\r\n return false;\r\n }\r\n\r\n var theData = data;\r\n data.TotalCount = data.TotalCount || 0;\r\n data.Entities = data.Entities || [];\r\n\r\n if (!data.Skip || (!intf.rowsPerPage && !data.Take))\r\n data.Page = 1;\r\n else\r\n data.Page = Math.ceil(data.Skip / (data.Take || intf.rowsPerPage)) + 1;\r\n\r\n page = data.Page;\r\n totalCount = data.TotalCount;\r\n\r\n setItems(data.Entities);\r\n\r\n onPagingInfoChanged.notify(getPagingInfo());\r\n }\r\n\r\n function populate() {\r\n if (populateLocks > 0) {\r\n populateCalls++;\r\n return;\r\n }\r\n\r\n populateCalls = 0;\r\n\r\n loading && loading.abort();\r\n\r\n if (intf.onSubmit) {\r\n var gh = intf.onSubmit(intf);\r\n if (gh === false)\r\n return false;\r\n }\r\n\r\n onDataLoading.notify(this);\r\n\r\n if (!intf.url)\r\n return false;\r\n\r\n // set loading event\r\n \r\n if (!intf.seekToPage)\r\n intf.seekToPage = 1;\r\n\r\n var request: Serenity.ListRequest = {};\r\n\r\n var skip = (intf.seekToPage - 1) * intf.rowsPerPage;\r\n if (skip)\r\n request.Skip = skip;\r\n if (intf.rowsPerPage)\r\n request.Take = intf.rowsPerPage;\r\n\r\n if (intf.sortBy && intf.sortBy.length) {\r\n if ($.isArray(intf.sortBy))\r\n request.Sort = intf.sortBy;\r\n else {\r\n request.Sort = [intf.sortBy];\r\n }\r\n }\r\n\r\n if (intf.params) {\r\n request = $.extend(request, intf.params);\r\n }\r\n\r\n var dt = dataType;\r\n\r\n var self = this;\r\n var ajaxOptions = {\r\n cache: false,\r\n type: intf.method,\r\n contentType: contentType,\r\n url: intf.url,\r\n data: request,\r\n dataType: dt,\r\n success: function (response: Serenity.ServiceResponse) {\r\n loading = false;\r\n if (response.Error)\r\n Q.notifyError(response.Error.Message || response.Error.Code);\r\n else\r\n addData(response);\r\n onDataLoaded.notify(this);\r\n },\r\n error: function (xhr: any, status: any, ev: any) {\r\n loading = false;\r\n\r\n if ((xhr.getResponseHeader(\"content-type\") || '').toLowerCase().indexOf(\"application/json\") >= 0) {\r\n var json = $.parseJSON(xhr.responseText);\r\n if (json != null && json.Error != null) {\r\n Q.notifyError(json.Error.Message || json.Error.Code);\r\n onPagingInfoChanged.notify(getPagingInfo());\r\n onDataLoaded.notify(this);\r\n return;\r\n }\r\n }\r\n\r\n errorMessage = xhr.errormsg;\r\n onPagingInfoChanged.notify(getPagingInfo());\r\n onDataLoaded.notify(this);\r\n },\r\n complete: function () {\r\n loading = false;\r\n }\r\n }\r\n\r\n if (intf.onAjaxCall) {\r\n var ah = intf.onAjaxCall(this, ajaxOptions);\r\n if (ah === false) {\r\n loading = false;\r\n onPagingInfoChanged.notify(getPagingInfo());\r\n return false;\r\n }\r\n }\r\n\r\n ajaxOptions.data = (<any>$).toJSON(ajaxOptions.data);\r\n\r\n onPagingInfoChanged.notify(getPagingInfo());\r\n loading = $.ajax(ajaxOptions);\r\n }\r\n\r\n function populateLock() {\r\n if (populateLocks == 0)\r\n populateCalls = 0;\r\n populateLocks++;\r\n }\r\n\r\n function populateUnlock() {\r\n if (populateLocks > 0) {\r\n populateLocks--;\r\n if (populateLocks == 0 && populateCalls > 0)\r\n populate();\r\n }\r\n }\r\n\r\n intf = {\r\n // methods\r\n \"beginUpdate\": beginUpdate,\r\n \"endUpdate\": endUpdate,\r\n \"setPagingOptions\": setPagingOptions,\r\n \"getPagingInfo\": getPagingInfo,\r\n \"getRows\": getRows,\r\n \"getItems\": getItems,\r\n \"setItems\": setItems,\r\n \"setFilter\": setFilter,\r\n \"sort\": sort,\n \"fastSort\": fastSort,\n \"reSort\": reSort,\n \"setSummaryOptions\": setSummaryOptions,\n \"getGrandTotals\": getGrandTotals,\n \"setGrouping\": setGrouping,\n \"getGrouping\": getGrouping,\n \"collapseAllGroups\": collapseAllGroups,\n \"expandAllGroups\": expandAllGroups,\n \"collapseGroup\": collapseGroup,\n \"expandGroup\": expandGroup,\n \"getGroups\": getGroups,\n \"getIdxById\": getIdxById,\r\n \"getRowById\": getRowById,\r\n \"getItemById\": getItemById,\r\n \"getItemByIdx\": getItemByIdx,\r\n \"mapRowsToIds\": mapRowsToIds,\n \"mapIdsToRows\": mapIdsToRows,\n \"setRefreshHints\": setRefreshHints,\n \"setFilterArgs\": setFilterArgs,\n \"refresh\": refresh,\r\n \"updateItem\": updateItem,\r\n \"insertItem\": insertItem,\r\n \"addItem\": addItem,\r\n \"deleteItem\": deleteItem,\r\n \"syncGridSelection\": syncGridSelection,\n \"syncGridCellCssStyles\": syncGridCellCssStyles,\n\n \"getLength\": getLength,\n \"getItem\": getItem,\n \"getItemMetadata\": getItemMetadata,\n\n \"onRowCountChanged\": onRowCountChanged,\r\n \"onRowsChanged\": onRowsChanged,\r\n \"onPagingInfoChanged\": onPagingInfoChanged,\r\n\n \"addData\": addData,\r\n \"populate\": populate,\r\n \"populateLock\": populateLock,\r\n \"populateUnlock\": populateUnlock,\r\n \"onDataChanged\": onDataChanged,\r\n \"onDataLoaded\": onDataLoaded,\r\n \"onDataLoading\": onDataLoading\r\n };\r\n\r\n idProperty = options.idField || 'id';\r\n contentType = options.contentType || \"application/json\";\r\n dataType = options.dataType || 'json';\r\n filter = options.filter || null;\r\n\r\n intf.params = options.params || {};\r\n intf.onSubmit = options.onSubmit || null;\r\n intf.url = options.url || null;\r\n intf.rowsPerPage = options.rowsPerPage || 0;\r\n intf.seekToPage = options.seekToPage || 1;\r\n intf.onAjaxCall = options.onAjaxCall || null;\r\n intf.onProcessData = options.onProcessData || null;\r\n intf.method = options.method || 'POST';\r\n intf.errormsg = intf.errormsg || Q.text(\"Controls.Pager.DefaultLoadError\");\r\n intf.sortBy = options.sortBy || [];\r\n intf.idField = idProperty;\r\n\r\n if (options.url && options.autoLoad) {\r\n populate();\r\n }\r\n\r\n return intf;\r\n }\r\n }\r\n}\r\n\r\nnamespace Slick.Aggregators\r\n{\r\n export function Avg(field: string): void {\n this.field_ = field;\n\n this.init = function () {\n this.count_ = 0;\n this.nonNullCount_ = 0;\n this.sum_ = 0;\n };\n\n this.accumulate = function (item: any) {\n var val = item[this.field_];\n this.count_++;\n if (val != null && val !== \"\" && !isNaN(val)) {\n this.nonNullCount_++;\n this.sum_ += parseFloat(val);\n }\n };\n\n this.storeResult = function (groupTotals: any) {\n if (!groupTotals.avg) {\n groupTotals.avg = {};\n }\n if (this.nonNullCount_ != 0) {\n groupTotals.avg[this.field_] = this.sum_ / this.nonNullCount_;\n }\n };\n }\n\n export function WeightedAvg(field: string, weightedField: string) {\n this.field_ = field;\n this.weightedField_ = weightedField;\n\n this.init = function () {\n this.sum_ = 0;\n this.weightedSum_ = 0;\n };\n\n this.accumulate = function (item: any) {\n var val = item[this.field_];\n var valWeighted = item[this.weightedField_];\n if (this.isValid(val) && this.isValid(valWeighted)) {\n this.weightedSum_ += parseFloat(valWeighted);\n this.sum_ += parseFloat(val) * parseFloat(valWeighted);\n }\n };\n\n this.storeResult = function (groupTotals: any) {\n if (!groupTotals.avg) {\n groupTotals.avg = {};\n }\n\n if (this.sum_ && this.weightedSum_) {\n groupTotals.avg[this.field_] = this.sum_ / this.weightedSum_;\n }\n };\n\n this.isValid = function (val: any) {\n return val !== null && val !== \"\" && !isNaN(val);\n };\n }\n\n export function Min(field: string): void {\n this.field_ = field;\n\n this.init = function () {\n this.min_ = null;\n };\n\n this.accumulate = function (item: any) {\n var val = item[this.field_];\n if (val != null && val !== \"\" && !isNaN(val)) {\n if (this.min_ == null || val < this.min_) {\n this.min_ = val;\n }\n }\n };\n\n this.storeResult = function (groupTotals: any) {\n if (!groupTotals.min) {\n groupTotals.min = {};\n }\n groupTotals.min[this.field_] = this.min_;\n }\n }\n\n export function Max(field: string): void {\n this.field_ = field;\n\n this.init = function () {\n this.max_ = null;\n };\n\n this.accumulate = function (item: any) {\n var val = item[this.field_];\n if (val != null && val !== \"\" && !isNaN(val)) {\n if (this.max_ == null || val > this.max_) {\n this.max_ = val;\n }\n }\n };\n\n this.storeResult = function (groupTotals: any) {\n if (!groupTotals.max) {\n groupTotals.max = {};\n }\n groupTotals.max[this.field_] = this.max_;\n }\n }\n\n export function Sum(field: string): void {\n this.field_ = field;\n\n this.init = function () {\n this.sum_ = null;\n };\n\n this.accumulate = function (item: any) {\n var val = item[this.field_];\n if (val != null && val !== \"\" && !isNaN(val)) {\n this.sum_ += parseFloat(val);\n }\n };\n\n this.storeResult = function (groupTotals: any) {\n if (!groupTotals.sum) {\n groupTotals.sum = {};\n }\n groupTotals.sum[this.field_] = this.sum_;\n }\n }\n}","declare var Vue: any;\r\n\r\nnamespace Q {\r\n\r\n let oldShowLabel: (e: HTMLElement, message: string) => void;\r\n\r\n function validateShowLabel(element: HTMLElement, message: string) {\r\n oldShowLabel.call(this, element, message);\r\n this.errorsFor(element).each(function (i: number, e: any) {\r\n\r\n if ($(element).hasClass('error'))\r\n $(e).removeClass('checked');\r\n\r\n $(e).attr('title', $(e).text());\r\n });\r\n };\r\n\r\n function registerCustomValidationMethods() {\r\n if ($.validator.methods['customValidate'] == null) {\r\n ($.validator as any).addMethod('customValidate', function (value: any, element: any) {\r\n var result = this.optional(element);\r\n if (element == null || !!result) {\r\n return result;\r\n }\r\n var events = ($ as any)._data(element, 'events');\r\n if (!events) {\r\n return true;\r\n }\r\n var handlers = events.customValidate;\r\n if (handlers == null || handlers.length === 0) {\r\n return true;\r\n }\r\n\r\n var el = $(element);\r\n for (var i = 0; !!(i < handlers.length); i++) {\r\n var handler = (ss as any).safeCast(handlers[i].handler, Function);\r\n if (handler) {\r\n var message = handler(el);\r\n if (message != null) {\r\n el.data('customValidationMessage', message);\r\n return false;\r\n }\r\n }\r\n }\r\n return true;\r\n }, function (o: any, e: any) {\r\n return $(e).data('customValidationMessage');\r\n });\r\n }\r\n }\r\n\r\n function jQueryValidationInitialization() {\r\n registerCustomValidationMethods();\r\n\r\n let p: any = $.validator;\r\n p = p.prototype;\r\n oldShowLabel = p.showLabel;\r\n p.showLabel = validateShowLabel;\r\n\r\n $.validator.addMethod(\"dateQ\", function (value, element) {\r\n var o = this.optional(element);\r\n if (o)\r\n return o;\r\n\r\n var d = parseDate(value);\r\n if (!d)\r\n return false;\r\n\r\n var z = new Date(d);\r\n z.setHours(0, 0, 0, 0);\r\n return z.getTime() === d.getTime();\r\n });\r\n\r\n $.validator.addMethod(\"hourAndMin\", function (value, element) {\r\n return this.optional(element) || !isNaN(parseHourAndMin(value));\r\n });\r\n\r\n $.validator.addMethod(\"dayHourAndMin\", function (value, element) {\r\n return this.optional(element) || !isNaN(parseDayHourAndMin(value));\r\n });\r\n\r\n $.validator.addMethod(\"decimalQ\", function (value, element) {\r\n return this.optional(element) || !isNaN(parseDecimal(value));\r\n });\r\n\r\n $.validator.addMethod(\"integerQ\", function (value, element) {\r\n return this.optional(element) || !isNaN(parseInteger(value));\r\n });\r\n\r\n let oldEmail = $.validator.methods['email'];\r\n $.validator.addMethod(\"email\", function (value, element) {\r\n if (!Q.Config.emailAllowOnlyAscii)\r\n return oldEmail.call(this, value, element);\r\n return this.optional(element) || /^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/.test(value);\r\n });\r\n\r\n $.validator.addMethod(\"emailMultiple\", function (value, element) {\r\n let result = this.optional(element);\r\n if (result)\r\n return result;\r\n if (value.indexOf(';') >= 0)\r\n value = value.split(';');\r\n else\r\n value = value.split(',');\r\n for (let i = 0; i < value.length; i++) {\r\n result = $.validator.methods['email'].call(this, value[i], element);\r\n if (!result)\r\n return result;\r\n }\r\n return result;\r\n });\r\n\r\n $.validator.addMethod(\"anyvalue\", function (value, element) {\r\n return true;\r\n });\r\n\r\n let d = (<any>$.validator).defaults;\r\n\r\n d.ignoreTitle = true;\r\n d.onchange = function (element: any) {\r\n this.element(element);\r\n };\r\n p.oldinit = p.init;\r\n p.init = function () {\r\n p.oldinit.call(this);\r\n function changeDelegate(event: any) {\r\n if (this.form == null)\r\n return;\r\n let validator = $.data(this.form, \"validator\"), eventType = \"on\" + event.type.replace(/^validate/, \"\");\r\n validator && validator.settings[eventType] && validator.settings[eventType].call(validator, this);\r\n }\r\n function delegate(event: any) {\r\n let el = this[0];\r\n if (!$.data(el, 'changebound')) {\r\n $(el).change(changeDelegate);\r\n $.data(el, 'changebound', true);\r\n }\r\n }\r\n $(this.currentForm)\r\n .on(\":text, :password, :file, select, textarea\", \"focusin.validate\", delegate);\r\n };\r\n p.oldfocusInvalid = p.focusInvalid;\r\n p.focusInvalid = function () {\r\n if (this.settings.abortHandler)\r\n this.settings.abortHandler(this);\r\n this.oldfocusInvalid.call(this);\r\n };\r\n p.oldstopRequest = p.focusInvalid;\r\n p.stopRequest = function (element: any, valid: boolean) {\r\n let formSubmitted = this.formSubmitted;\r\n this.oldfocusInvalid.call(this, [element, valid]);\r\n if (!valid && this.pendingRequest == 0 && formSubmitted && this.settings.abortHandler) {\r\n this.settings.abortHandler(this);\r\n }\r\n };\r\n p.resetAll = function () {\r\n this.submitted = {};\r\n this.prepareForm();\r\n this.hideErrors();\r\n this.elements().removeClass(this.settings.errorClass);\r\n };\r\n jQuery(function () {\r\n $.extend($.validator.messages, {\r\n email: Q.text(\"Validation.Email\"),\r\n required: Q.text(\"Validation.Required\"),\r\n minlength: Q.text(\"Validation.MinLength\"),\r\n maxlength: Q.text(\"Validation.MaxLength\"),\r\n digits: Q.text(\"Validation.Digits\"),\r\n range: Q.text(\"Validation.Range\"),\r\n xss: Q.text(\"Validation.Xss\"),\r\n dateQ: Q.text(\"Validation.DateInvalid\"),\r\n decimalQ: Q.text(\"Validation.Decimal\"),\r\n integerQ: Q.text(\"Validation.Integer\"),\r\n url: Q.text(\"Validation.Url\")\r\n });\r\n });\r\n };\r\n\r\n export function validatorAbortHandler(validator: any) {\r\n validator.settings.abortHandler = null;\r\n validator.settings.submitHandler = function () {\r\n return false;\r\n };\r\n };\r\n\r\n export function validateOptions(options: JQueryValidation.ValidationOptions) {\r\n return $.extend({\r\n ignore: \":hidden\",\r\n meta: 'v',\r\n errorClass: 'error',\r\n errorPlacement: function (error: any, element: any) {\r\n let field: any = null;\r\n let vx = element.attr('data-vx-id');\r\n if (vx) {\r\n field = $('#' + vx);\r\n if (!field.length)\r\n field = null;\r\n else\r\n field = field[0];\r\n }\r\n if (field == null) {\r\n field = element.parents('div.field');\r\n if (field.length) {\r\n let inner = $('div.vx', field[0]);\r\n if (inner.length)\r\n field = inner[0];\r\n }\r\n else\r\n field = element.parent();\r\n }\r\n error.appendTo(field);\r\n },\r\n submitHandler: function () {\r\n return false;\r\n },\r\n invalidHandler: function (event: any, validator: JQueryValidation.Validator) {\r\n Q.notifyError(Q.text(\"Validation.InvalidFormMessage\"));\r\n\r\n $(validator.errorList.map(x => x.element))\r\n .closest('.category.collapsed')\r\n .children('.category-title')\r\n .each((i, x) => {\r\n $(x).click();\r\n return true;\r\n });\r\n\r\n if (validator.errorList.length)\r\n {\r\n var el = validator.errorList[0].element;\r\n if (el) {\r\n var bsPane = $(el).closest('.tab-pane');\r\n if (!bsPane.hasClass(\"active\") &&\r\n bsPane.parent().hasClass('tab-content')) {\r\n var bsPaneId = bsPane.attr('id');\r\n if (bsPaneId) {\r\n $('a[href=\"#' + bsPaneId + '\"]').click();\r\n }\r\n }\r\n\r\n if ($.fn.tooltip) {\r\n $.fn.tooltip && ($(el) as any).tooltip({\r\n title: validator.errorList[0].message,\r\n trigger: 'manual'\r\n }).tooltip('show');\r\n\r\n window.setTimeout(function () {\r\n $(el).tooltip('destroy');\r\n }, 1500);\r\n }\r\n }\r\n }\r\n },\r\n success: function (label: JQuery) {\r\n label.addClass('checked');\r\n }\r\n }, options);\r\n };\r\n\r\n if (window['jQuery'] && window['jQuery']['validator'])\r\n jQueryValidationInitialization();\r\n else if (window['jQuery']) {\r\n jQuery(function ($) {\r\n if ($.validator)\r\n jQueryValidationInitialization();\r\n });\r\n }\r\n\r\n function jQueryDatepickerInitialization(): void {\r\n let order = Q.Culture.dateOrder;\r\n let s = Q.Culture.dateSeparator;\r\n let culture = ($('html').attr('lang') || 'en').toLowerCase();\r\n if (!$.datepicker.regional[culture]) {\r\n culture = culture.split('-')[0];\r\n if (!$.datepicker.regional[culture]) {\r\n culture = 'en';\r\n }\r\n }\r\n $.datepicker.setDefaults($.datepicker.regional['en']);\r\n $.datepicker.setDefaults($.datepicker.regional[culture]);\r\n $.datepicker.setDefaults({\r\n dateFormat: (order == 'mdy' ? 'mm' + s + 'dd' + s + 'yy' :\r\n (order == 'ymd' ? 'yy' + s + 'mm' + s + 'dd' :\r\n 'dd' + s + 'mm' + s + 'yy')),\r\n buttonImage: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAYdEVYdFNvZnR3YXJlAHBhaW50Lm5ldCA0LjAuNvyMY98AAAHNSURBVEhLtZU/S8NAGIf7FfpJHDoX136ADp3s4qDgUpeCDlJEEIcubk7ZFJ06OBRcdJAOdhCx6CAWodJFrP8KFexrnhcv3sVLVYyBp/fLXe75hbSkGRFxaLVaEgSBMMbXkpi0Rz8eVlbkrlhUdnM56XQ6Opq57/DtwRkVMCFMhJzn89JoNHQ0c9/h26NOU3BdKMh4eVneFhflcGpK1rNZHTn/CfE9uHA6BSyMFhZkODsrt2E7I+c/Ib4Hl1NwOT0dXcgx2N6Wh+FQx16vp/O/ARdO3FrAs2PhcWZGm3l+9sj8b8Cl34ddwMKgVEoFXE5BUK9zkurx4fwseBuPUyWxYKfZTCQIf+txtvb2HLwFm7WaTg5fX1V0cnWlxPPR2ZmC2GSkB+22QsaBC6dTwMLzaPTnAhy4vhSwcP/yEl1s2D8+ngjFNjhwJRZwt9wB2Jm79WVuws4TC3qDgUrJYGekvozUzjjITsFGtarNpsBw2u0654ghnhEbcODCmVjAewjsjMyXkdo5seDm6Uku+n2VcgHYGakvI7UzDlxOwWql4hT4QOoDqY0pwBkVLM3NRQVpgAtnVFApl3UyTXBGBWvhX9x8+JpNE5xRwf8hmXe+7B9dZrOuOwAAAABJRU5ErkJggg==',\r\n buttonImageOnly: true,\r\n showOn: 'both',\r\n showButtonPanel: true,\r\n changeMonth: true,\r\n changeYear: true\r\n });\r\n };\r\n\r\n if (window['jQuery'] &&\r\n window['jQuery']['datepicker'] &&\r\n window['jQuery']['datepicker']['regional'] &&\r\n window['jQuery']['datepicker']['regional']['en']) {\r\n jQueryDatepickerInitialization();\r\n }\r\n else {\r\n jQuery(function ($) {\r\n if ($.datepicker)\r\n jQueryDatepickerInitialization();\r\n });\r\n }\r\n\r\n function jQueryUIInitialization(): void {\r\n $.ui.dialog.prototype._allowInteraction = function (event: any) {\r\n if ($(event.target).closest(\".ui-dialog\").length) {\r\n return true;\r\n }\r\n return !!$(event.target).closest(\".ui-datepicker, .select2-drop, .cke, .cke_dialog, #support-modal\").length;\r\n };\r\n\r\n (function (orig) {\r\n $.ui.dialog.prototype._focusTabbable = function () {\r\n if ($(document.body).hasClass('mobile-device')) {\r\n this.uiDialog && this.uiDialog.focus();\r\n return;\r\n }\r\n orig.call(this);\r\n }\r\n })($.ui.dialog.prototype._focusTabbable);\r\n\r\n (function (orig) {\r\n $.ui.dialog.prototype._createTitlebar = function () {\r\n orig.call(this);\r\n this.uiDialogTitlebar.find('.ui-dialog-titlebar-close').html('<i class=\"fa fa-times\" />');\r\n }\r\n })($.ui.dialog.prototype._createTitlebar);\r\n };\r\n\r\n if (jQuery.ui) {\r\n jQueryUIInitialization();\r\n }\r\n else {\r\n jQuery(function () {\r\n if (jQuery.ui)\r\n jQueryUIInitialization();\r\n });\r\n }\r\n\r\n (jQuery as any).cleanData = (function (orig) {\n return function (elems: any[]) {\n var events, elem, i, e;\n var cloned = elems;\n for (i = 0; (elem = cloned[i]) != null; i++) {\n try {\n events = ($ as any)._data(elem, \"events\");\n if (events && events.remove) {\n // html collection might change during remove event, so clone it!\n if (cloned === elems)\n cloned = Array.prototype.slice.call(elems);\n $(elem).triggerHandler(\"remove\");\n delete events.remove;\n }\n } catch (e) { }\n }\n orig(elems);\n };\n })((jQuery as any).cleanData);\n\r\n function ssExceptionInitialization() {\r\n ss.Exception.prototype.toString = function () {\r\n return this.get_message();\r\n };\r\n };\r\n\r\n if (ss && ss.Exception)\r\n ssExceptionInitialization();\r\n else {\r\n jQuery(function ($) {\r\n if (ss && ss.Exception)\r\n ssExceptionInitialization();\r\n });\r\n }\r\n\r\n function vueInitialization() {\r\n Vue.component('editor', {\r\n props: {\r\n type: {\r\n type: String,\r\n required: true, \r\n },\r\n id: {\r\n type: String,\r\n required: false\r\n },\r\n name: {\r\n type: String,\r\n required: false\r\n },\r\n placeholder: {\r\n type: String,\r\n required: false\r\n },\r\n value: {\r\n required: false\r\n },\r\n options: {\r\n required: false\r\n },\r\n maxLength: {\r\n required: false\r\n }\r\n },\r\n render: function (createElement: any) {\r\n var editorType = Serenity.EditorTypeRegistry.get(this.type);\r\n var elementAttr = (ss as any).getAttributes(editorType, Serenity.ElementAttribute, true);\r\n var elementHtml = ((elementAttr.length > 0) ? elementAttr[0].value : '<input/>') as string;\r\n var domProps: any = {};\r\n var element = $(elementHtml)[0];\r\n var attrs = element.attributes;\r\n for (var i = 0; i < attrs.length; i++) {\r\n var attr = attrs.item(i);\r\n domProps[attr.name] = attr.value;\r\n }\r\n\r\n if (this.id != null)\r\n domProps.id = this.id;\r\n\r\n if (this.name != null)\r\n domProps.name = this.name;\r\n\r\n if (this.placeholder != null)\r\n domProps.placeholder = this.placeholder;\r\n\r\n var editorParams = this.options;\r\n var optionsType: any = null;\r\n\r\n var self = this\r\n var el = createElement(element.tagName, {\r\n domProps: domProps\r\n });\r\n\r\n this.$editorType = editorType;\r\n\r\n return el;\r\n },\r\n watch: {\r\n value: function (v: any) {\r\n Serenity.EditorUtils.setValue(this.$widget, v);\r\n }\r\n },\r\n mounted: function () {\r\n var self = this;\r\n\r\n this.$widget = new this.$editorType($(this.$el), this.options);\r\n this.$widget.initialize();\r\n\r\n if (this.maxLength) {\r\n (Serenity.PropertyGrid as any).$setMaxLength(this.$widget, this.maxLength);\r\n }\r\n\r\n if (this.options)\r\n Serenity.ReflectionOptionsSetter.set(this.$widget, this.options);\r\n\r\n if (this.value != null)\r\n Serenity.EditorUtils.setValue(this.$widget, this.value);\r\n\r\n if ($(this.$el).data('select2'))\r\n Serenity.WX.changeSelect2(this.$widget, function () {\r\n self.$emit('input', Serenity.EditorUtils.getValue(self.$widget));\r\n });\r\n else\r\n Serenity.WX.change(this.$widget, function () {\r\n self.$emit('input', Serenity.EditorUtils.getValue(self.$widget));\r\n });\r\n },\r\n destroyed: function () {\r\n if (this.$widget) {\r\n this.$widget.destroy();\r\n this.$widget = null;\r\n }\r\n }\r\n });\r\n }\r\n\r\n window['Vue'] ? vueInitialization() : $(function () { window['Vue'] && vueInitialization(); });\r\n}\r\n","namespace Serenity {\r\n\r\n @Serenity.Decorators.registerEditor('Serenity.AsyncLookupEditor',\r\n [Serenity.ISetEditValue, Serenity.IGetEditValue, Serenity.IStringValue, Serenity.IReadOnly, Serenity.IAsyncInit])\r\n export class AsyncLookupEditor extends LookupEditorBase<LookupEditorOptions, any> {\r\n constructor(hidden: JQuery, opt: LookupEditorOptions) {\r\n super(hidden, opt);\r\n }\r\n\r\n getLookupKey() {\r\n return Q.coalesce(this.options.lookupKey, super.getLookupKey());\r\n }\r\n }\r\n}\r\n\r\nnamespace Serenity {\r\n @Serenity.Decorators.registerClass('Serenity.CascadedWidgetLink')\r\n export class CascadedWidgetLink<TParent extends Widget<any>> {\r\n\r\n constructor(private parentType: { new(...args: any[]): TParent },\r\n private widget: Serenity.Widget<any>,\r\n private parentChange: (p1: TParent) => void) {\r\n this.bind();\r\n this.widget.element.bind('remove.' + (widget as any).uniqueName + 'cwh', e => {\r\n this.unbind();\r\n this.widget = null;\r\n this.parentChange = null;\r\n });\r\n }\r\n\r\n private _parentID: string;\r\n\r\n bind() {\r\n\r\n if (Q.isEmptyOrNull(this._parentID)) {\r\n return null;\r\n }\r\n\r\n var parent = Q.findElementWithRelativeId(this.widget.element, this._parentID)\r\n .tryGetWidget(this.parentType);\r\n\r\n if (parent != null) {\r\n parent.element.bind('change.' + (this.widget as any).uniqueName, () => {\r\n this.parentChange(parent);\r\n });\r\n return parent;\r\n }\r\n\t\t\telse {\r\n Q.notifyError(\"Can't find cascaded parent element with ID: \" + this._parentID + '!', '', null);\r\n return null;\r\n }\r\n }\r\n\r\n unbind() {\r\n\r\n if (Q.isEmptyOrNull(this._parentID)) {\r\n return null;\r\n }\r\n\r\n\t\t\tvar parent = Q.findElementWithRelativeId(this.widget.element, this._parentID).tryGetWidget(this.parentType);\r\n\r\n if (parent != null) {\r\n parent.element.unbind('.' + (this.widget as any).uniqueName);\r\n }\r\n\r\n\t\t\treturn parent;\r\n }\r\n\r\n get_parentID() {\r\n return this._parentID;\r\n }\r\n\r\n set_parentID(value: string) {\r\n\r\n if (this._parentID !== value) {\r\n this.unbind();\r\n this._parentID = value;\r\n this.bind();\r\n }\r\n }\r\n }\r\n}\r\n\r\nnamespace Serenity.DialogExtensions {\r\n export function dialogFlexify(dialog: JQuery): JQuery {\r\n var flexify = new Serenity.Flexify(dialog.closest('.ui-dialog'), {});\r\n return dialog;\r\n }\r\n\r\n export function dialogResizable(dialog: JQuery, w?: any, h?: any, mw?: any, mh?: any): JQuery {\r\n var dlg = dialog.dialog();\r\n dlg.dialog('option', 'resizable', true);\r\n if (mw != null) {\r\n dlg.dialog('option', 'minWidth', mw);\r\n }\r\n if (w != null) {\r\n dlg.dialog('option', 'width', w);\r\n }\r\n if (mh != null) {\r\n dlg.dialog('option', 'minHeight', mh);\r\n }\r\n if (h != null) {\r\n dlg.dialog('option', 'height', h);\r\n }\r\n return dialog;\r\n }\r\n\r\n export function dialogMaximizable(dialog: JQuery): JQuery {\r\n (dialog as any).dialogExtend({\r\n closable: true,\r\n maximizable: true,\r\n dblclick: 'maximize',\r\n icons: { maximize: 'ui-icon-maximize-window' }\r\n });\r\n\r\n return dialog;\r\n }\r\n\r\n export function dialogCloseOnEnter(dialog: JQuery): JQuery {\r\n dialog.bind('keydown', function (e) {\r\n if (e.which !== 13) {\r\n return;\r\n }\r\n var tagName = e.target.tagName.toLowerCase();\r\n if (tagName === 'button' || tagName === 'select' || tagName === 'textarea' ||\r\n tagName === 'input' && e.target.getAttribute('type') === 'button') {\r\n return;\r\n }\r\n var dlg = $(this);\r\n if (!dlg.hasClass('ui-dialog')) {\r\n dlg = dlg.closest('.ui-dialog');\r\n }\r\n var buttons = dlg.children('.ui-dialog-buttonpane').find('button');\r\n if (buttons.length > 0) {\r\n var defaultButton = buttons.find('.default-button');\r\n if (defaultButton.length > 0) {\r\n buttons = defaultButton;\r\n }\r\n }\r\n var button = buttons.eq(0);\r\n if (!button.is(':disabled')) {\r\n e.preventDefault();\r\n button.trigger('click');\r\n }\r\n });\r\n return dialog;\r\n }\r\n}\r\n\r\nnamespace Serenity.DialogTypeRegistry {\r\n function search(typeName: string) {\r\n\r\n var dialogType = (ss as any).getType(typeName);\r\n if (dialogType != null && (ss as any).isAssignableFrom(Serenity.IDialog, dialogType)) {\r\n return dialogType;\r\n }\r\n\r\n for (var ns of Q.Config.rootNamespaces) {\r\n dialogType = (ss as any).getType(ns + '.' + typeName);\r\n if (dialogType != null && (ss as any).isAssignableFrom(Serenity.IDialog, dialogType)) {\r\n return dialogType;\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n var knownTypes: Q.Dictionary<WidgetDialogClass> = {};\r\n\r\n export function tryGet(key: string): WidgetDialogClass {\r\n if (knownTypes[key] == null) {\r\n var typeName = key;\r\n var dialogType = search(typeName);\r\n\r\n if (dialogType == null && !Q.endsWith(key, 'Dialog')) {\r\n typeName = key + 'Dialog';\r\n dialogType = search(typeName);\r\n }\r\n\r\n if (dialogType == null) {\r\n return null;\r\n }\r\n\r\n knownTypes[key] = dialogType;\r\n return dialogType;\r\n }\r\n\r\n return knownTypes[key];\r\n }\r\n\r\n export function get(key: string): WidgetDialogClass {\r\n\r\n var type = tryGet(key);\r\n\r\n if (type == null) {\r\n var message = key + ' dialog class is not found! Make sure there is a dialog class with this name, ' +\r\n 'it is under your project root namespace, and your namespace parts start with capital letters, ' +\r\n 'e.g. MyProject.Pascal.Cased namespace. If you got this error from an editor with InplaceAdd option ' +\r\n 'check that lookup key and dialog type name matches (case sensitive, excluding Dialog suffix). ' +\r\n \"You need to change lookup key or specify DialogType property in LookupEditor attribute if that's not the case.\";\r\n\r\n Q.notifyError(message, '', null);\r\n\r\n throw new ss.Exception(message);\r\n }\r\n\r\n return type;\r\n }\r\n}"]}