{"version":3,"file":"496.5527186935e926b7c0cb.js","mappings":"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","sources":["webpack://konfigurewebclient/./src/areas/main/events/queryChanged.ts","webpack://konfigurewebclient/./src/components/code-editor/index.ts","webpack://konfigurewebclient/./src/util/loadScript.ts","webpack://konfigurewebclient/./src/components/form/active.ts","webpack://konfigurewebclient/./src/components/form/filter/UserFilter.ts","webpack://konfigurewebclient/./src/components/form/model-types.ts","webpack://konfigurewebclient/./src/util/koDeferredComputed.ts","webpack://konfigurewebclient/./src/components/form/model.ts","webpack://konfigurewebclient/./src/components/form/grid/parseExcelHtml.ts","webpack://konfigurewebclient/./src/components/tree/Tree.ts","webpack://konfigurewebclient/./src/util/BoundObject.ts","webpack://konfigurewebclient/./src/util/queryString.ts","webpack://konfigurewebclient/./src/util/xmlEncode.ts"],"sourcesContent":["import jQuery from 'jquery';\r\n\r\nconst id = 'konfig:query-changed';\r\n\r\nexport interface Args {\r\n\tcurrent: URLSearchParams;\r\n\tprevious: URLSearchParams | undefined\r\n}\r\n\r\nexport function raise(params: URLSearchParams, previous: URLSearchParams) {\r\n\tjQuery(window).trigger(id, { current: params, previous });\r\n}\r\n\r\nexport function handle(handler: (args: Args) => void) {\r\n\tjQuery(window).on(id, (_, args) => {\r\n\t\thandler(args as Args);\r\n\t});\r\n}\r\n\r\nexport function paramsWhichDiffer(args: Args): Set {\r\n\tlet { current, previous } = args;\r\n\r\n\tif (previous) {\r\n\t\tlet result = new Set();\r\n\r\n\t\tfor (const key of new Set([...current.keys(), ...previous.keys()])) {\r\n\t\t\tif (current.get(key) !== previous.get(key)) {\r\n\t\t\t\tresult.add(key);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn result;\r\n\t}\r\n\telse {\r\n\t\treturn new Set(current.keys());\r\n\t}\r\n}\r\n","/// \r\nimport jQuery from 'jquery';\r\nimport loadScript from '../../util/loadScript';\r\nimport { bind as bindTree } from '../tree/Tree';\r\nimport { KonfigExports } from '../../areas/main/index';\r\nimport { settings } from '../../areas/main/config';\r\nimport './style.less';\r\nimport appUrl from '../../util/appUrl';\r\nimport { ObjectForm } from '../form/model';\r\n\r\ndeclare global {\r\n\tinterface Window {\r\n\t\t//to prevent webpack processing Monaco's loader calls, we must\r\n\t\t//explicity target the require function of global/window\r\n\t\trequire: typeof requirejs\r\n\t}\r\n}\r\n\r\nexport type CodeEditorType = 'Expression' | 'InitialValue' | 'Sql';\r\n\r\nexport interface ICodeEditorOptions {\r\n\tvalue?: string;\r\n\ttitle?: string;\r\n\ttype?: CodeEditorType;\r\n\tform?: ObjectForm;\r\n\taliases?: string;\r\n\treadOnly?: boolean;\r\n\tonShow?: () => void;\r\n\tonAccept?: (value: string) => void;\r\n}\r\n\r\nexport default function codeEditor(options: ICodeEditorOptions): void {\r\n\tif (window !== window.top) {\r\n\t\tconst exports = window.top['konfig'] as KonfigExports;\r\n\t\treturn exports.codeEditor(options);\r\n\t}\r\n\r\n\tfunction showEditor(editor: CodeEditor) {\r\n\t\teditor.show(options);\r\n\t}\r\n\r\n\tif (CodeEditor.instance) {\r\n\t\tshowEditor(CodeEditor.instance);\r\n\t}\r\n\telse {\r\n\t\tconst elementId = \"k-codeeditor\";\r\n\t\tlet container = jQuery(`#${elementId}`);\r\n\r\n\t\tif (!container.length) {\r\n\t\t\tcontainer = jQuery(`
`).prependTo(\"body\");\r\n\t\t}\r\n\r\n\t\tconst vsPath = appUrl(settings.monacoPath) + \"/vs\";\r\n\r\n\t\tcontainer.load(appUrl('~/CodeEditor'), () => {\r\n\t\t\tloadScript(`${vsPath}/loader.js`)\r\n\t\t\t\t.then(() => {\r\n\r\n\t\t\t\t\twindow.require.config({\r\n\t\t\t\t\t\tpaths: {\r\n\t\t\t\t\t\t\t'vs': vsPath\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\twindow.require(['vs/editor/editor.main'],\r\n\t\t\t\t\t\t() => {\r\n\t\t\t\t\t\t\tmonaco.languages.typescript.javascriptDefaults.setDiagnosticsOptions({\r\n\t\t\t\t\t\t\t\tnoSemanticValidation: true,\r\n\t\t\t\t\t\t\t\tnoSyntaxValidation: true\r\n\t\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\t\tlet editor = CodeEditor.instance = new CodeEditor(jQuery(\".code-editor\", container));\r\n\t\t\t\t\t\t\tshowEditor(editor);\r\n\t\t\t\t\t\t});\r\n\t\t\t\t})\r\n\t\t\t\t.catch(error => { throw error });\r\n\t\t});\r\n\t}\r\n}\r\n\r\nclass CodeEditor {\r\n\tstatic instance: CodeEditor;\r\n\r\n\tconstructor(private element: JQuery) {\r\n\t\telement\r\n\t\t\t.modal({\r\n\t\t\t\tbackdrop: false,\r\n\t\t\t\tshow: false\r\n\t\t\t})\r\n\t\t\t.on(\"shown.bs.modal\", () => {\r\n\t\t\t\tconst bootstrapModalZindex = 1050;\r\n\t\t\t\tconst depth = jQuery(\".modal.in\").length - 1;\r\n\t\t\t\telement.css(\"z-index\", bootstrapModalZindex + depth * 10);\r\n\r\n\t\t\t\tconst onShow = this.options.onShow;\r\n\t\t\t\tonShow && onShow();\r\n\t\t\t});\r\n\r\n\t\tconst container = jQuery(\".monaco-container\", element)[0];\r\n\t\tthis.editor = monaco.editor.create(container, this.settings(this.options));\r\n\r\n\t\tjQuery(\".btn-ok\", element).click(() => {\r\n\t\t\tconst accept = this.options.onAccept;\r\n\t\t\tif (accept) {\r\n\t\t\t\tconst value = this.editor.getValue();\r\n\t\t\t\taccept(value);\r\n\t\t\t}\r\n\r\n\t\t\tthis.element.modal(\"hide\");\r\n\t\t});\r\n\r\n\t\tjQuery(\".fields-container\", element).on(\"click\", \".item-text\", e => {\r\n\t\t\te.stopImmediatePropagation();\r\n\r\n\t\t\tconst treeItem = jQuery(e.currentTarget).closest('.k-in');\r\n\t\t\tconst expression = treeItem.find('input.node-value').val() as string;\r\n\r\n\t\t\tif (!expression) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tconst editor = this.editor;\r\n\t\t\tconst selection = editor.getSelection();\r\n\r\n\t\t\teditor.pushUndoStop();\r\n\t\t\teditor.executeEdits(\"field-click\", [\r\n\t\t\t\t{\r\n\t\t\t\t\trange: selection,\r\n\t\t\t\t\ttext: expression,\r\n\t\t\t\t\tforceMoveMarkers: true\r\n\t\t\t\t}\r\n\t\t\t]);\r\n\r\n\t\t\teditor.pushUndoStop();\r\n\t\t\teditor.focus();\r\n\t\t});\r\n\t}\r\n\r\n\tshow(options: ICodeEditorOptions) {\r\n\t\tthis.element\r\n\t\t\t.toggleClass('read-only', options.readOnly)\r\n\t\t\t.find(\"header.main label\").text(options.title);\r\n\r\n\t\tconst differentType = options.type !== this.options.type;\r\n\t\tconst updateOptions = differentType || options.readOnly !== this.options.readOnly;\r\n\r\n\t\tif (updateOptions) {\r\n\t\t\tconst settings = this.settings(options);\r\n\t\t\tthis.editor.updateOptions(settings);\r\n\r\n\t\t\tif (differentType) {\r\n\t\t\t\tmonaco.editor.setModelLanguage(this.editor.getModel(), settings.language);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.editor.setValue(options.value);\r\n\r\n\t\tconst showModal = () => {\r\n\t\t\tthis.options = options;\r\n\t\t\tthis.element.modal('show');\r\n\t\t}\r\n\r\n\t\tconst tryGetId = (name: string): number => {\r\n\t\t\tconst field = options.form?.findField(name);\r\n\t\t\tif (field) {\r\n\t\t\t\tconst value = field.value();\r\n\r\n\t\t\t\tif (value && value.id) {\r\n\t\t\t\t\treturn value.id;\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn value;\r\n\t\t\t}\r\n\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\tconst formId = tryGetId(\"FormId\");\r\n\t\tconst entityId = tryGetId(\"EntityId\");\r\n\t\tconst fieldId = tryGetId(\"FieldId\");\r\n\r\n\t\tconst fields = jQuery(\".fields-container\", this.element);\r\n\t\tconst showFields = options.type !== 'Sql' && options.readOnly !== true;\r\n\r\n\t\tconst attrDiffers = (name: string, value: number) => fields.attr(name) !== value + '';\r\n\r\n\t\tconst loadFields = showFields\r\n\t\t\t? attrDiffers('data-form', formId) || attrDiffers('data-entity', entityId)\r\n\t\t\t: false;\r\n\r\n\t\tfields.toggleClass('hide', !showFields);\r\n\r\n\t\tif (loadFields) {\r\n\t\t\tconst aliases = options.aliases\r\n\t\t\t\t? `aliases=${encodeURIComponent(options.aliases)}`\r\n\t\t\t\t: '';\r\n\r\n\t\t\tconst contentURL = formId\r\n\t\t\t\t? `~/CodeEditor/Fields?formId=${formId}&${aliases}`\r\n\t\t\t\t: (entityId || fieldId)\r\n\t\t\t\t\t? `~/CodeEditor/Fields?entityId=${entityId}&fieldId=${fieldId}&${aliases}`\r\n\t\t\t\t\t: `~/CodeEditor/Functions/?${aliases}`;\r\n\r\n\t\t\tfields\r\n\t\t\t\t.attr('data-form', formId)\r\n\t\t\t\t.attr('data-entity', entityId)\r\n\t\t\t\t.load(appUrl(contentURL), () => {\r\n\t\t\t\t\tbindTree(fields);\r\n\t\t\t\t});\r\n\t\t}\r\n\r\n\t\tshowModal();\r\n\t}\r\n\r\n\tsettings(options: ICodeEditorOptions): monaco.editor.IStandaloneEditorConstructionOptions {\r\n\t\tlet settings: monaco.editor.IStandaloneEditorConstructionOptions = {\r\n\t\t\tautomaticLayout: true,\r\n\t\t\tscrollBeyondLastLine: false,\r\n\t\t\treadOnly: options.readOnly,\r\n\t\t\tminimap: {\r\n\t\t\t\tenabled: false\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tif (options.type === 'Sql') {\r\n\t\t\tsettings.language = 'sql';\r\n\t\t\tsettings.theme = 'vs-dark';\r\n\t\t\tsettings.wordWrap = 'on';\r\n\t\t\tsettings.mouseWheelZoom = true;\r\n\t\t}\r\n\t\telse {\r\n\t\t\tsettings.language = 'javascript';\r\n\t\t}\r\n\r\n\t\treturn settings;\r\n\t}\r\n\r\n\teditor: monaco.editor.IStandaloneCodeEditor;\r\n\toptions: ICodeEditorOptions = {};\r\n}\r\n","export default function loadScript(src: string) {\r\n\treturn new Promise((resolve, reject) => {\r\n\t\tconst script = document.createElement('script');\r\n\t\tscript.type = 'text/javascript';\r\n\t\tscript.async = true;\r\n\t\tscript.src = src;\r\n\r\n\t\tscript.addEventListener('load', resolve);\r\n\t\tscript.addEventListener('error', e => reject(e));\r\n\t\tscript.addEventListener('abort', () => reject('Script loading aborted'));\r\n\r\n\t\ttry {\r\n\t\t\tdocument.head.appendChild(script);\r\n\t\t}\r\n\t\tcatch (e) {\r\n\t\t\treject(e)\r\n\t\t}\r\n\t});\r\n}\r\n","import { Field, ListField, ObjectForm, ScalarField, SelectField, Updateable } from './model';\r\nimport { settings } from '../../areas/main/config';\r\nimport appUrl from '../../util/appUrl';\r\nimport { format } from '../../util/format';\r\nimport { parseJson } from '../../util/parse';\r\nimport { setQueryParameter } from '../../util/queryString';\r\nimport { dismissModal, showModalPage } from '../dialog/modal';\r\nimport { getCurrentPopup } from '../dialog/popup';\r\nimport { confirm } from '../notify';\r\nimport jQuery from 'jquery';\r\nimport * as Cookie from '../../util/cookie';\r\nimport _ from 'lodash';\r\n\r\nexport interface Instruction {\r\n\topCode: number;\r\n\ttargetSpecifier: string;\r\n\toperands: string[];\r\n}\r\n\r\nexport class Engine {\r\n\tform: ObjectForm;\r\n\r\n\tconstructor(form: ObjectForm) {\r\n\t\tthis.form = form;\r\n\t}\r\n\r\n\trun(context: string, argument: string, source: Updateable, success?: () => void, aborted?: () => void) {\r\n\t\tif (!this.form.activeEnabled) return;\r\n\r\n\t\tsource.isUpdating(true);\r\n\t\tsource.updateError(null);\r\n\r\n\t\tjQuery\r\n\t\t\t.post(\r\n\t\t\tappUrl(this.form.activeUrl + '?context=' + context + '&argument=' + argument),\r\n\t\t\tthis.snapshot()\r\n\t\t\t)\r\n\t\t\t.done((result, status, xhr) => {\r\n\t\t\t\tif (_.isArray(result)) {\r\n\t\t\t\t\tvar machine = new Machine(this);\r\n\t\t\t\t\tmachine.run(result, success, aborted);\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t\t.fail((xhr, status, error) => {\r\n\t\t\t\tthis.handleError(source, xhr.responseText);\r\n\t\t\t})\r\n\t\t\t.always(() => {\r\n\t\t\t\tsource.isUpdating(false);\r\n\t\t\t});\r\n\t}\r\n\r\n\trunOperations(operations: Instruction[]) {\r\n\t\tvar machine = new Machine(this);\r\n\t\tmachine.run(operations);\r\n\t}\r\n\r\n\thandleError(source: Updateable, message: string) {\r\n\t\tif (message) message = settings.strings.activeFormError + '\\n' + message;\r\n\t\tsource && source.updateError(message);\r\n\t\tconsole.error(message);\r\n\t}\r\n\r\n\tresolve(target: string): Field {\r\n\t\treturn this.form.findField(target);\r\n\t}\r\n\r\n\tsnapshot() {\r\n\t\tvar map = {};\r\n\t\tthis.form.snapshot(map);\r\n\t\treturn map;\r\n\t}\r\n}\r\n\r\ninterface Operation {\r\n\tname: string;\r\n\trequiresTarget?: boolean;\r\n\trequiresOperands?: boolean;\r\n\tisAsync?: boolean;\r\n\texecute?: (machine: Machine) => void;\r\n}\r\n\r\nclass Machine {\r\n\tstatic operations: Operation[] = [\r\n\t\t//0\r\n\t\t{\r\n\t\t\tname: 'noop'\r\n\t\t},\r\n\r\n\t\t//1\r\n\t\t{\r\n\t\t\tname: 'test',\r\n\t\t\trequiresTarget: true,\r\n\t\t\trequiresOperands: true\r\n\t\t},\r\n\r\n\t\t//2\r\n\t\t{\r\n\t\t\tname: 'call',\r\n\t\t\trequiresOperands: true,\r\n\r\n\t\t\texecute: function (m) {\r\n\t\t\t\tvar f: Function = window.self[m.operands[0]];\r\n\r\n\t\t\t\tif (_.isFunction(f)) {\r\n\t\t\t\t\tf.apply(\r\n\t\t\t\t\t\t(m.target || window.self),\r\n\t\t\t\t\t\tm.operands.slice(1)\r\n\t\t\t\t\t);\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tm.setError('Can not find a function named \"{0}\"', m.operands[0]);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\t//3\r\n\t\t{\r\n\t\t\tname: 'set',\r\n\t\t\trequiresTarget: true,\r\n\r\n\t\t\texecute: function (m) {\r\n\t\t\t\tif (m.operands.length > 0) {\r\n\t\t\t\t\t((m.target)).parse(parseJson(m.operands[0]));\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tm.target.value(null);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\t//4\r\n\t\t{\r\n\t\t\tname: 'eval',\r\n\t\t\trequiresOperands: true,\r\n\r\n\t\t\texecute: function (m) {\r\n\t\t\t\teval(m.operands[0]);\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\t//5\r\n\t\t{\r\n\t\t\tname: 'add',\r\n\t\t\trequiresTarget: true,\r\n\t\t\trequiresOperands: true\r\n\t\t},\r\n\r\n\t\t//6\r\n\t\t{\r\n\t\t\tname: 'remove',\r\n\t\t\trequiresTarget: true,\r\n\t\t\trequiresOperands: true\r\n\t\t},\r\n\r\n\t\t//7\r\n\t\t{\r\n\t\t\tname: 'hint',\r\n\t\t\trequiresOperands: true,\r\n\r\n\t\t\texecute: function (m) {\r\n\t\t\t\tif (m.target) {\r\n\t\t\t\t\tm.target.message(m.operands[0]);\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tm.engine.form.message(m.operands[0]);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\t//8\r\n\t\t{\r\n\t\t\tname: 'show',\r\n\t\t\trequiresTarget: true,\r\n\r\n\t\t\texecute: function (m) {\r\n\t\t\t\tm.target.isVisible(true);\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\t//9\r\n\t\t{\r\n\t\t\tname: 'hide',\r\n\t\t\trequiresTarget: true,\r\n\r\n\t\t\texecute: function (m) {\r\n\t\t\t\tm.target.isVisible(false);\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\t//10\r\n\t\t{\r\n\t\t\tname: 'open',\r\n\t\t\trequiresOperands: true,\r\n\r\n\t\t\texecute: function (m) {\r\n\t\t\t\tvar url: string = m.operands[0];\r\n\r\n\t\t\t\t//operands 1 and 2 represent with and height, they are currently unused\r\n\t\t\t\tvar hideCloseButton: boolean = m.intOperand(3, 0) > 0;\r\n\r\n\t\t\t\tvar callback = function (program: Instruction[], context) {\r\n\t\t\t\t\tif (program) {\r\n\t\t\t\t\t\tm.run(program);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tshowModalPage({\r\n\t\t\t\t\turl: url,\r\n\t\t\t\t\tcallback: callback,\r\n\t\t\t\t\thideCloseButton: hideCloseButton\r\n\t\t\t\t});\r\n\r\n\t\t\t\tm.stop();\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\t//11\r\n\t\t{\r\n\t\t\tname: 'disable',\r\n\t\t\trequiresTarget: true,\r\n\r\n\t\t\texecute: function (m) {\r\n\t\t\t\tm.target.isDisabled(true);\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\t//12\r\n\t\t{\r\n\t\t\tname: 'require',\r\n\t\t\trequiresTarget: true,\r\n\r\n\t\t\texecute: function (m) {\r\n\t\t\t\tm.target.isRequired(true);\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\t//13\r\n\t\t{\r\n\t\t\tname: 'enable',\r\n\t\t\trequiresTarget: true,\r\n\r\n\t\t\texecute: function (m) {\r\n\t\t\t\tm.target.isDisabled(false);\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\t//14\r\n\t\t{\r\n\t\t\tname: 'invalidate',\r\n\t\t\trequiresOperands: true,\r\n\r\n\t\t\texecute: function (m) {\r\n\t\t\t\tconst message = m.operands[0];\r\n\r\n\t\t\t\tif (m.target) {\r\n\t\t\t\t\tm.target.customError(message);\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tm.errors.push(message);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\t//15\r\n\t\t{\r\n\t\t\tname: 'omit',\r\n\t\t\trequiresTarget: true,\r\n\t\t\texecute: function (m) {\r\n\t\t\t\tm.target.isRequired(false);\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\t//16\r\n\t\t{\r\n\t\t\tname: 'dismiss',\r\n\r\n\t\t\texecute: function (m) {\r\n\t\t\t\tif (m.target) {\r\n\t\t\t\t\tm.target.dismissMessage();\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tm.engine.form.dismissMessage();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\t//17\r\n\t\t{\r\n\t\t\tname: 'populate',\r\n\t\t\trequiresTarget: true,\r\n\t\t\trequiresOperands: true,\r\n\r\n\t\t\texecute: function (m) {\r\n\t\t\t\tvar data = $.map(parseJson(m.operands[0]), (item: any) => {\r\n\t\t\t\t\treturn {\r\n\t\t\t\t\t\tid: item.value,\r\n\t\t\t\t\t\ttext: item.text\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t\tvar field: SelectField = m.target;\r\n\t\t\t\tfield.options(data);\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\t//18\r\n\t\t{\r\n\t\t\tname: 'reloadList',\r\n\r\n\t\t\texecute: function (m) {\r\n\t\t\t\tif (m.target) {\r\n\t\t\t\t\tvar field: ListField = m.target;\r\n\t\t\t\t\tfield.load();\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tfor (let f of m.engine.form.fields.list) {\r\n\t\t\t\t\t\tif (f.initialized()) {\r\n\t\t\t\t\t\t\tf.load();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t};\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\t//19\r\n\t\t{\r\n\t\t\tname: 'close',\r\n\r\n\t\t\texecute: function (m) {\r\n\t\t\t\tvar p = getCurrentPopup();\r\n\r\n\t\t\t\t//build continuation for parent window\r\n\t\t\t\tvar continuation = m.program.slice(m.currentIndex);\r\n\r\n\t\t\t\tif (p) {\r\n\t\t\t\t\tvar argument = null;\r\n\t\t\t\t\tif (continuation.length) {\r\n\t\t\t\t\t\tconsole.log(\"After the close, %i operations will continue on the parent window\", continuation.length);\r\n\t\t\t\t\t\targument = continuation;\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t\targument = m.operands.length && m.operands[0];\r\n\t\t\t\t\t}\r\n\t\t\t\t\tp.callbackArgument = argument;\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tif (continuation.length > 0) {\r\n\t\t\t\t\t\tconsole.log(\"Unable to locate parent window to execute %i operations\", continuation.length);\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t\tconsole.log(\"Unable to locate parent window\");\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tdismissModal();\r\n\t\t\t\tm.stop();\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\t//20\r\n\t\t{\r\n\t\t\tname: 'revalidate',\r\n\t\t\trequiresTarget: true,\r\n\r\n\t\t\texecute: function (m) {\r\n\t\t\t\tm.target.customError(null);\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\t//21\r\n\t\t{\r\n\t\t\tname: 'relocate',\r\n\t\t\trequiresOperands: true,\r\n\r\n\t\t\texecute: function (m) {\r\n\t\t\t\tlet [url, message] = m.operands;\r\n\r\n\t\t\t\tif (message) {\r\n\t\t\t\t\tCookie.set(\r\n\t\t\t\t\t\tsettings.cookieNames.workflowMessage,\r\n\t\t\t\t\t\tmessage,\r\n\t\t\t\t\t\t{ path: settings.applicationPath }\r\n\t\t\t\t\t);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tm.abort(appUrl(url));\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\t//22\r\n\t\t{\r\n\t\t\tname: 'confirm',\r\n\t\t\trequiresTarget: true,\r\n\t\t\trequiresOperands: true,\r\n\t\t\tisAsync: true,\r\n\r\n\t\t\texecute: function (m) {\r\n\t\t\t\tm.confirm(JSON.parse(m.operands[0])).then(result => {\r\n\t\t\t\t\t(m.target).parse(result);\r\n\t\t\t\t\tm.continue();\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\t//23\r\n\t\t{\r\n\t\t\tname: 'setQueryStringParameter',\r\n\t\t\trequiresOperands: true,\r\n\r\n\t\t\texecute: function (m) {\r\n\t\t\t\tsetQueryParameter(\r\n\t\t\t\t\tJSON.parse(m.operands[0]),\r\n\t\t\t\t\tJSON.parse(m.operands[1])\r\n\t\t\t\t);\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\t//24\r\n\t\t{\r\n\t\t\tname: 'promptContinue',\r\n\t\t\trequiresOperands: true,\r\n\t\t\tisAsync: true,\r\n\r\n\t\t\texecute: function (m) {\r\n\t\t\t\tm.confirm(JSON.parse(m.operands[0])).then(proceed => {\r\n\t\t\t\t\tif (proceed) {\r\n\t\t\t\t\t\tm.continue();\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t\tm.abort();\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\t//25\r\n\t\t{\r\n\t\t\tname: 'abort',\r\n\r\n\t\t\texecute: function (m) {\r\n\t\t\t\tconst message = m.operands[0];\r\n\r\n\t\t\t\tif (message) {\r\n\t\t\t\t\tm.errors.push(message);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tm.abort();\r\n\t\t\t}\r\n\t\t}\r\n\t];\r\n\r\n\ttarget: Field;\r\n\toperands: string[];\r\n\tprogram: Instruction[]\r\n\tcurrentIndex: number;\r\n\tprivate isStopped: boolean;\r\n\tprivate errors: string[];\r\n\tprivate onSuccess: () => void;\r\n\tprivate onAbort: (redirectUrl?: string) => void;\r\n\r\n\tconstructor(public engine: Engine) { }\r\n\r\n\trun(program: Instruction[], onSuccess?: () => void, onAbort?: (redirectUrl?: string) => void) {\r\n\t\tthis.onSuccess = onSuccess;\r\n\t\tthis.onAbort = onAbort;\r\n\r\n\t\tif (program.length) {\r\n\t\t\tconsole.debug(\"Running active forms\", program);\r\n\t\t\tthis.isStopped = false;\r\n\t\t\tthis.program = program;\r\n\t\t\tthis.errors = [];\r\n\t\t\tthis.currentIndex = 0;\r\n\t\t\tthis.continue();\r\n\t\t}\r\n\t\telse {\r\n\t\t\tthis.stop();\r\n\t\t}\r\n\t}\r\n\r\n\tcontinue() {\r\n\t\tif (this.isStopped) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\telse if (this.currentIndex < this.program.length) {\r\n\t\t\tvar instruction = this.program[this.currentIndex++];\r\n\t\t\tthis.execute(instruction);\r\n\t\t}\r\n\t\telse {\r\n\t\t\tthis.stop();\r\n\t\t}\r\n\t}\r\n\r\n\tconfirm(prompt: string): Promise {\r\n\t\treturn new Promise(resolve => {\r\n\t\t\tvar form = this.engine.form;\r\n\t\t\tvar isSaving = form.isSaving();\r\n\t\t\tform.isSaving(false);\r\n\r\n\t\t\tconfirm(prompt).then(result => {\r\n\t\t\t\tform.isSaving(isSaving);\r\n\r\n\t\t\t\tresolve(result);\r\n\t\t\t});\r\n\t\t});\r\n\t}\r\n\r\n\tabort(redirectUrl?: string) {\r\n\t\tthis.isStopped = true;\r\n\t\tthis.validate();\r\n\r\n\t\tif (this.onAbort) {\r\n\t\t\tthis.onAbort(redirectUrl);\r\n\t\t}\r\n\t\telse if (redirectUrl) {\r\n\t\t\tlocation.href = redirectUrl;\r\n\t\t}\r\n\t}\r\n\r\n\tstop() {\r\n\t\tthis.isStopped = true;\r\n\t\tthis.validate();\r\n\r\n\t\tthis.onSuccess && this.onSuccess();\r\n\t}\r\n\r\n\tvalidate() {\r\n\t\tif (!_.isEmpty(this.errors)) {\r\n\t\t\tlet form = this.engine.form;\r\n\t\t\tform.errors.push.apply(form.errors, this.errors);\r\n\t\t\tform.validate(true);\r\n\t\t}\r\n\t}\r\n\r\n\texecute(instr: Instruction) {\r\n\t\tif (instr.opCode < 0 || instr.opCode >= Machine.operations.length) {\r\n\t\t\tthis.setError('bad instruction; invalid opcode {0}', instr.opCode);\r\n\t\t\treturn this.continue();\r\n\t\t}\r\n\r\n\t\tvar op = Machine.operations[instr.opCode];\r\n\r\n\t\tif (!_.isFunction(op.execute)) {\r\n\t\t\tthis.setError('bad instruction; {0} is not implemented', op.name);\r\n\t\t\treturn this.continue();\r\n\t\t}\r\n\r\n\t\tthis.target = null;\r\n\t\tif (instr.targetSpecifier) {\r\n\t\t\tthis.target = this.engine.resolve(instr.targetSpecifier);\r\n\t\t}\r\n\r\n\t\tif (op.requiresTarget && !this.target) {\r\n\t\t\tthis.setError('bad instruction; {0} requires a target, none could be located using: {1}', op.name, instr.targetSpecifier);\r\n\t\t\treturn this.continue();\r\n\t\t}\r\n\r\n\t\tif (op.requiresOperands && instr.operands.length == 0) {\r\n\t\t\tthis.setError('bad instruction; {0} requires one or more operands, none were supplied', op.name);\r\n\t\t\treturn this.continue();\r\n\t\t}\r\n\r\n\t\tthis.operands = instr.operands;\r\n\r\n\t\ttry {\r\n\t\t\top.execute(this);\r\n\t\t}\r\n\t\tcatch (e) {\r\n\t\t\tthis.setError(e.message);\r\n\t\t}\r\n\t\tfinally {\r\n\t\t\tif (!op.isAsync) {\r\n\t\t\t\tthis.continue();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tprivate intOperand(index: number, zeroValue: number) {\r\n\t\tif (this.operands.length < index) return zeroValue;\r\n\r\n\t\tvar s = this.operands[index];\r\n\t\tif (!s) return zeroValue;\r\n\r\n\t\tvar n = parseInt(s);\r\n\t\tif (isNaN(n)) return zeroValue;\r\n\r\n\t\tif (n == 0) return zeroValue;\r\n\t\telse return n;\r\n\t}\r\n\r\n\tsetError(message: string, ...args: any[]) {\r\n\t\targs.unshift(message);\r\n\t\tthis.engine.handleError(this.target, format.apply(null, args));\r\n\t}\r\n}\r\n","import appUrl from '../../../util/appUrl';\r\nimport { confirm } from '../../../components/notify';\r\nimport { error as showError, success as showSuccess } from '../../notify';\r\nimport { settings } from '../../../areas/main/config';\r\n\r\nexport enum UserFilterType {\r\n\tList,\r\n\tReport,\r\n\tParameterForm\r\n}\r\n\r\nexport function save(type: UserFilterType, id: number, filter: any, onSuccess: Function) {\r\n\t$.ajax({\r\n\t\turl: appUrl('~/User/SaveFilter'),\r\n\t\tmethod: 'post',\r\n\t\tdata: { id, type, filter: JSON.stringify(filter) },\r\n\t\tdataType: 'json',\r\n\t\tsuccess: () => {\r\n\t\t\tshowSuccess(settings.strings.userFilterSaved);\r\n\t\t\tonSuccess();\r\n\t\t},\r\n\t\terror: () => showError(settings.strings.userFilterSaveError)\r\n\t});\r\n}\r\n\r\nexport function clear(type: UserFilterType, id: number, onSuccess: Function) {\r\n\tconfirm(settings.strings.confirmClearUserFilter)\r\n\t\t.then(result => {\r\n\t\t\tif (result) {\r\n\t\t\t\t$.ajax({\r\n\t\t\t\t\turl: appUrl('~/User/ClearFilter'),\r\n\t\t\t\t\tmethod: 'post',\r\n\t\t\t\t\tdata: { id, type },\r\n\t\t\t\t\tdataType: 'json',\r\n\t\t\t\t\tsuccess: () => {\r\n\t\t\t\t\t\tshowSuccess(settings.strings.userFilterCleared);\r\n\t\t\t\t\t\tonSuccess();\r\n\t\t\t\t\t},\r\n\t\t\t\t\terror: () => showError(settings.strings.userFilterClearError)\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t});\r\n}\r\n","export enum FormState {\r\n\tAdded = 'added',\r\n\tModified = 'modified',\r\n\tRemoved = 'removed',\r\n\tUnmodified = 'unmodified'\r\n}\r\n\r\nexport enum ListDisplayType {\r\n\tGrid = 'Grid',\r\n\tGantt = 'Gantt',\r\n\tTaskBoard = 'TaskBoard'\r\n}","import ko, { Computed } from 'knockout';\r\n\r\nexport default function koDeferredComputed(evaluatorFunction: () => T): Computed {\r\n\treturn ko.computed(evaluatorFunction, null, {\r\n\t\tdeferEvaluation: true\r\n\t});\r\n}\r\n","import _ from 'lodash';\r\nimport appUrl from '../../util/appUrl';\r\nimport BoundObject from '../../util/BoundObject';\r\nimport jQuery from 'jquery';\r\nimport ko, { Computed, Observable, ObservableArray, Subscribable, Subscription } from 'knockout';\r\nimport koDeferredComputed from '../../util/koDeferredComputed';\r\nimport parseExcelHtml from './grid/parseExcelHtml';\r\nimport { clear as clearUserFilter, save as saveUserFilter, UserFilterType } from '../../components/form/filter/UserFilter';\r\nimport { Engine, Instruction } from './active';\r\nimport { error as showError } from '../notify';\r\nimport { findPopup, getInputArgument } from '../dialog/popup';\r\nimport { format, isEmptyWhenZeroFormat, toString } from '../../util/format';\r\nimport { handle as handleQueryChange } from '../../areas/main/events/queryChanged';\r\nimport { parseIso8601Date, parseJson } from '../../util/parse';\r\nimport { setQueryParameters } from '../../util/queryString';\r\nimport { settings } from '../../areas/main/config';\r\nimport { showModalPage } from '../dialog/modal';\r\nimport { FormState, ListDisplayType } from './model-types';\r\n\r\nexport interface IFilterable {\r\n\tsetFilterValue(name: string, value: any): void;\r\n\tapplyFilter(): void;\r\n}\r\n\r\nexport interface Updateable {\r\n\tisUpdating: Observable;\r\n\tupdateError: Observable;\r\n}\r\n\r\nexport interface Field extends Updateable, ExpressionLookupContext {\r\n\tid: string;\r\n\tmodelId: Subscribable;\r\n\r\n\tlabel: string;\r\n\r\n\tvalue: Observable;\r\n\toriginalValue?: any;\r\n\tform: ObjectForm;\r\n\teditMode: boolean;\r\n\tisValid: Subscribable;\r\n\terror: Subscribable;\r\n\tcustomError?: Observable;\r\n\thasChanges: Subscribable;\r\n\tisVisible: Subscribable;\r\n\tisDisabled: Subscribable;\r\n\tisRequired: Subscribable;\r\n\r\n\tmessage?: Observable;\r\n\r\n\tlinksDisabled: boolean;\r\n\tcomputedValueTargetsParent: boolean;\r\n\r\n\trevert();\r\n\tdismissMessage?: () => void;\r\n\tfocus: () => void;\r\n\tonFocus: () => void;\r\n\tonBlur: () => void;\r\n\tvalidate(): boolean;\r\n}\r\n\r\nexport interface Command {\r\n\tuniqueId?: string;\r\n\tcommand?: string;\r\n\targument?: any;\r\n\tisAsync?: boolean;\r\n\tisPartial?: boolean;\r\n\tshouldCancel?: boolean;\r\n\tcontextClass?: string;\r\n\ticonClass?: string;\r\n\tproceed: (form: Form) => void;\r\n\topenInNewWindow?: boolean;\r\n\tincludeHash?: boolean;\r\n}\r\n\r\ninterface ExpressionSite extends Updateable {\r\n\tid: string;\r\n\texpressionsEnabled: Subscribable;\r\n\texpressionError: Observable;\r\n\tgetGlobals(): ExpressionGlobals;\r\n}\r\n\r\ninterface ExpressionLookupContext extends ExpressionSite {\r\n\tform: Form;\r\n\twhenIdle: (callback: () => any) => any;\r\n\tpauseExpressions?: Observable;\r\n}\r\n\r\nclass ExpressionLookup {\r\n\tstatic whenIdle = function(isBusy: Subscribable, callback: () => any, exclusiveLock?: any) {\r\n\t\tko.tasks.runEarly();\r\n\r\n\t\tif (exclusiveLock && this.pending[exclusiveLock]) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (isBusy()) {\r\n\t\t\texclusiveLock && (this.pending[exclusiveLock] = true);\r\n\r\n\t\t\tvar s = isBusy.subscribe(value => {\r\n\t\t\t\tif (!value) {\r\n\t\t\t\t\ts.dispose();\r\n\t\t\t\t\tcallback();\r\n\r\n\t\t\t\t\texclusiveLock && (delete this.pending[exclusiveLock]);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\treturn null;\r\n\t\t}\r\n\t\telse {\r\n\t\t\treturn callback();\r\n\t\t}\r\n\t}\r\n\r\n\tstatic pending = {};\r\n}\r\n\r\nclass ExpressionGlobals {\r\n\tconstructor(private context: ExpressionLookupContext) { }\r\n\r\n\tlookup = (target: string) => {\r\n\t\tconst form = this.context.form;\r\n\r\n\t\tif (form instanceof ObjectForm) {\r\n\t\t\tvar index = target.indexOf(\".\");\r\n\t\t\tvar property = '';\r\n\r\n\t\t\tif (index >= 0) {\r\n\t\t\t\tif (index < target.length) {\r\n\t\t\t\t\tproperty = target.slice(index + 1);\r\n\t\t\t\t}\r\n\r\n\t\t\t\ttarget = target.slice(0, index);\r\n\t\t\t}\r\n\r\n\t\t\treturn form.lookup(this.context, target, property);\r\n\t\t}\r\n\t}\r\n}\r\n\r\nclass CommandButton extends BoundObject {\r\n\tuniqueId: string;\r\n\tlabel: string;\r\n\ttooltip: string;\r\n\tcommand: string;\r\n\targument: any;\r\n\tisAsync: boolean;\r\n\tshouldCancel: boolean;\r\n\topenInNewWindow: boolean;\r\n\tcontextClass: string;\r\n\ticonClass: string;\r\n\tconfirmation: string;\r\n\texecute: (command: Command) => void;\r\n\tisDisabled: Subscribable;\r\n\tisVisible: Subscribable;\r\n\teffectivelyDisabled: Computed;\r\n\r\n\tconstructor(data: any, form: Form) {\r\n\t\tsuper();\r\n\r\n\t\tthis.uniqueId = data.uniqueId || null;\r\n\t\tthis.label = data.label || null;\r\n\t\tthis.tooltip = data.tooltip || null;\r\n\t\tthis.command = data.command || null;\r\n\t\tthis.argument = data.argument || null;\r\n\t\tthis.openInNewWindow = data.openInNewWindow || null;\r\n\t\tthis.isAsync = data.isAsync || data.openInNewWindow || null;\r\n\t\tthis.shouldCancel = data.shouldCancel || null;\r\n\t\tthis.contextClass = data.contextClass || null;\r\n\t\tthis.iconClass = data.iconClass || null;\r\n\t\tthis.confirmation = data.confirmationMessage || null;\r\n\t\tthis.execute = form.save;\r\n\t\tthis.isDisabled = ko.observable(false);\r\n\t\tthis.isVisible = ko.observable(true);\r\n\t\tthis.effectivelyDisabled = ko.computed(() => this.isDisabled() || !this.isVisible());\r\n\t}\r\n}\r\n\r\nclass ObjectCommandButton extends CommandButton implements ExpressionSite {\r\n\tid: string;\r\n\tisUpdating: Observable;\r\n\tupdateError: Observable;\r\n\tisVisibleExpression: string;\r\n\tisDisabledExpression: string;\r\n\texpressionError = ko.observable('');\r\n\texpressionsEnabled: Subscribable;\r\n\tsubCommands: CommandButton[] = [];\r\n\r\n\tconstructor(data: any, public form: ObjectForm) {\r\n\t\tsuper(data, form);\r\n\r\n\t\tthis.expressionsEnabled = form.enableExpressions;\r\n\r\n\t\tthis.isVisibleExpression = data.isVisibleExpression || null;\r\n\t\tthis.isVisible = form.initialiseStatusExpression(this, \"isVisible\", this.isVisibleExpression, this.isVisible);\r\n\r\n\t\tthis.isDisabledExpression = data.isDisabledExpression || null;\r\n\t\tthis.isDisabled = form.initialiseStatusExpression(this, \"isDisabled\", this.isDisabledExpression, this.isDisabled);\r\n\r\n\t\tthis.effectivelyDisabled = ko.computed(() => this.isDisabled() || !this.isVisible());\r\n\r\n\t\tdata.subCommands && $.each(data.subCommands, (i, c) => {\r\n\t\t\tthis.subCommands[i] = new ObjectCommandButton(c, form);\r\n\t\t});\r\n\t}\r\n\r\n\twhenIdle(callback: () => any) {\r\n\t\treturn ExpressionLookup.whenIdle(this.isUpdating, callback);\r\n\t}\r\n\r\n\tgetGlobals(): ExpressionGlobals {\r\n\t\treturn new ExpressionGlobals(this);\r\n\t}\r\n}\r\n\r\nclass Decision {\r\n\tmessage: string;\r\n\toutcomes: CommandButton[] = [];\r\n\r\n\tconstructor(data: any, form: Form) {\r\n\t\tthis.message = data.message || null;\r\n\t\tdata.outcomes && $.each(data.outcomes, (i, c) => {\r\n\t\t\tthis.outcomes[i] = new CommandButton(c, form);\r\n\t\t});\r\n\t}\r\n}\r\n\r\nexport interface ValidationItem {\r\n\tlabel: string;\r\n\tmessage: string;\r\n\tfocus: () => void;\r\n}\r\n\r\nexport function getRootForm() {\r\n\treturn Form.root;\r\n}\r\n\r\nexport class Form extends BoundObject {\r\n\tstatic root: Form;\r\n\r\n\tstatic unloadWarning = true;\r\n\r\n\tisValid: Subscribable;\r\n\tvalidationSummary: ObservableArray;\r\n\terrors = ko.observableArray();\r\n\r\n\thasChanges: Subscribable;\r\n\tisBusy: Subscribable;\r\n\tisSaving: Observable;\r\n\r\n\teditMode: boolean;\r\n\tcanEdit: boolean;\r\n\tlinksDisabled: boolean;\r\n\r\n\tmessage = ko.observable('');\r\n\r\n\tcommands: CommandButton[] = [];\r\n\tdecision: Decision;\r\n\r\n\treturnUrl: string;\r\n\r\n\tcommandBindingTriggers: Record void)> = {}\r\n\r\n\tsave(command: Command) {\r\n\t\tif (command.shouldCancel == true) {\r\n\t\t\tthis.cancel(command);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (this.isSaving()) return;\r\n\r\n\t\tthis.isSaving(true);\r\n\t\tko.tasks.runEarly();\r\n\r\n\t\tif (!this.isBusy()) {\r\n\t\t\tthis.commit(command);\r\n\t\t}\r\n\t\telse {\r\n\t\t\tvar s = this.isBusy.subscribe(() => {\r\n\t\t\t\tif (!this.isBusy()) {\r\n\t\t\t\t\tthis.commit(command);\r\n\t\t\t\t\ts.dispose();\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tcommit(command: Command) {\r\n\t\tthis.errors.removeAll();\r\n\t\tthis.validate();\r\n\t\tif (this.isValid()) {\r\n\t\t\tcommand.proceed(this);\r\n\t\t\tif (command.isAsync) {\r\n\t\t\t\tthis.isSaving(false);\r\n\t\t\t}\r\n\t\t}\r\n\t\telse {\r\n\t\t\tthis.isSaving(false);\r\n\t\t}\r\n\t}\r\n\r\n\trevert() {\r\n\t}\r\n\r\n\tcancel(command: Command) {\r\n\t\tthis.suppressUnloadWarning();\r\n\t\tcommand.proceed(this);\r\n\t}\r\n\r\n\tcommand(command: Command) {\r\n\t\tcommand.proceed(this);\r\n\t}\r\n\r\n\tsuppressUnloadWarning(): boolean {\r\n\t\tForm.unloadWarning = false;\r\n\t\treturn true;\r\n\t}\r\n\r\n\ttryConfirmHasChanges(): boolean {\r\n\t\tif (!Form.unloadWarning || !this.hasChanges()) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\treturn confirm(settings.strings.unsavedChangesWarning);\r\n\t}\r\n\r\n\tisPopup(): boolean {\r\n\t\treturn (findPopup(window.self) != null);\r\n\t}\r\n\r\n\tbuildSummary(): ValidationItem[] {\r\n\t\tvar items: ValidationItem[] = [];\r\n\r\n\t\t_.each(this.errors(), error => {\r\n\t\t\titems.push({\r\n\t\t\t\tlabel: null,\r\n\t\t\t\tfocus: null,\r\n\t\t\t\tmessage: error\r\n\t\t\t});\r\n\t\t});\r\n\r\n\t\treturn items;\r\n\t}\r\n\r\n\tvalidate(): boolean {\r\n\t\tthis.validationSummary(this.buildSummary());\r\n\t\treturn this.validationSummary().length == 0;\r\n\t}\r\n\r\n\tapplyErrors(errors: { [index: string]: string; }): boolean {\r\n\t\tvar hasErrors = !_.isEmpty(errors);\r\n\t\tvar value = [];\r\n\r\n\t\tvar e = errors[''];\r\n\t\tif (e) {\r\n\t\t\tvalue.push(e);\r\n\t\t\terrors[''] = null;\r\n\t\t}\r\n\r\n\t\t_.each(errors, (v, k?) => {\r\n\t\t\tv && value.push('(' + k + ') ' + v);\r\n\t\t});\r\n\r\n\t\tif (hasErrors) {\r\n\t\t\tthis.errors(value);\r\n\t\t\tthis.validate();\r\n\t\t}\r\n\r\n\t\treturn hasErrors;\r\n\t}\r\n\r\n\tdismissMessage() {\r\n\t\tthis.message(null);\r\n\t}\r\n\r\n\tregisterCommandTrigger(name: string, trigger: () => void) {\r\n\t\tthis.commandBindingTriggers[name] = trigger;\r\n\t}\r\n\r\n\ttriggerCommand(name: string) {\r\n\t\tconst trigger = this.commandBindingTriggers[name];\r\n\t\tif (trigger) {\r\n\t\t\ttrigger();\r\n\t\t}\r\n\t}\r\n\r\n\tconstructor(data: any, public context?: any, hasChanges?: Subscribable, isBusy?: Subscribable) {\r\n\t\tsuper();\r\n\r\n\t\tthis.canEdit = _.isBoolean(data.canEdit) ? data.canEdit : true;\r\n\t\tthis.editMode = data.editMode || false;\r\n\r\n\t\tthis.validationSummary = ko.observableArray(this.buildSummary());\r\n\t\tthis.isValid = ko.computed(() => this.validationSummary().length == 0);\r\n\r\n\t\tthis.hasChanges = hasChanges || ko.observable(false);\r\n\t\tthis.isBusy = isBusy || ko.observable(false);\r\n\t\tthis.isSaving = ko.observable(false);\r\n\r\n\t\tthis.decision = data.decision ? new Decision(data.decision, this) : null;\r\n\r\n\t\tthis.linksDisabled = (data.linksDisabled === true);\r\n\r\n\t\tif (_.isBoolean(data.unloadWarning)) {\r\n\t\t\tForm.unloadWarning = data.unloadWarning;\r\n\t\t}\r\n\t\telse {\r\n\t\t\tForm.unloadWarning = true;\r\n\t\t}\r\n\t}\r\n}\r\n\r\ninterface Entity {\r\n\terrors?: { [id: string]: string; };\r\n\tvalues: { [id: string]: any; };\r\n}\r\n\r\nclass FieldLookup {\r\n\tall: Field[] = [];\r\n\tmap: { [index: string]: Field; } = {};\r\n\tuser: Field[] = [];\r\n\tscalar: ScalarField[] = [];\r\n\tlist: ListField[] = [];\r\n\r\n\tpublic add(id: string, field: T) {\r\n\t\tthis.all.push(field);\r\n\t\tthis.map[id] = field;\r\n\r\n\t\tif (!ObjectForm.isMetaField(id)) {\r\n\t\t\tthis.user.push(field);\r\n\t\t}\r\n\r\n\t\tif (field instanceof ScalarField) {\r\n\t\t\tthis.scalar.push(field);\r\n\t\t}\r\n\r\n\t\tif (field instanceof ListField) {\r\n\t\t\tthis.list.push(field);\r\n\t\t}\r\n\r\n\t\treturn field;\r\n\t}\r\n}\r\n\r\nexport class ObjectForm extends Form implements Updateable {\r\n\tstatic readonly idProperty: string = \"id\";\r\n\r\n\tid: string;\r\n\tformId: any;\r\n\tkey: string;\r\n\tparentKey: string;\r\n\tdataId: Observable;\r\n\tstate: Computed;\r\n\tdisplayName: string;\r\n\r\n\tfields: FieldLookup;\r\n\r\n\tisRemoved: Observable;\r\n\tisArchived: boolean;\r\n\r\n\tidProperty: string;\r\n\tstateProperty: string;\r\n\tmodelIdforDataId: Computed;\r\n\tmodelIdforState: Computed;\r\n\r\n\tactiveViewArgument: string;\r\n\tactiveViewContext: string;\r\n\tactiveCreateArgument: string;\r\n\tactiveCreateContext: string;\r\n\tactiveEditArgument: string;\r\n\tactiveEditContext: string;\r\n\tactiveSaveArgument: string;\r\n\tactiveSaveContext: string;\r\n\tactiveCancelArgument: string;\r\n\tactiveCancelContext: string;\r\n\tactiveUrl: string;\r\n\tactiveOperations: Instruction[];\r\n\tactiveEnabled: boolean;\r\n\tenableExpressions: Observable;\r\n\tengine: Engine;\r\n\r\n\tisUpdating: Observable;\r\n\tisSaving: Observable;\r\n\tupdateError: Observable;\r\n\tshouldPost: Observable;\r\n\tisReady = false;\r\n\r\n\tconstructor(data: any, context?: any) {\r\n\t\tsuper(data, context);\r\n\r\n\t\tthis.enableExpressions = ko.observable(false);\r\n\r\n\t\tif (data.isLocked === true) {\r\n\t\t\tthis.canEdit = false;\r\n\t\t}\r\n\r\n\t\tif (this.canEdit && data.displayMode === false) {\r\n\t\t\tthis.editMode = true;\r\n\t\t}\r\n\r\n\t\tthis.fields = new FieldLookup();\r\n\r\n\t\tthis.idProperty = data.idProperty || '$Id';\r\n\t\tthis.stateProperty = data.stateProperty || '$State';\r\n\t\tthis.isArchived = data.isArchived || false;\r\n\r\n\t\tthis.id = data.id || '';\r\n\t\tthis.formId = data.formId;\r\n\t\tthis.key = data.key;\r\n\t\tthis.parentKey = data.parentKey;\r\n\t\tthis.isUpdating = ko.observable(false);\r\n\t\tthis.isSaving = ko.observable(false);\r\n\t\tthis.isRemoved = ko.observable(false);\r\n\t\tthis.updateError = ko.observable(null);\r\n\t\tthis.shouldPost = ko.observable(true);\r\n\r\n\t\tvar errors = data.errors || {};\r\n\t\tvar hasErrors = false;\r\n\r\n\t\tthis.dataId = ko.observable(_.isNumber(data.dataId) ? data.dataId : null);\r\n\t\tthis.displayName = data.displayName || '';\r\n\r\n\t\tif (data.fields) {\r\n\t\t\tlet listFields = [];\r\n\r\n\t\t\t$.each(data.fields, (id, c) => {\r\n\t\t\t\tc.id = id;\r\n\t\t\t\tvar f: Field = null;\r\n\r\n\t\t\t\tswitch (c.type.toLowerCase()) {\r\n\t\t\t\t\tcase 'string':\r\n\t\t\t\t\t\tf = new StringField(c, this);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase 'int':\r\n\t\t\t\t\tcase 'float':\r\n\t\t\t\t\t\tf = new NumberField(c, this);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase 'select':\r\n\t\t\t\t\t\tf = new SelectField(c, this, false);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase 'selectmany':\r\n\t\t\t\t\t\tf = new SelectField(c, this, true);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase 'objectselect':\r\n\t\t\t\t\t\tf = new ObjectSelectField(c, this, false);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase 'objectselectmany':\r\n\t\t\t\t\t\tf = new ObjectSelectField(c, this, true);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase 'date':\r\n\t\t\t\t\t\tf = new DateField(c, this);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase 'bool':\r\n\t\t\t\t\t\tf = new BoolField(c, this);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase 'file':\r\n\t\t\t\t\t\tf = new FileField(c, this);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase 'list':\r\n\t\t\t\t\t\t//we do these last so that expressions in lists work with the parent form\r\n\t\t\t\t\t\tlistFields.push(c);\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\tdefault:\r\n\t\t\t\t\t\tf = new ScalarField(c, this);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.fields.add(id.toString(), f);\r\n\t\t\t});\r\n\r\n\t\t\t$.each(listFields, (id, c) => {\r\n\t\t\t\tc.list.errors = this.pluckErrors(errors, c.id);\r\n\t\t\t\tlet f = this.fields.add(c.id, new ListField(c, this));\r\n\r\n\t\t\t\tif (!f.isValid()) {\r\n\t\t\t\t\thasErrors = true;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (f.initialiseStatusExpressions) {\r\n\t\t\t\t\tf.initialiseStatusExpressions();\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tfor (let f of this.fields.scalar) {\r\n\t\t\tif (f.initialiseStatusExpressions) {\r\n\t\t\t\tf.initialiseStatusExpressions();\r\n\t\t\t}\r\n\r\n\t\t\tif (!this.editMode || !f.expression) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tif (f.isDependencyExpression || f.isComputedExpression) {\r\n\t\t\t\t//these are initialized after calculated value expressions have fully completed\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tf.tryInitialiseExpression();\r\n\t\t}\r\n\r\n\t\tif (!this.applyErrors(errors) && hasErrors) {\r\n\t\t\tthis.validate(true);\r\n\t\t}\r\n\r\n\t\tthis.hasChanges = ko.computed(() => {\r\n\t\t\tfor (let f of this.mutableFields()) {\r\n\t\t\t\tif (f instanceof ScalarField && f.isCalculated()) {\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (f.hasChanges()) {\r\n\t\t\t\t\treturn true;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn false;\r\n\t\t});\r\n\r\n\t\tthis.isBusy = ko.computed(() => {\r\n\t\t\tif (this.isUpdating()) {\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\treturn this.fields.all.some(f => {\r\n\t\t\t\t\tif (f instanceof ListField) {\r\n\t\t\t\t\t\treturn f.editMode && f.isBusy();\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t\treturn f.isUpdating();\r\n\t\t\t\t\t};\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tthis.state =\r\n\t\t\tko.computed(() => {\r\n\t\t\t\tif (this.isRemoved())\r\n\t\t\t\t\treturn FormState.Removed;\r\n\t\t\t\telse if (this.dataId() === null)\r\n\t\t\t\t\treturn FormState.Added;\r\n\t\t\t\telse if (this.hasChanges() && this.editMode)\r\n\t\t\t\t\treturn FormState.Modified;\r\n\t\t\t\telse\r\n\t\t\t\t\treturn FormState.Unmodified;\r\n\t\t\t})\r\n\t\t\t.extend({ notify: 'always' });\r\n\r\n\t\tthis.modelIdforDataId = koDeferredComputed(() => this.qualifyModelId(this.idProperty));\r\n\t\tthis.modelIdforState = koDeferredComputed(() => this.qualifyModelId(this.stateProperty));\r\n\r\n\t\tthis.activeViewArgument = data.activeViewArgument || null;\r\n\t\tthis.activeViewContext = data.activeViewContext || null;\r\n\t\tthis.activeCreateArgument = data.activeCreateArgument || null;\r\n\t\tthis.activeCreateContext = data.activeCreateContext || null;\r\n\t\tthis.activeEditArgument = data.activeEditArgument || null;\r\n\t\tthis.activeEditContext = data.activeEditContext || null;\r\n\t\tthis.activeSaveArgument = data.activeSaveArgument || null;\r\n\t\tthis.activeSaveContext = data.activeSaveContext || null;\r\n\t\tthis.activeCancelArgument = data.activeCancelArgument || null;\r\n\t\tthis.activeCancelContext = data.activeCancelContext || null;\r\n\t\tthis.activeUrl = data.activeUrl || null;\r\n\t\tthis.activeOperations = data.activeOperations || null;\r\n\t\tthis.activeEnabled = true;\r\n\r\n\t\tdata.commands && $.each(data.commands, (i, c) => {\r\n\t\t\tthis.commands[i] = new ObjectCommandButton(c, this);\r\n\t\t});\r\n\r\n\t\tthis.pauseUpdates(this.onInitialize);\r\n\r\n\t\tthis.enableExpressions(true);\r\n\r\n\t\tif (this.canEdit) {\r\n\t\t\t//initialize deferred dependency and iscomputed expressions\r\n\t\t\tthis.whenIdle(() => {\r\n\t\t\t\tthis.enableExpressions(false);\r\n\r\n\t\t\t\tfor (let f of this.mutableFields()) {\r\n\t\t\t\t\tif (!(f instanceof ScalarField) || !f.expression) {\r\n\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tf.tryInitialiseExpression();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.enableExpressions(true);\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif (this.activeUrl || this.activeOperations) {\r\n\t\t\tthis.engine = new Engine(this);\r\n\r\n\t\t\tthis.whenIdle(() => {\r\n\t\t\t\tif (this.activeOperations) {\r\n\t\t\t\t\tthis.engine.runOperations(this.activeOperations);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (this.editMode) {\r\n\t\t\t\t\tif (this.dataId() === null) {\r\n\t\t\t\t\t\tif (this.activeCreateContext || this.activeCreateArgument) {\r\n\t\t\t\t\t\t\tthis.engine.run(this.activeCreateContext, this.activeCreateArgument, this);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t\tif (this.activeEditContext || this.activeEditArgument) {\r\n\t\t\t\t\t\t\tthis.engine.run(this.activeEditContext, this.activeEditArgument, this);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tif (this.activeViewContext || this.activeViewArgument) {\r\n\t\t\t\t\t\tthis.engine.run(this.activeViewContext, this.activeViewArgument, this);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tthis.whenIdle(() => this.isReady = true);\r\n\t}\r\n\r\n\tapplyErrors(errors: { [index: string]: string; }, prefix?: string): boolean {\r\n\t\tif (_.isUndefined(errors)) return false;\r\n\r\n\t\tvar hasErrors = false;\r\n\r\n\t\tif (prefix) {\r\n\t\t\terrors = this.pluckErrors(errors, prefix);\r\n\t\t}\r\n\r\n\t\tfor (let [id, field] of Object.entries(this.fields.map)) {\r\n\t\t\tif (field instanceof ListField) {\r\n\t\t\t\tvar listErrors = this.pluckErrors(errors, id);\r\n\t\t\t\tfield.applyErrors(listErrors);\r\n\r\n\t\t\t\tif (!_.isEmpty(listErrors)) {\r\n\t\t\t\t\thasErrors = true;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tif (errors[id]) {\r\n\t\t\t\t\tfield.customError(errors[id]);\r\n\t\t\t\t\terrors[id] = null;\r\n\t\t\t\t\thasErrors = true;\r\n\t\t\t\t};\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tif (super.applyErrors(errors) || hasErrors) {\r\n\t\t\tthis.validate(true);\r\n\t\t}\r\n\r\n\t\treturn hasErrors;\r\n\t}\r\n\r\n\tapplyEntityErrors(entity: Entity): void {\r\n\t\tthis.applyErrors(entity.errors);\r\n\r\n\t\tvar hasErrors = false;\r\n\r\n\t\tfor (let field of this.fields.list) {\r\n\t\t\t_.each(field.items(), (item: ListItemForm, i: number) => {\r\n\t\t\t\tvar errors = entity.values[field.id][i].errors;\r\n\t\t\t\tif (errors) {\r\n\t\t\t\t\titem.applyErrors(errors);\r\n\t\t\t\t\thasErrors = true;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t};\r\n\r\n\t\tif (hasErrors) {\r\n\t\t\tthis.validate();\r\n\t\t}\r\n\t}\r\n\r\n\tprivate pluckErrors(errors: { [index: string]: string; }, prefix: string): { [index: string]: string; } {\r\n\t\tvar result: { [index: string]: string; } = {};\r\n\r\n\t\t_.each(errors, (v, k?: string) => {\r\n\t\t\tif (k.indexOf(prefix) == 0) {\r\n\t\t\t\tresult[k.substr(prefix.length)] = v;\r\n\t\t\t\terrors[k] = null;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\tmutableFields() {\r\n\t\tif (this.fields) {\r\n\t\t\tlet fields: Field[] = this.editMode ? this.fields.all : this.fields.list;\r\n\t\t\treturn fields.filter(x => x.editMode);\r\n\t\t}\r\n\r\n\t\treturn null;\r\n\t}\r\n\r\n\tmergeValues(source: ObjectForm, reset?: boolean) {\r\n\t\tthis.pauseUpdates(() => {\r\n\t\t\tfor (let target of this.fields.scalar) {\r\n\t\t\t\tvar f = source.findField(target.id);\r\n\r\n\t\t\t\tif (f) {\r\n\t\t\t\t\tconst value = f.value();\r\n\r\n\t\t\t\t\tif (reset) {\r\n\t\t\t\t\t\ttarget.reset(value, value);\r\n\t\t\t\t\t\ttarget.value.notifySubscribers();\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t\ttarget.parse(value);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t};\r\n\t\t});\r\n\t}\r\n\r\n\tpauseUpdates(callback: () => void) {\r\n\t\tif (this.isUpdating()) return;\r\n\r\n\t\tko.tasks.runEarly();\r\n\t\tthis.activeEnabled = false;\r\n\r\n\t\tcallback();\r\n\t\tko.tasks.runEarly();\r\n\r\n\t\tthis.activeEnabled = true;\r\n\t}\r\n\r\n\twhenIdle(callback: () => void) {\r\n\t\tko.tasks.runEarly();\r\n\r\n\t\tif (this.isBusy()) {\r\n\t\t\tvar s = this.isBusy.subscribe(value => {\r\n\t\t\t\tif (!value) {\r\n\t\t\t\t\ts.dispose();\r\n\t\t\t\t\tthis.whenIdle(callback);\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t}\r\n\t\telse {\r\n\t\t\tcallback();\r\n\t\t}\r\n\t}\r\n\r\n\trunOperations(operations: Instruction[]) {\r\n\t\tthis.engine = this.engine || new Engine(this);\r\n\t\tthis.whenIdle(() => this.engine.runOperations(operations));\r\n\t}\r\n\r\n\trevert() {\r\n\t\tthis.pauseUpdates(() => {\r\n\t\t\tthis.isRemoved(false);\r\n\r\n\t\t\tfor (let f of this.fields.all) {\r\n\t\t\t\tf.revert();\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tcommit(command: Command) {\r\n\t\tthis.errors.removeAll();\r\n\t\tthis.clearCustomListErrors();\r\n\t\tthis.validate();\r\n\t\tif (this.isValid()) {\r\n\t\t\tif (this.isPopup() && !command.command) {\r\n\t\t\t\tcommand.command = \"closepopup\";\r\n\t\t\t}\r\n\t\t\tif (this.activeSaveContext || this.activeSaveArgument) {\r\n\t\t\t\tthis.engine.run(\r\n\t\t\t\t\tthis.activeSaveContext,\r\n\t\t\t\t\tthis.activeSaveArgument,\r\n\t\t\t\t\tthis,\r\n\t\t\t\t\t() => {\r\n\t\t\t\t\t\t//success\r\n\t\t\t\t\t\tko.tasks.runEarly();\r\n\t\t\t\t\t\tthis.validate();\r\n\t\t\t\t\t\tif (this.isValid()) {\r\n\t\t\t\t\t\t\tcommand.proceed(this)\r\n\t\t\t\t\t\t\tif (command.isAsync) {\r\n\t\t\t\t\t\t\t\tthis.isSaving(false);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\telse {\r\n\t\t\t\t\t\t\tthis.isSaving(false);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t},\r\n\t\t\t\t\t(redirectUrl?: string) => {\r\n\t\t\t\t\t\t//aborted\r\n\t\t\t\t\t\tif (redirectUrl) {\r\n\t\t\t\t\t\t\tif (command.isAsync) {\r\n\t\t\t\t\t\t\t\tthis.isSaving(false);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tthis.returnUrl = redirectUrl;\r\n\t\t\t\t\t\t\tcommand.shouldCancel = true;\r\n\t\t\t\t\t\t\tcommand.proceed(this);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\telse {\r\n\t\t\t\t\t\t\tthis.isSaving(false);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t);\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tcommand.proceed(this);\r\n\t\t\t\tif (command.isAsync) {\r\n\t\t\t\t\tthis.isSaving(false);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\telse {\r\n\t\t\tthis.isSaving(false);\r\n\t\t}\r\n\t}\r\n\r\n\tcancel(command: Command) {\r\n\t\tthis.suppressUnloadWarning();\r\n\t\tif (this.activeCancelContext || this.activeCancelArgument) {\r\n\t\t\tthis.engine.run(this.activeCancelContext, this.activeCancelArgument, this,\r\n\t\t\t\t() => {\r\n\t\t\t\t\tcommand.proceed(this);\r\n\t\t\t\t},\r\n\t\t\t\t(redirectUrl?: string) => {\r\n\t\t\t\t\tif (redirectUrl) {\r\n\t\t\t\t\t\tthis.returnUrl = redirectUrl;\r\n\t\t\t\t\t\tcommand.proceed(this);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t);\r\n\t\t}\r\n\t\telse {\r\n\t\t\tcommand.proceed(this);\r\n\t\t}\r\n\t}\r\n\r\n\tclearCustomListErrors() {\r\n\t\tfor (let field of this.fields.list) {\r\n\t\t\tfield.customError('');\r\n\t\t\tfield.clearCustomErrors();\r\n\t\t};\r\n\t}\r\n\r\n\tisArchiving() {\r\n\t\tif (this.isArchived === true) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tconst f = this.findField('IsArchived');\r\n\t\tif (f && f.value() == true) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t}\r\n\r\n\tvalidate(validateArchived: boolean = false): boolean {\r\n\t\tlet isArchiving = this.isRemoved() || this.isArchiving();\r\n\t\tlet shouldValidate = validateArchived || !isArchiving;\r\n\r\n\t\tif (shouldValidate == false) {\r\n\t\t\tthis.validationSummary([]);\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\tfor (let field of this.fields.all) {\r\n\t\t\tfield.validate();\r\n\t\t};\r\n\r\n\t\treturn super.validate();\r\n\t}\r\n\r\n\tbuildSummary(): ValidationItem[] {\r\n\t\tvar items = super.buildSummary();\r\n\r\n\t\tif (this.fields) {\r\n\t\t\tfor (let field of this.fields.all) {\r\n\t\t\t\tif (!field.isValid()) {\r\n\t\t\t\t\titems.push({\r\n\t\t\t\t\t\tlabel: field.label,\r\n\t\t\t\t\t\tfocus: function () {\r\n\t\t\t\t\t\t\tfield.focus();\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tmessage: field.error()\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn items;\r\n\t}\r\n\r\n\tqualifyId(id: string, pageUnique?: boolean) {\r\n\t\treturn this.id ? this.id + '.' + id : id;\r\n\t}\r\n\r\n\tqualifyModelId(id: string): string | null {\r\n\t\treturn this.shouldPost() ? this.qualifyId(id) : null;\r\n\t}\r\n\r\n\tsnapshot(map, excludeTargets?: boolean) {\r\n\t\tmap[this.idProperty] = this.dataId() || '';\r\n\t\tmap[this.stateProperty] = (this.state && this.state()) || '';\r\n\r\n\t\tfor (let field of this.fields.scalar) {\r\n\t\t\tfield.snapshot(map);\r\n\t\t}\r\n\t}\r\n\r\n\tsnapshotFilter(map, forPost: boolean, prefix: string = 'q', excludeEmpty: boolean = true) {\r\n\t\tprefix = prefix ? `${prefix}.` : '';\r\n\r\n\t\tfor (let field of this.fields.user) {\r\n\t\t\tif (field instanceof ScalarField) {\r\n\t\t\t\tif (!forPost) {\r\n\t\t\t\t\tif (field instanceof ObjectSelectField) {\r\n\t\t\t\t\t\tif (field.multiple) {\r\n\t\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tlet m: _.Dictionary = {}\r\n\t\t\t\tfield.snapshot(m, true);\r\n\t\t\t\t_.each(m, (v, k?: string) => {\r\n\t\t\t\t\tconst isEmpty = _.isNull(v) || v === '';\r\n\t\t\t\t\tif (excludeEmpty && isEmpty) return;\r\n\t\t\t\t\tmap[prefix + k] = isEmpty ? null : v;\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tmap[`${prefix}${ObjectForm.idProperty}`] = this.dataId();\r\n\t}\r\n\r\n\tbuildQueryParams(data: any, prefix: string = 'q'): URLSearchParams {\r\n\t\tlet r: Record = {};\r\n\r\n\t\t_.each(data, (v: any, k?: string) => {\r\n\t\t\tlet mustInclude = false;\r\n\t\t\tconst n = k.indexOf(`${prefix}.`);\r\n\t\t\tif (n >= 0) {\r\n\t\t\t\tconst f = this && this.findField(k.substring(n + prefix.length + 1)) as ScalarField;\r\n\t\t\t\tmustInclude = f && (!_.isNull(f.initialValue) || !_.isNull(f.initialValueExpression));\r\n\t\t\t}\r\n\t\t\tif ((!_.isNull(v) && (v !== '')) || mustInclude) {\r\n\t\t\t\tr[k] = v ?? '';\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn new URLSearchParams(r);\r\n\t}\r\n\r\n\tmergeQueryParams(data: any, queryId: number, queryPrefix: string = 'q'): URLSearchParams {\r\n\t\tconst idPrefix = queryId ? `${queryId}.` : '';\r\n\t\tconst prefix = `${idPrefix}${queryPrefix}`;\r\n\r\n\t\tlet r: Record = {};\r\n\t\tfor (const [name, value] of new URLSearchParams(window.location.search)) {\r\n\t\t\tif (name.startsWith(`${prefix}.`)) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\t\t\tr[name] = value;\r\n\t\t}\r\n\r\n\t\t_.each(data, (v, k?: string) => {\r\n\t\t\tr[idPrefix + k] = v;\r\n\t\t});\r\n\r\n\t\tif (idPrefix) {\r\n\t\t\tr[`${prefix}id`] = queryId.toString();\r\n\t\t}\r\n\r\n\t\treturn this.buildQueryParams(r);\r\n\t}\r\n\r\n\tfindField(id: string) {\r\n\t\treturn this.fields.map[id] || null;\r\n\t}\r\n\r\n\tlookupTarget(idOrLabel: string) {\r\n\t\tlet result = this.fields.map[idOrLabel];\r\n\r\n\t\tif (result) {\r\n\t\t\treturn result;\r\n\t\t}\r\n\r\n\t\tidOrLabel = idOrLabel.toLowerCase();\r\n\r\n\t\tfor (let f of this.fields.all) {\r\n\t\t\tif (f.id.toLowerCase() === idOrLabel || f.label.toLowerCase() === idOrLabel) {\r\n\t\t\t\treturn f;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn undefined;\r\n\t}\r\n\r\n\tfindList(idOrLabel): ListField {\r\n\t\tlet lookup = this.fields.map[idOrLabel];\r\n\r\n\t\tif (lookup && lookup instanceof ListField) {\r\n\t\t\treturn lookup;\r\n\t\t}\r\n\r\n\t\tidOrLabel = idOrLabel.toLowerCase();\r\n\r\n\t\tfor (let field of this.fields.list) {\r\n\t\t\tif (field.id.toLowerCase() == idOrLabel || field.label.toLowerCase() == idOrLabel) {\r\n\t\t\t\treturn field;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn undefined;\r\n\t}\r\n\r\n\tlookup(context: ExpressionLookupContext, targetFieldId: string, property?: string, forComputedValue: boolean = false): any {\r\n\t\tif (!context || !targetFieldId) return null;\r\n\r\n\t\tif (targetFieldId.toLowerCase() === ObjectForm.idProperty) {\r\n\t\t\treturn this.dataId();\r\n\t\t}\r\n\r\n\t\tvar targetField = this.lookupTarget(targetFieldId);\r\n\t\tif (!targetField) return null;\r\n\r\n\t\tlet isSelfReference = context.id == targetFieldId;\r\n\t\tlet canPeek = isSelfReference && forComputedValue;\r\n\r\n\t\tif (canPeek && targetField instanceof ScalarField) {\r\n\t\t\t//refactor: This is a targeted fix for #4360 to limit the impact until we have more UI tests around dependency\r\n\t\t\t//expressions. The issue is that if a self-referencing dependency field doesn't have an active form\r\n\t\t\t//process then we want to do value() instead of peek() to track the knockout dependency so that future\r\n\t\t\t//changes will be considered correctly: http://knockoutjs.com/documentation/computed-dependency-tracking.html\r\n\t\t\t//I will inform the KIM team of the affected fields and I created a story #4427 for a more long term fix.\r\n\t\t\tif (targetField.isDependencyExpression && !targetField.activeArgument && !targetField.activeContext) {\r\n\t\t\t\tcanPeek = false;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tlet value = canPeek ? targetField.value.peek() : targetField.value();\r\n\r\n\t\tif (value === undefined && canPeek) {\r\n\t\t\tvalue = targetField.value();\r\n\t\t}\r\n\r\n\t\tif (property) {\r\n\t\t\tvar resultForm = context.form || this;\r\n\t\t\tvar object = value;\r\n\r\n\t\t\tif (object && !object.targetFormId && targetField instanceof ObjectSelectField) {\r\n\t\t\t\tobject.targetFormId = targetField.targetId;\r\n\t\t\t}\r\n\r\n\t\t\tif (resultForm instanceof ObjectForm) {\r\n\t\t\t\tlet id = resultForm.qualifyId(context.id, true);\r\n\r\n\t\t\t\treturn targetField.whenIdle(() => {\r\n\t\t\t\t\treturn ObjectPropertyTool.lookup(\r\n\t\t\t\t\t\tid,\r\n\t\t\t\t\t\tobject,\r\n\t\t\t\t\t\tproperty,\r\n\t\t\t\t\t\t() => {\r\n\t\t\t\t\t\t\tcontext.pauseExpressions && context.pauseExpressions(true);\r\n\t\t\t\t\t\t\tcontext.isUpdating && context.isUpdating(true);\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\t() => {\r\n\t\t\t\t\t\t\tcontext.pauseExpressions && context.pauseExpressions(false);\r\n\t\t\t\t\t\t\tko.tasks.runEarly();\r\n\t\t\t\t\t\t\tcontext.isUpdating && context.isUpdating(false);\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\t(error) => {\r\n\t\t\t\t\t\t\tconsole.log(\"lookup error:\", context.id, error);\r\n\r\n\t\t\t\t\t\t\tif (context.updateError) {\r\n\t\t\t\t\t\t\t\tcontext.updateError(error);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\telse {\r\n\t\t\t\t\t\t\t\tshowError(error);\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\tcontext.isUpdating && context.isUpdating(false);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\t\telse {\r\n\t\t\treturn value;\r\n\t\t}\r\n\t}\r\n\r\n\tnextSequenceValue(context: ExpressionLookupContext, sequence: string, format: boolean): any {\r\n\t\tif (!context || !sequence) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\tvar form = context.form || this;\r\n\r\n\t\tif (form instanceof ObjectForm) {\r\n\t\t\tlet id = form.qualifyId(context.id, true);\r\n\r\n\t\t\treturn context.whenIdle(() => {\r\n\t\t\t\tvar result: SequenceValueResult = SequenceNumberTool.Next(\r\n\t\t\t\t\tid,\r\n\t\t\t\t\tsequence,\r\n\t\t\t\t\t() => {\r\n\t\t\t\t\t\tcontext.pauseExpressions && context.pauseExpressions(true);\r\n\t\t\t\t\t\tcontext.isUpdating && context.isUpdating(true);\r\n\t\t\t\t\t},\r\n\t\t\t\t\t() => {\r\n\t\t\t\t\t\tcontext.pauseExpressions && context.pauseExpressions(false);\r\n\t\t\t\t\t\tko.tasks.runEarly();\r\n\t\t\t\t\t\tcontext.isUpdating && context.isUpdating(false);\r\n\t\t\t\t\t},\r\n\t\t\t\t\t(error) => {\r\n\t\t\t\t\t\tconsole.log(\"sequence error:\", context.id, error);\r\n\r\n\t\t\t\t\t\tif (context.updateError) {\r\n\t\t\t\t\t\t\tcontext.updateError(error);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\telse {\r\n\t\t\t\t\t\t\tshowError(error);\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tcontext.isUpdating && context.isUpdating(false);\r\n\t\t\t\t\t}\r\n\t\t\t\t);\r\n\r\n\t\t\t\tif (!result) {\r\n\t\t\t\t\treturn null;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (format) {\r\n\t\t\t\t\treturn result.formatted;\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\treturn result.raw;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tcompileLookup(scopeExpression: string, targetId: string, subProperty: string, forComputedValue: boolean = false): string {\r\n\t\tif (targetId) {\r\n\t\t\treturn `${scopeExpression}.lookup(this, '${targetId}', '${subProperty || \"\"}', ${forComputedValue})`;\r\n\t\t}\r\n\t\telse {\r\n\t\t\treturn \"null\";\r\n\t\t}\r\n\t}\r\n\r\n\ttoObjectOption(): Option {\r\n\t\tvar id = this.dataId();\r\n\t\tvar nameField = this.fields.map[\"Name\"];\r\n\t\tvar name = this.displayName || (nameField && nameField.value());\r\n\r\n\t\treturn {\r\n\t\t\tid: id || 0,\r\n\t\t\ttext: name || (id ? id + '' : ''),\r\n\t\t\ttargetFormId: this.formId\r\n\t\t};\r\n\t}\r\n\r\n\tstatic isMetaField(id: string): boolean {\r\n\t\treturn id.charAt(0) == \"$\";\r\n\t}\r\n\r\n\tinitialiseStatusExpression(site: ExpressionSite, status: string, expression: string, defaultValue: Subscribable): Subscribable {\r\n\t\ttry {\r\n\t\t\tif (!expression) return defaultValue;\r\n\t\t\treturn this.compileExpression(site, expression, defaultValue);\r\n\t\t}\r\n\t\tcatch (e) {\r\n\t\t\tconsole.log(\"Unable to compile \", status, \" expression: \", expression, e.message);\r\n\t\t\tsite.expressionError(e.message);\r\n\t\t}\r\n\t}\r\n\r\n\tcompileExpression(site: ExpressionSite, value: string, defaultValue: Subscribable, forComputedValue: boolean = false): Computed {\r\n\t\tvar pattern = /\\$\\{([^}]+)\\}/g;\r\n\t\tvar translated = this.parseAggregateExpression(value);\r\n\r\n\t\tif (translated == null) {\r\n\t\t\ttranslated = value.replace(pattern, (match: string, p1: string) => {\r\n\t\t\t\tvar macro = this.parseMacro(p1);\r\n\r\n\t\t\t\tif (macro !== null) {\r\n\t\t\t\t\treturn macro;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvar parser = /([\\w\\s\\d\\.\\$]+)(!|:|$)/gi;\r\n\t\t\t\tvar matches: RegExpExecArray;\r\n\r\n\t\t\t\tvar scope = this;\r\n\t\t\t\tvar scopeExpression = \"this.form\";\r\n\t\t\t\tvar listId: string = null;\r\n\t\t\t\tvar targetId: string = null;\r\n\r\n\t\t\t\twhile ((matches = parser.exec(p1)) != null) {\r\n\t\t\t\t\tvar id = $.trim(matches[1]);\r\n\r\n\t\t\t\t\tswitch (matches[2]) {\r\n\t\t\t\t\t\tcase \"!\":\r\n\t\t\t\t\t\t\tswitch (id.toLowerCase()) {\r\n\t\t\t\t\t\t\t\tcase 'header':\r\n\t\t\t\t\t\t\t\tcase 'document':\r\n\t\t\t\t\t\t\t\t\t//if we're inside a list item form switch the scope of the expression to the parent form\r\n\t\t\t\t\t\t\t\t\tif (this instanceof ListItemForm) {\r\n\t\t\t\t\t\t\t\t\t\tvar itemForm = (this);\r\n\t\t\t\t\t\t\t\t\t\tvar list = itemForm.list();\r\n\t\t\t\t\t\t\t\t\t\tif (list instanceof ListField) {\r\n\t\t\t\t\t\t\t\t\t\t\tscope = list.form;\r\n\t\t\t\t\t\t\t\t\t\t\tscopeExpression = \"this.form.list().form\";\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\telse {\r\n\t\t\t\t\t\t\t\t\t\t\t//we are not inside a child list field, return the current value\r\n\t\t\t\t\t\t\t\t\t\t\treturn \"this.originalValue\";\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\telse {\r\n\t\t\t\t\t\t\t\t\t\t//we are not inside a list item form, return the current value\r\n\t\t\t\t\t\t\t\t\t\treturn \"this.originalValue\";\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\tcase \":\":\r\n\t\t\t\t\t\t\tlistId = id;\r\n\t\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\tdefault:\r\n\t\t\t\t\t\t\ttargetId = id;\r\n\r\n\t\t\t\t\t\t\tif (listId != null) {\r\n\t\t\t\t\t\t\t\t//Expression is a summary on a list field\r\n\t\t\t\t\t\t\t\tvar listField = scope.findList(listId);\r\n\t\t\t\t\t\t\t\tif (listField) {\r\n\t\t\t\t\t\t\t\t\treturn format(\"{0}.findList('{1}').getAggregateResult(this, 'sum', '{2}')\", scopeExpression, listField.id, targetId);\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\telse {\r\n\t\t\t\t\t\t\t\t\treturn \"null\";\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\tvar index = targetId.indexOf(\".\");\r\n\t\t\t\t\t\t\tvar subProperty = '';\r\n\t\t\t\t\t\t\tif (index >= 0) {\r\n\t\t\t\t\t\t\t\tif (index < targetId.length) {\r\n\t\t\t\t\t\t\t\t\tsubProperty = targetId.slice(index + 1);\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\ttargetId = targetId.slice(0, index);\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\treturn scope.compileLookup(scopeExpression, targetId, subProperty, forComputedValue);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\treturn null;\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tsite.expressionsEnabled = site.expressionsEnabled || ko.observable(true);\r\n\t\tsite.expressionError = site.expressionError || ko.observable('');\r\n\r\n\t\tconst src = `\r\n\t\t\ttry {\r\n\t\t\t\t//exit early if expressions are currently disabled\r\n\t\t\t\tif (!this.expressionsEnabled()) {\r\n\t\t\t\t\treturn defaultValue && defaultValue.peek();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvar lookup = this.getGlobals().lookup;\r\n\t\t\t\tvar result = ${translated};\r\n\r\n\t\t\t\t//executing the expression could have disabled expressions, recheck it\r\n\t\t\t\tif (!this.expressionsEnabled()) {\r\n\t\t\t\t\treturn defaultValue && defaultValue.peek();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (typeof(result) === 'function') {\r\n\t\t\t\t\treturn result.apply(this);\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\treturn result;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tcatch (e) {\r\n\t\t\t\tthis.expressionError(e.message);\r\n\t\t\t}\r\n\t\t`;\r\n\r\n\t\tlet compiled = Function('defaultValue', src).bind(site, defaultValue);\r\n\t\treturn ko.computed(compiled);\r\n\t}\r\n\r\n\tprivate parseMacro(value: string): string {\r\n\t\tvar pattern = /^=([^()]+)(?:\\((.*)\\))?$/;\r\n\t\tvar matches = pattern.exec(value);\r\n\r\n\t\tif (matches == null) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\tvar args = matches.length > 2 ? matches[2] : '';\r\n\r\n\t\tswitch (matches[1].toLowerCase()) {\r\n\t\t\tcase \"id\":\r\n\t\t\t\treturn \"this.form.dataId()\";\r\n\r\n\t\t\tcase \"outline\":\r\n\t\t\t\tif (this instanceof ListItemForm) {\r\n\t\t\t\t\treturn \"this.form.position()\";\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\t//we are not inside a list item form, return the current value\r\n\t\t\t\t\treturn \"this.originalValue\";\r\n\t\t\t\t}\r\n\r\n\t\t\tcase \"next\":\r\n\t\t\t\treturn `this.form.nextSequenceValue(this, ${args}, false)`;\r\n\r\n\t\t\tcase \"formatnext\":\r\n\t\t\t\treturn `this.form.nextSequenceValue(this, ${args}, true)`;\r\n\t\t}\r\n\r\n\t\treturn null;\r\n\t}\r\n\r\n\tprivate parseAggregateExpression(value: string): string {\r\n\t\tvar aggregatePattern = /\\s*\\$(sum|count)\\(([^.)]+)\\.?([^.)]+)?\\)\\s*/i;\r\n\t\tvar matches = aggregatePattern.exec(value);\r\n\t\tif (matches == null) return null;\r\n\r\n\t\tvar fn = matches[1].toLowerCase();\r\n\r\n\t\tif (fn == \"count\" && !_.isUndefined(matches[3])) return null;\r\n\r\n\t\tvar listId = matches[2];\r\n\t\tvar fieldId = matches[3];\r\n\t\tvar list = this.findList(listId);\r\n\r\n\t\tif (list) {\r\n\t\t\treturn format(\"this.form.findList('{0}').getAggregateResult(this, '{1}', '{2}')\", list.id, fn, fieldId);\r\n\t\t}\r\n\t\telse {\r\n\t\t\treturn \"this.originalValue\";\r\n\t\t}\r\n\t}\r\n\r\n\tonInitialize() { }\r\n}\r\n\r\nexport class ContextForm extends ObjectForm {\r\n\tonInitialize() {\r\n\t\tvar source = getInputArgument() as ObjectForm;\r\n\r\n\t\tif (source) {\r\n\t\t\tthis.dataId(source.dataId());\r\n\r\n\t\t\tfor (let target of this.fields.scalar) {\r\n\t\t\t\tlet f = source.findField(target.id);\r\n\r\n\t\t\t\tif (f) {\r\n\t\t\t\t\ttarget.reset(f.originalValue, f.value());\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\ttarget.reset(null, null);\r\n\t\t\t\t}\r\n\t\t\t};\r\n\t\t}\r\n\t}\r\n\r\n\tsave(command: Command) {\r\n\t\tcommand.command = 'popupCallback';\r\n\t\tcommand.argument = this;\r\n\t\tsuper.save(command);\r\n\t}\r\n}\r\n\r\nexport class ListForm extends Form implements IFilterable {\r\n\tlistInitialized: Observable;\r\n\r\n\tconstructor(data: any) {\r\n\t\tvar list = new List(data);\r\n\r\n\t\tsuper(data, list, list.hasChanges, list.isBusy);\r\n\r\n\t\tlist.form = this;\r\n\r\n\t\tthis.listInitialized = list.initialized;\r\n\r\n\t\tthis.canEdit = list.canEditItemsInline && list.items().length > 0;\r\n\t\tthis.editMode = list.canAddItems || list.canEditItemsInline;\r\n\r\n\t\tdata.commands && $.each(data.commands, (i, c) => {\r\n\t\t\tthis.commands[i] = new CommandButton(c, this);\r\n\t\t});\r\n\r\n\t\tif (!list.initialized()) list.tryAutoSearch();\r\n\r\n\t\tthis.onInitialize();\r\n\t}\r\n\r\n\tlist(): List {\r\n\t\treturn this.context;\r\n\t}\r\n\r\n\tbuildSummary(): ValidationItem[] {\r\n\t\tvar items: ValidationItem[] = [];\r\n\t\tvar list = this.list();\r\n\r\n\t\tif (list && !list.isValid()) {\r\n\t\t\titems.push({\r\n\t\t\t\tlabel: null,\r\n\t\t\t\tfocus: null,\r\n\t\t\t\tmessage: list.error()\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn items;\r\n\t}\r\n\r\n\tvalidate(): boolean {\r\n\t\tvar list = this.list();\r\n\t\tlist.clearCustomErrors();\r\n\t\tlist.validate();\r\n\t\treturn super.validate();\r\n\t}\r\n\r\n\trevert() {\r\n\t\tthis.list().revert();\r\n\t}\r\n\r\n\texportList() {\r\n\t\tthis.list().exportList();\r\n\t}\r\n\r\n\tonInitialize() { }\r\n\r\n\tsetFilterValue(name: string, value: any) {\r\n\t\tconst filter = this.list().filter;\r\n\r\n\t\tif (filter) {\r\n\t\t\tconst field = filter.fields.map[name];\r\n\t\t\tif (field instanceof ScalarField) {\r\n\t\t\t\tfield.parse(value);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tapplyFilter() {\r\n\t\tthis.list().load();\r\n\t}\r\n}\r\n\r\ninterface ValidationRules {\r\n\tpattern?: RegExp;\r\n\tmax?: number;\r\n\tmin?: number;\r\n\tprecision?: number;\r\n\trequiredMessage: string;\r\n\trangeMessage: string;\r\n\tlengthMessage: string;\r\n\tpatternMessage: string;\r\n}\r\n\r\nexport class ScalarField extends BoundObject implements Field {\r\n\tid: string;\r\n\tinputId: string;\r\n\tmodelId: Subscribable;\r\n\r\n\tlabel: string;\r\n\r\n\tvalue: Observable;\r\n\texpression: string;\r\n\tisDependencyExpression: boolean;\r\n\trecalculateOnLoad: boolean;\r\n\tallowNull: boolean;\r\n\tshouldPost: boolean;\r\n\texpressionError = ko.observable('');\r\n\r\n\tinitialValue;\r\n\tinitialValueExpression: string;\r\n\r\n\tuneditable: Subscribable;\r\n\tisValid: Subscribable;\r\n\terror = ko.observable('');\r\n\tcustomError = ko.observable('');\r\n\tmessage = ko.observable('');\r\n\r\n\tisRequired: Subscribable;\r\n\trules: ValidationRules;\r\n\r\n\tisVisible: Subscribable;\r\n\tisDisabled: Subscribable;\r\n\r\n\tisInvalidExpression: string;\r\n\tcomputedInvalid: Subscribable;\r\n\tisRequiredExpression: string;\r\n\tisDisabledExpression: string;\r\n\tisVisibleExpression: string;\r\n\tisComputedExpression: string;\r\n\r\n\teditMode: boolean;\r\n\teditValue: Computed;\r\n\tdisplayValue: Computed;\r\n\tpersistValue: Computed;\r\n\tisNull: Computed;\r\n\thasChanges: Subscribable;\r\n\tlinkUrl?: string;\r\n\tlinkTarget?: string;\r\n\tinfoUrl?: string;\r\n\r\n\toriginalValue;\r\n\tcomputedValue: Subscribable;\r\n\tpauseExpressions = ko.observable(false);\r\n\tformatString: Observable;\r\n\r\n\tactiveArgument: string;\r\n\tactiveContext: string;\r\n\r\n\tisUpdating: Observable;\r\n\tupdateError: Observable;\r\n\r\n\tonFocus: () => void;\r\n\tonBlur = () => { };\r\n\r\n\tlinksDisabled: boolean;\r\n\r\n\tcomputedValueTargetsParent: boolean;\r\n\r\n\texpressionsEnabled: Subscribable;\r\n\r\n\tconstructor(data: any, public form: ObjectForm) {\r\n\t\tsuper();\r\n\r\n\t\tthis.expressionsEnabled = ko.computed(() => form.enableExpressions() && !this.pauseExpressions());\r\n\r\n\t\tthis.isUpdating = ko.observable(false);\r\n\t\tthis.updateError = ko.observable(null);\r\n\r\n\t\tthis.activeArgument = data.activeArgument || null;\r\n\t\tthis.activeContext = data.activeContext || null;\r\n\t\tthis.isUpdating = ko.observable(false);\r\n\r\n\t\tthis.id = data.id;\r\n\t\tthis.inputId = data.inputId;\r\n\t\tthis.modelId = koDeferredComputed(() => this.form.qualifyModelId(data.modelId || this.id));\r\n\r\n\t\tthis.label = data.label;\r\n\t\tthis.formatString = ko.observable(data.format || null);\r\n\r\n\t\tthis.isVisible = ko.observable(!(data.isVisible === false || data.isHiddenInput === true));\r\n\t\tthis.isRequired = ko.observable(data.isRequired === true || false);\r\n\t\tthis.isDisabled = ko.observable(data.isDisabled === true || false);\r\n\t\tthis.uneditable = this.isDisabled;\r\n\r\n\t\tthis.isInvalidExpression = data.isInvalidExpression || null;\r\n\t\tthis.isDisabledExpression = data.isDisabledExpression || null;\r\n\t\tthis.isRequiredExpression = data.isRequiredExpression || null;\r\n\t\tthis.isVisibleExpression = data.isVisibleExpression || null;\r\n\t\tthis.expression = data.expression || null;\r\n\t\tthis.isDependencyExpression = data.isDependencyExpression || false;\r\n\t\tthis.recalculateOnLoad = data.recalculateOnLoad || false;\r\n\t\tthis.isComputedExpression = data.isComputedExpression || null;\r\n\t\tthis.allowNull = data.allowNull || false;\r\n\t\tthis.shouldPost = data.shouldPost ?? true;\r\n\t\tthis.linkUrl = (data.meta && data.meta.LinkUrl) || null;\r\n\t\tthis.linkTarget = (data.meta && data.meta.LinkTarget) || null;\r\n\t\tthis.infoUrl = (data.meta && data.meta.InfoUrl) || null;\r\n\r\n\t\tthis.rules = {\r\n\t\t\tmax: data.maximum,\r\n\t\t\tmin: data.minimum,\r\n\t\t\tpattern: data.pattern && new RegExp(\"^\" + data.pattern + \"$\", data.patternModifiers || '') || undefined,\r\n\t\t\tprecision: data.precision,\r\n\t\t\trequiredMessage: data.requiredMessage || format(settings.strings.requiredFieldMessage, data.label),\r\n\t\t\trangeMessage: data.rangeMessage,\r\n\t\t\tlengthMessage: data.lengthMessage,\r\n\t\t\tpatternMessage: data.patternMessage\r\n\t\t};\r\n\r\n\t\t//defer to the form for edit mode unless it is explicitly false\r\n\t\tthis.editMode = data.editMode === false ? false : form.editMode;\r\n\t\tthis.linksDisabled = form.linksDisabled;\r\n\t\tthis.originalValue = this.load(data.value);\r\n\t\tthis.value = ko.observable(this.originalValue);\r\n\r\n\t\tthis.initialValue = _.isUndefined(data.initialValue) ? null : this.load(data.initialValue);\r\n\t\tthis.initialValueExpression = data.initialValueExpression || null;\r\n\r\n\t\tthis.isValid = ko.observable(true);\r\n\t\tthis.value.subscribe((currentValue) => {\r\n\t\t\tthis.revalidate();\r\n\t\t});\r\n\r\n\t\tvar visibilitySubscription: Subscription;\r\n\t\tvar valueSubscription: Subscription;\r\n\t\tthis.customError.subscribe((errorValue: string) => {\r\n\t\t\t//if a custom error is set on the field keep track of the invalid value\r\n\t\t\t//and clear the custom error if the value is changed away from that value\r\n\t\t\tif (errorValue) {\r\n\t\t\t\tvar invalidValue = this.value();\r\n\t\t\t\tif (!valueSubscription) {\r\n\t\t\t\t\tvalueSubscription = this.value.subscribe((currentValue) => {\r\n\t\t\t\t\t\tif (this.willValueChange(invalidValue, currentValue) && !this.isInvalidExpression) {\r\n\t\t\t\t\t\t\tthis.customError('');\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (!visibilitySubscription) {\r\n\t\t\t\t\tvisibilitySubscription = this.isVisible.subscribe((isVisible: boolean) => {\r\n\t\t\t\t\t\tif (!isVisible) {\r\n\t\t\t\t\t\t\tthis.customError('');\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tif (visibilitySubscription) {\r\n\t\t\t\t\tvisibilitySubscription.dispose();\r\n\t\t\t\t\tvisibilitySubscription = null;\r\n\t\t\t\t}\r\n\t\t\t\tif (valueSubscription) {\r\n\t\t\t\t\tvalueSubscription.dispose();\r\n\t\t\t\t\tvalueSubscription = null;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tthis.revalidate();\r\n\t\t});\r\n\r\n\t\tthis.editValue =\r\n\t\t\tko.computed({\r\n\t\t\t\tread: this.format,\r\n\t\t\t\twrite: this.parse,\r\n\t\t\t\tdeferEvaluation: true\r\n\t\t\t})\r\n\t\t\t.extend({ notify: 'always' });\r\n\r\n\t\tthis.displayValue = koDeferredComputed(() => this.display());\r\n\t\tthis.persistValue = koDeferredComputed(() => this.save());\r\n\r\n\t\tthis.isNull = ko.computed(() => _.isNull(this.value()));\r\n\r\n\t\tif (this.activeContext || this.activeArgument) {\r\n\t\t\t//only run active forms if the value has changed since the last notification, this is\r\n\t\t\t//different than if the value has changed since load, as it may change away from\r\n\t\t\t//initial and then back again, which will require another run (even though hasChanges\r\n\t\t\t//would be false at that point)\r\n\t\t\tlet lastValue;\r\n\t\t\tlet hasLastValue = false;\r\n\r\n\t\t\tlet lock = {};\r\n\r\n\t\t\tthis.value.subscribe((currentValue) => {\r\n\t\t\t\t//we need to add it to knockout's microtask queue or it will\r\n\t\t\t\t//use old values because of the call to ko.tasks.runEarly()\r\n\t\t\t\tko.tasks.schedule(() =>\r\n\t\t\t\t\tthis.whenIdle(\r\n\t\t\t\t\t\t() => {\r\n\t\t\t\t\t\t\tif (!hasLastValue) {\r\n\t\t\t\t\t\t\t\tlastValue = this.originalValue;\r\n\t\t\t\t\t\t\t\thasLastValue = true;\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\tif (this.willValueChange(lastValue, currentValue)) {\r\n\t\t\t\t\t\t\t\tlastValue = currentValue;\r\n\r\n\t\t\t\t\t\t\t\tif (this.form && this.form.engine && this.form.isReady) {\r\n\t\t\t\t\t\t\t\t\tthis.form.engine.run(this.activeContext, this.activeArgument, this);\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tlock\r\n\t\t\t\t\t)\r\n\t\t\t\t);\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tthis.hasChanges = ko.computed(() =>\r\n\t\t\tthis.willValueChange(this.value(), this.originalValue) && this.form.isReady\r\n\t\t);\r\n\t}\r\n\r\n\twillValueChange(currentValue: any, newValue: any): boolean {\r\n\t\treturn JSON.stringify(currentValue) !== JSON.stringify(newValue);\r\n\t}\r\n\r\n\tload(x) {\r\n\t\treturn _.isUndefined(x) ? null : x;\r\n\t}\r\n\r\n\tsave() {\r\n\t\tvar value = this.value();\r\n\t\tif (_.isNull(value) || _.isUndefined(value)) return '';\r\n\t\telse return value.toString();\r\n\t}\r\n\r\n\trevert() {\r\n\t\tthis.value(this.originalValue);\r\n\t}\r\n\r\n\treset(originalValue, currentValue) {\r\n\t\tthis.originalValue = this.load(originalValue);\r\n\t\tthis.parse(currentValue);\r\n\t\tthis.value.valueHasMutated();\r\n\t\tko.tasks.runEarly();\r\n\t\tthis.isValid(true);\r\n\t}\r\n\r\n\tdisplay(): string {\r\n\t\tvar value = this.value();\r\n\t\tif (value == null) return settings.strings.nullText;\r\n\t\telse return this.format();\r\n\t}\r\n\r\n\tformat() {\r\n\t\tvar formatString = this.formatString();\r\n\t\tif (formatString) {\r\n\t\t\treturn toString(this.value(), formatString);\r\n\t\t}\r\n\t\telse {\r\n\t\t\treturn this.value();\r\n\t\t}\r\n\t}\r\n\r\n\tparse(data) {\r\n\t\tthis.value(data);\r\n\t}\r\n\r\n\tprivate revalidate() {\r\n\t\tvar wasValid = this.isValid();\r\n\t\tvar isValid = this.validate();\r\n\r\n\t\tif (!wasValid && isValid && !this.form.isValid()) {\r\n\t\t\tthis.form.validate();\r\n\t\t}\r\n\t}\r\n\r\n\tvalidate(): boolean {\r\n\t\tvar value = this.value();\r\n\t\tvar required = this.isRequired();\r\n\r\n\t\tif (this.customError()) {\r\n\t\t\tthis.error(this.customError());\r\n\t\t\tthis.isValid(false);\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tthis.error(null);\r\n\r\n\t\tvar valid = true;\r\n\t\tvar error = (message) => {\r\n\t\t\tthis.error(message);\r\n\t\t\tvalid = false;\r\n\t\t}\r\n\r\n\t\tif (_.isNull(value) || _.isUndefined(value)) {\r\n\t\t\tif (required) error(this.rules.requiredMessage);\r\n\t\t}\r\n\t\telse {\r\n\t\t\tthis.validateValue(value, required, error);\r\n\t\t}\r\n\r\n\t\tthis.isValid(valid);\r\n\t\treturn valid;\r\n\t}\r\n\r\n\tvalidateValue(value, required: boolean, error: (string) => void) {\r\n\t\t//validate as a string, by default\r\n\t\tvar r = this.rules;\r\n\t\tvar v: string = value.toString();\r\n\r\n\t\tif (v.length == 0) {\r\n\t\t\tif (required) error(r.requiredMessage);\r\n\t\t}\r\n\t\telse {\r\n\t\t\tif (r.pattern && !r.pattern.test(value)) {\r\n\t\t\t\terror(r.patternMessage);\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tif ((r.min && value.length < r.min) || (r.max && value.length > r.max)) {\r\n\t\t\t\terror(r.lengthMessage);\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tsnapshot(map, forQueryString: boolean = false) {\r\n\t\tif (!this.shouldPost) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tmap[this.id] = this.persistValue();\r\n\t}\r\n\r\n\ttryInitialiseExpression() {\r\n\t\tif (this.computedValue) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.computedValue = ko.observable(this.originalValue);\r\n\r\n\t\ttry {\r\n\t\t\t//if reculculateOnLoad is set, accept results immediately, otherwise, retain\r\n\t\t\t//previously computed values by ignoring results before the form is interactive\r\n\t\t\tvar ignoreFirstResult = this.isDependencyExpression && !this.recalculateOnLoad;\r\n\r\n\t\t\tvar calculatedExpression = this.isComputedExpression\r\n\t\t\t\t? `(${this.isComputedExpression}) ? (${this.expression}) : this.value()`\r\n\t\t\t\t: this.expression;\r\n\r\n\t\t\tthis.computedValue = this.form.compileExpression(this, calculatedExpression, this.value, true);\r\n\t\t\tthis.computedValue.subscribe((value) => {\r\n\t\t\t\tif (ignoreFirstResult) {\r\n\t\t\t\t\tthis.form.whenIdle(() => {\r\n\t\t\t\t\t\tignoreFirstResult = false;\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (this.form.activeEnabled && this.willValueChange(this.value(), value)) {\r\n\t\t\t\t\tif (this.form.isReady) {\r\n\t\t\t\t\t\tthis.parse(value);\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t\tthis.reset(value, value);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tthis.computedValue.notifySubscribers(this.computedValue());\r\n\t\t}\r\n\t\tcatch (e) {\r\n\t\t\tthis.expressionError(e.message);\r\n\t\t\tthis.value = ko.observable('###');\r\n\t\t}\r\n\t}\r\n\r\n\tcompileInitialValueExpression(): Computed {\r\n\t\tif (!this.initialValueExpression) return null;\r\n\r\n\t\ttry {\r\n\t\t\treturn this.form.compileExpression(this, this.initialValueExpression, null);\r\n\t\t}\r\n\t\tcatch (e) {\r\n\t\t\tthis.expressionError(e.message);\r\n\t\t}\r\n\r\n\t\treturn null;\r\n\t}\r\n\r\n\tgetGlobals() : ExpressionGlobals {\r\n\t\treturn new ExpressionGlobals(this);\r\n\t}\r\n\r\n\tdismissMessage() {\r\n\t\tthis.message(null);\r\n\t}\r\n\r\n\tfocus() {\r\n\t\tthis.onFocus && this.onFocus();\r\n\t}\r\n\r\n\tinitialiseStatusExpressions() {\r\n\t\tif (this.editMode) {\r\n\t\t\tthis.computedInvalid = this.form.initialiseStatusExpression(this, \"isInvalid\", this.isInvalidExpression, null);\r\n\t\t\tif (this.computedInvalid) {\r\n\t\t\t\tthis.computedInvalid.subscribe((value) => {\r\n\t\t\t\t\tif (value) {\r\n\t\t\t\t\t\tif (_.isString(value)) {\r\n\t\t\t\t\t\t\tthis.customError(value);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\telse {\r\n\t\t\t\t\t\t\tthis.customError(settings.strings.invalidField);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t\tthis.customError('');\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t\tthis.computedInvalid.notifySubscribers(this.computedInvalid());\r\n\t\t\t}\r\n\r\n\t\t\tvar disabledExpression = (this.isDisabledExpression && this.isComputedExpression)\r\n\t\t\t\t? `(${this.isDisabledExpression}) || (${this.isComputedExpression})`\r\n\t\t\t\t: this.isDisabledExpression || this.isComputedExpression || null;\r\n\r\n\t\t\tif (disabledExpression && !this.isDisabled()) {\r\n\t\t\t\tthis.isDisabled = this.form.initialiseStatusExpression(this, \"isDisabled\", disabledExpression, this.isDisabled);\r\n\t\t\t\tthis.uneditable = this.isDisabled;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (!this.isRequired()) {\r\n\t\t\tthis.isRequired = this.form.initialiseStatusExpression(this, \"isRequired\", this.isRequiredExpression, this.isRequired);\r\n\r\n\t\t\tthis.isRequired.subscribe(value => {\r\n\t\t\t\tif (!value) {\r\n\t\t\t\t\tthis.revalidate();\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif (this.isVisible()) {\r\n\t\t\tthis.isVisible = this.form.initialiseStatusExpression(this, \"isVisible\", this.isVisibleExpression, this.isVisible);\r\n\t\t}\r\n\t}\r\n\r\n\tisCalculated(): boolean {\r\n\t\treturn this.uneditable() && this.expression && !this.isDependencyExpression;\r\n\t}\r\n\r\n\twhenIdle(callback: () => any, exclusiveLock?: any) {\r\n\t\treturn ExpressionLookup.whenIdle(this.isUpdating, callback, exclusiveLock);\r\n\t}\r\n}\r\n\r\nexport class StringField extends ScalarField {\r\n\ttrim: boolean;\r\n\r\n\tconstructor(data: any, form: ObjectForm) {\r\n\t\tsuper(data, form);\r\n\t\tthis.trim = data.trim || false;\r\n\t}\r\n\r\n\tload(x) {\r\n\t\tif (_.isNull(x) || _.isUndefined(x)) {\r\n\t\t\tx = '';\r\n\t\t}\r\n\r\n\t\tif (_.isObject(x as any) && !_.isUndefined(x.id)) {\r\n\t\t\tx = x.text || x.id;\r\n\t\t}\r\n\r\n\t\tif (this.trim) {\r\n\t\t\tx = $.trim(x);\r\n\t\t}\r\n\r\n\t\treturn x + '';\r\n\t}\r\n\r\n\tparse(data) {\r\n\t\tthis.value(\r\n\t\t\tthis.load(data)\r\n\t\t);\r\n\t}\r\n}\r\n\r\nexport class NumberField extends ScalarField {\r\n\twillValueChange(currentValue: any, newValue: any): boolean {\r\n\t\tconst p = this.rules.precision;\r\n\t\tif (!_.isUndefined(p) && !_.isNull(p)) {\r\n\t\t\tif (NumberField.isValidNumber(currentValue) && NumberField.isValidNumber(newValue)) {\r\n\t\t\t\tvar x = Number(currentValue);\r\n\t\t\t\tvar y = Number(newValue);\r\n\t\t\t\treturn x.toFixed(p) != y.toFixed(p);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn super.willValueChange(currentValue, newValue);\r\n\t}\r\n\r\n\tformat() {\r\n\t\treturn this.formatValue(this.value());\r\n\t}\r\n\r\n\tformatValue(value) {\r\n\t\tvar formatString = this.formatString();\r\n\t\tif (formatString) {\r\n\t\t\tvar result = toString(value, formatString);\r\n\r\n\t\t\tif(!this.editMode && result === '0' && isEmptyWhenZeroFormat(formatString)) {\r\n\t\t\t\tresult = null;\r\n\t\t\t}\r\n\r\n\t\t\treturn result;\r\n\t\t}\r\n\t\telse {\r\n\t\t\tvar p = this.rules.precision;\r\n\t\t\tif (NumberField.isValidNumber(p) && NumberField.isValidNumber(value)) {\r\n\t\t\t\treturn toString(value, \"n\" + p);\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\treturn value;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tparse(data) {\r\n\t\tif (_.isNull(data) || _.isUndefined(data) || _.isNaN(data) || data === '') {\r\n\t\t\tthis.value(null);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (_.isObject(data as any) && !_.isUndefined(data.id)) {\r\n\t\t\tdata = data.id;\r\n\t\t}\r\n\r\n\t\tif (_.isNumber(data)) {\r\n\t\t\tthis.value(this.round(data));\r\n\t\t}\r\n\t\telse {\r\n\t\t\tvar parsed = kendo.parseFloat(data);\r\n\r\n\t\t\tif (NumberField.isValidNumber(parsed)) {\r\n\t\t\t\tvar format = this.formatString();\r\n\r\n\t\t\t\tif (format && format.match(/^p[0-9]*$/)) {\r\n\t\t\t\t\tparsed = parsed / 100;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.value(this.round(parsed));\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\t//update observers using the pre edit value\r\n\t\t\t\tthis.value.valueHasMutated();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tround(value: number): number {\r\n\t\tvar p = this.rules.precision;\r\n\t\tif (NumberField.isValidNumber(p) && NumberField.isValidNumber(value)) {\r\n\t\t\treturn parseFloat(value.toFixed(p));\r\n\t\t}\r\n\t\telse {\r\n\t\t\treturn value;\r\n\t\t}\r\n\t}\r\n\r\n\tvalidateValue(value, required: boolean, error: (string) => void) {\r\n\t\tvar r = this.rules;\r\n\t\tvar v: number = value;\r\n\r\n\t\tif (NumberField.isValidNumber(v)) {\r\n\t\t\tif (required && !this.allowNull && parseFloat(value) == 0) {\r\n\t\t\t\terror(settings.strings.valueCannotBeZero);\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\telse if ((r.min != null && v < r.min) || (r.max != null && v > r.max)) {\r\n\t\t\t\terror(r.rangeMessage);\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t}\r\n\t\telse {\r\n\t\t\tif (required) error(r.requiredMessage);\r\n\t\t}\r\n\t}\r\n\r\n\tsave() {\r\n\t\tvar x = this.value();\r\n\t\treturn NumberField.isValidNumber(x) ? x.toString() : '';\r\n\t}\r\n\r\n\tstatic isValidNumber(x) {\r\n\t\tif (_.isNull(x)) return false;\r\n\t\tif (_.isUndefined(x)) return false;\r\n\t\tif (!_.isNumber(x)) return false;\r\n\t\tif (_.isNaN(x)) return false;\r\n\t\tif (!_.isFinite(x)) return false;\r\n\t\treturn true;\r\n\t}\r\n}\r\n\r\nexport class DateField extends ScalarField {\r\n\tconstructor(data: any, form: ObjectForm) {\r\n\t\tsuper(data, form);\r\n\t}\r\n\r\n\tload(x) {\r\n\t\treturn this.parseDate(x, 's');\r\n\t}\r\n\r\n\tparseDate(data: string, format?: string) {\r\n\t\tif (_.isString(data)) {\r\n\t\t\tvar s: String = data;\r\n\t\t\tif (s.toLowerCase().indexOf('/date(') == 0) {\r\n\t\t\t\treturn new Date(parseInt(s.substr(6)));\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn kendo.parseDate(data, format || this.formatString());\r\n\t}\r\n\r\n\tparse(data) {\r\n\t\tif (_.isDate(data)) {\r\n\t\t\t//data could be from a different window so construct a new data to avoid any permission issues\r\n\t\t\tthis.value(new Date(data.valueOf()));\r\n\t\t}\r\n\t\telse {\r\n\t\t\tvar parsed = this.parseDate(data, 's') || this.parseDate(data);\r\n\t\t\tif (data && !parsed) {\r\n\t\t\t\t//force the view to clear - valueHasMutated is not updating the view to its previous value\r\n\t\t\t\tthis.value(data);\r\n\t\t\t\tthis.value(null);\r\n\t\t\t} else {\r\n\t\t\t\tthis.value(parsed);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tsave() {\r\n\t\treturn toString(this.value(), 's');\r\n\t}\r\n}\r\n\r\nclass BoolField extends ScalarField {\r\n\tconstructor(data: any, form: ObjectForm) {\r\n\t\tsuper(data, form);\r\n\t}\r\n\r\n\tdisplay() {\r\n\t\tvar value = this.value();\r\n\r\n\t\tif (_.isBoolean(value)) {\r\n\t\t\treturn value ? \"Yes\" : \"No\";\r\n\t\t}\r\n\t\telse {\r\n\t\t\treturn \"Default\";\r\n\t\t}\r\n\t}\r\n\r\n\tformat() {\r\n\t\tvar x = this.value();\r\n\t\treturn x === null ? '' : x.toString();\r\n\t}\r\n\r\n\tload(x) {\r\n\t\tif (x) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\telse {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\tparse(data) {\r\n\t\tif (_.isBoolean(data)) {\r\n\t\t\tthis.value(data);\r\n\t\t}\r\n\t\telse if (_.isNumber(data)) {\r\n\t\t\tthis.value(data === 0 ? false : true);\r\n\t\t}\r\n\t\telse if (_.isString(data)) {\r\n\t\t\tswitch ((data).toLowerCase()) {\r\n\t\t\t\tcase 'true':\r\n\t\t\t\tcase '1':\r\n\t\t\t\t\tthis.value(true);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase 'false':\r\n\t\t\t\tcase '0':\r\n\t\t\t\t\tthis.value(false);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase '':\r\n\t\t\t\t\tthis.value(null);\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\t\telse if (_.isNull(data) || _.isUndefined(data)) {\r\n\t\t\tthis.value(false);\r\n\t\t}\r\n\t\telse {\r\n\t\t\t//notify subscribers with previous value\r\n\t\t\tthis.value.valueHasMutated();\r\n\t\t}\r\n\t}\r\n\r\n\tvalidateValue(value, required: boolean, error: (string) => void) {\r\n\t\tif (!_.isBoolean(value) && required) error(this.rules.requiredMessage);\r\n\t}\r\n}\r\n\r\ninterface File {\r\n\tname: string;\r\n\tcontentType: string;\r\n\tuniqueId: string;\r\n}\r\n\r\nexport class FileField extends ScalarField {\r\n\timageUrl?: string;\r\n\r\n\tconstructor(data: any, form: ObjectForm) {\r\n\t\tsuper(data, form);\r\n\r\n\t\tthis.imageUrl = (data.meta && data.meta.ImageUrl) || null;\r\n\t}\r\n\r\n\tload(x) {\r\n\t\tif (x && x.name) {\r\n\t\t\treturn x;\r\n\t\t}\r\n\t\telse if (x && _.isString(x)) {\r\n\t\t\tvar fileString = x + '';\r\n\r\n\t\t\tvar parts = fileString.split(':');\r\n\t\t\tif (parts.length > 2) {\r\n\t\t\t\tvar file: File = {\r\n\t\t\t\t\tname: parts[0],\r\n\t\t\t\t\tcontentType: parts[1],\r\n\t\t\t\t\tuniqueId: parts.slice(2).join(':')\r\n\t\t\t\t}\r\n\t\t\t\treturn file;\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tvar file: File = {\r\n\t\t\t\t\tname: fileString,\r\n\t\t\t\t\tcontentType: '',\r\n\t\t\t\t\tuniqueId: '',\r\n\t\t\t\t}\r\n\t\t\t\treturn file;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn null;\r\n\t}\r\n\r\n\tdisplay(): string {\r\n\t\tvar value: File = this.value();\r\n\t\tif (value == null) return super.display();\r\n\r\n\t\treturn value.name;\r\n\t}\r\n\r\n\tparse(data) {\r\n\t\tthis.value(this.load(data));\r\n\t}\r\n\r\n\tsave() {\r\n\t\tvar value: File = this.value();\r\n\t\tif (value) {\r\n\t\t\treturn value.name + ':' + value.contentType + ':' + value.uniqueId;\r\n\t\t}\r\n\t\telse {\r\n\t\t\treturn '';\r\n\t\t}\r\n\t}\r\n\r\n\tclear() {\r\n\t\tthis.value(null);\r\n\t}\r\n\r\n\tformat() {\r\n\t\tvar value = this.value();\r\n\t\treturn value && value.uniqueId;\r\n\t}\r\n}\r\n\r\nexport interface Option {\r\n\tid: any;\r\n\ttext: string;\r\n\tchildren?: Option[];\r\n\ttarget?: any;\r\n\ttargetFormId?: number;\r\n\ttargetName?: string;\r\n\tvalues?: { [key: string]: any };\r\n\tmeta?: { [key: string]: any };\r\n\tisAbstract?: boolean;\r\n}\r\n\r\nexport function makeAbstractOption(value: string) : Option {\r\n\treturn {\r\n\t\tid: 0,\r\n\t\ttext: value,\r\n\t\ttargetName: value,\r\n\t\tisAbstract: true,\r\n\t\tvalues: {\r\n\t\t\tIsAbstract: true\r\n\t\t}\r\n\t};\r\n}\r\n\r\nexport interface SelectFormatter {\r\n\tformatSelection?: (object: any) => string;\r\n\tformatResult?: (object: any) => string;\r\n}\r\n\r\nexport class SelectField extends ScalarField {\r\n\toptions: ObservableArray;\r\n\toptionsMap: ObservableArray;\r\n\tselectedOptionIds: ObservableArray;\r\n\tselectFormatter: SelectFormatter;\r\n\tselectedItem: Observable;\r\n\tstatusColorClass: Computed;\r\n\r\n\tenableLink: Computed;\r\n\r\n\tlistFilterMap: { [index: string]: Computed; };\r\n\r\n\tcreateUrl: string;\r\n\tselectUrl: string;\r\n\r\n\tgetMapId(id: any) {\r\n\t\treturn (id === null ? '' : id + '').toLowerCase();\r\n\t}\r\n\r\n\tprivate mapOptions(map: Object, options: Option[]) {\r\n\t\tif (!options) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tfor (const item of options) {\r\n\t\t\tmap[this.getMapId(item.id)] = item;\r\n\t\t\tif (item.children) {\r\n\t\t\t\tthis.mapOptions(map, item.children);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tconstructor(data: any, form: ObjectForm, public multiple: boolean, public objectValues: boolean = false) {\r\n\t\tsuper(data, form);\r\n\r\n\t\tthis.multiple = multiple;\r\n\r\n\t\tvar options = data && data.meta && parseJson(data.meta.Options);\r\n\t\tif (!options && !objectValues) {\r\n\t\t\toptions = this.items().map(x => this.buildOption(x));\r\n\t\t}\r\n\t\tthis.options = ko.observableArray(options || []);\r\n\r\n\t\tthis.optionsMap = >ko.computed(() => {\r\n\t\t\tvar map = {};\r\n\t\t\tthis.mapOptions(map, this.options());\r\n\t\t\treturn map;\r\n\t\t});\r\n\r\n\t\tif (this.multiple) {\r\n\t\t\tthis.selectedItem = ko.observable(null);\r\n\t\t}\r\n\t\telse {\r\n\t\t\tthis.selectedItem = this.value;\r\n\t\t}\r\n\r\n\t\tthis.objectValues = this.objectValues || false;\r\n\r\n\t\tthis.selectedOptionIds = >ko.computed({\r\n\t\t\tread: () => {\r\n\t\t\t\tvar x = _.map(this.selectedItems(), ObjectForm.idProperty);\r\n\t\t\t\treturn x;\r\n\t\t\t},\r\n\t\t\twrite: (newValue) => {\r\n\t\t\t\tvar map = this.optionsMap();\r\n\t\t\t\tthis.value(\r\n\t\t\t\t\t_.map(newValue, (id) => map[this.getMapId(id)])\r\n\t\t\t\t);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tthis.isNull = ko.computed(() => this.items().length == 0);\r\n\r\n\t\tthis.statusColorClass = ko.computed(() => {\r\n\t\t\tif (!this.multiple) {\r\n\t\t\t\tvar items = this.selectedItems();\r\n\t\t\t\tif (items.length == 1 && items[0].meta && items[0].meta.color) {\r\n\t\t\t\t\treturn `background-${items[0].meta.color.toLowerCase()}`;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn null;\r\n\t\t});\r\n\r\n\t\tthis.createUrl = (data.meta && data.meta.CreateUrl) || null;\r\n\t\tthis.selectUrl = (data.meta && data.meta.SelectUrl) || null;\r\n\r\n\t\tthis.enableLink = ko.computed(() => {\r\n\t\t\tif (this.linksDisabled || this.isNull()) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\r\n\t\t\tvar value = this.selectedItem();\r\n\t\t\tif (value && value.isAbstract) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\r\n\t\t\treturn true;\r\n\t\t});\r\n\r\n\t\tthis.listFilterMap = null;\r\n\t\tif (data.listFilterMap) {\r\n\t\t\tvar map = {};\r\n\r\n\t\t\t_.each(data.listFilterMap, (value, key) => {\r\n\t\t\t\tif (value) {\r\n\t\t\t\t\tmap[key] = this.form.compileExpression(this, value.toString(), ko.observable());\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tthis.listFilterMap = map;\r\n\t\t}\r\n\t}\r\n\r\n\tcreate() {\r\n\t\tif (!this.createUrl) return;\r\n\r\n\t\tshowModalPage({\r\n\t\t\turl: this.createUrl,\r\n\t\t\tcallback: (value, context) => {\r\n\t\t\t\tthis.focus();\r\n\r\n\t\t\t\tif (value) {\r\n\t\t\t\t\tthis.parse(value);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tinfo(): void {\r\n\t\tif (!this.infoUrl) return;\r\n\r\n\t\tshowModalPage({\r\n\t\t\turl: this.buildInfoUrl(),\r\n\t\t\tcallback: () => this.focus()\r\n\t\t});\r\n\t}\r\n\r\n\tbuildInfoUrl(): string {\r\n\t\tif (!this.infoUrl) return null;\r\n\r\n\t\tlet map = {};\r\n\t\tthis.snapshot(map, false, 'entity');\r\n\r\n\t\treturn this.buildUrl(this.infoUrl, map);\r\n\t}\r\n\r\n\tselect() {\r\n\t\tif (!this.selectUrl) return;\r\n\r\n\t\tlet map = {};\r\n\t\tthis.buildFilterSnapshot(map, false);\r\n\r\n\t\tshowModalPage({\r\n\t\t\turl: this.buildUrl(this.selectUrl, map),\r\n\t\t\tcallback: (value, context) => {\r\n\t\t\t\tthis.focus();\r\n\r\n\t\t\t\tif (value) {\r\n\t\t\t\t\t//set the selection from the popup page\r\n\t\t\t\t\tthis.parse(value);\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\t//return the current selection to the popup page\r\n\t\t\t\t\treturn this.value();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tbuildFilterSnapshot(map, forPost: boolean) {\r\n\t\tif (this.listFilterMap) {\r\n\t\t\t_.each(this.listFilterMap, (value: Computed, key) => {\r\n\t\t\t\tvar v = value();\r\n\t\t\t\tif (_.isObject(v)) {\r\n\t\t\t\t\t_.each(v, (propValue, prop) => {\r\n\t\t\t\t\t\tif (_.isNull(propValue) || v === '' || _.isObject(propValue)) {\r\n\t\t\t\t\t\t\treturn;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tmap[`q.${key}.${prop}`] = propValue;\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tmap[`q.${key}`] = v;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t\telse {\r\n\t\t\tthis.form.snapshotFilter(map, forPost);\r\n\t\t}\r\n\t}\r\n\r\n\tdisplay(): string {\r\n\t\tvar items = _.map(this.selectedItems(), 'text');\r\n\t\tif (items.length > 0) return items.join(', ');\r\n\t\telse return settings.strings.nullText;\r\n\t}\r\n\r\n\tsaveItems(id: string): any[] {\r\n\t\tvar result = [];\r\n\t\tvar makeId = () => {\r\n\t\t\tif (this.multiple) {\r\n\t\t\t\treturn id + '[' + result.length + ']';\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\treturn id;\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tvar i = this.items();\r\n\t\tif (i.length) {\r\n\t\t\t_.forEach(i, (x) => {\r\n\t\t\t\tresult.push({\r\n\t\t\t\t\tid: makeId(),\r\n\t\t\t\t\tvalue: x + ''\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t\t}\r\n\t\telse if (!this.multiple) {\r\n\t\t\tresult.push({\r\n\t\t\t\tid: id,\r\n\t\t\t\tvalue: ''\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\tsave() {\r\n\t\treturn this.saveItems(this.modelId());\r\n\t}\r\n\r\n\tselectedItems(): Option[] {\r\n\t\tvar x = this.value();\r\n\t\tif (x == null) return [];\r\n\t\tvar map = this.optionsMap();\r\n\r\n\t\tif (this.multiple && _.isArray(x)) {\r\n\t\t\tvar result: Option[] = [];\r\n\t\t\t_.forEach(x, (item) => {\r\n\t\t\t\tvar option = map[this.getMapId(item)];\r\n\t\t\t\toption && result.push(option);\r\n\t\t\t});\r\n\t\t\treturn result;\r\n\t\t}\r\n\t\telse {\r\n\t\t\tvar option = map[this.getMapId(x)];\r\n\t\t\tif (option) return [option];\r\n\t\t\treturn [];\r\n\t\t}\r\n\t}\r\n\r\n\titems(): any[] {\r\n\t\tvar x = this.value();\r\n\t\tif (x == null) return [];\r\n\r\n\t\tif (this.multiple && _.isArray(x)) {\r\n\t\t\treturn x;\r\n\t\t}\r\n\t\telse {\r\n\t\t\treturn [x];\r\n\t\t}\r\n\t}\r\n\r\n\tformat() {\r\n\t\tvar items = _.map(this.selectedItems(), ObjectForm.idProperty);\r\n\t\tif (items.length > 0) return items.join(',');\r\n\t\telse return '';\r\n\t}\r\n\r\n\tgetOptions(data): Option[] {\r\n\t\tif (data == null) return [];\r\n\r\n\t\tvar map = this.optionsMap();\r\n\r\n\t\tif (this.multiple) {\r\n\t\t\tif (!_.isArray(data)) {\r\n\t\t\t\tdata = (String(data)).split(',');\r\n\t\t\t}\r\n\r\n\t\t\tvar result = [];\r\n\r\n\t\t\t_.forEach(data, (item) => {\r\n\t\t\t\tvar id = this.getMapId(item);\r\n\t\t\t\tvar option = map[id] || this.buildOption(item);\r\n\r\n\t\t\t\tif (option) {\r\n\t\t\t\t\tresult.push(option);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\treturn result;\r\n\t\t}\r\n\t\telse {\r\n\t\t\tvar id = this.getMapId(data);\r\n\t\t\tvar option = map[id] || this.buildOption(_.isNull(data) ? '' : `${data}`);\r\n\r\n\t\t\tif (option) {\r\n\t\t\t\treturn [option];\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\treturn [];\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tparse(data) {\r\n\t\tif (data != null) {\r\n\t\t\tif (this.multiple && _.isString(data)) {\r\n\t\t\t\tdata = (String(data)).split(',');\r\n\t\t\t}\r\n\t\t\telse if (!this.optionsMap()[data]) {\r\n\t\t\t\tlet text = String(data).toLowerCase();\r\n\t\t\t\tlet option = this.options().find(x => x.text.toLowerCase() === text);\r\n\t\t\t\tif (option != null) {\r\n\t\t\t\t\tdata = option.id;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.setValue(data);\r\n\t}\r\n\r\n\trevert() {\r\n\t\tthis.parse(this.originalValue);\r\n\t}\r\n\r\n\tsetValue(data) {\r\n\t\tif (data != null) {\r\n\t\t\tif (this.multiple) {\r\n\t\t\t\tif (!_.isArray(data)) {\r\n\t\t\t\t\tdata = [data];\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (!data.length) {\r\n\t\t\t\t\tdata = null;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\telse if (_.isArray(data)) {\r\n\t\t\t\tif (data.length) {\r\n\t\t\t\t\tdata = data[0];\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tdata = null;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.value(data);\r\n\t}\r\n\r\n\tbuildOption(id): Option {\r\n\t\treturn {\r\n\t\t\tid: id,\r\n\t\t\ttext: id\r\n\t\t};\r\n\t}\r\n\r\n\tsnapshot(map, forQueryString: boolean = false, key?: string) {\r\n\t\tif (!this.shouldPost) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (!key) {\r\n\t\t\tkey = this.id;\r\n\t\t}\r\n\r\n\t\tif (forQueryString) {\r\n\t\t\tmap[key] = this.format();\r\n\t\t}\r\n\t\telse {\r\n\t\t\t_.each(this.saveItems(key), (item) => {\r\n\t\t\t\tmap[item.id] = item.value;\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tprivate buildUrl(path: string, data: { [id: string]: any; }): string {\r\n\t\tlet keys = Object.keys(data);\r\n\t\tif (keys.length) {\r\n\t\t\tpath = path + (path.indexOf(\"?\") < 0 ? \"?\" : \"&\") +\r\n\t\t\t\tkeys.map(k => `${encodeURIComponent(k)}=${encodeURIComponent(data[k])}`).join('&');\r\n\t\t}\r\n\r\n\t\treturn path;\r\n\t}\r\n}\r\n\r\nexport class ObjectSelectField extends SelectField {\r\n\ttargetId: number;\r\n\tdataUrl: string;\r\n\tallowAbstract: boolean;\r\n\tpendingIds: number[];\r\n\r\n\tconstructor(data: any, form: ObjectForm, multiple: boolean) {\r\n\t\tsuper(data, form, multiple, true);\r\n\r\n\t\tthis.targetId = (data.meta && data.meta.TargetId) || null;\r\n\t\tthis.dataUrl = (data.meta && data.meta.DataSourceUrl) || null;\r\n\t\tthis.allowAbstract = (data.meta && data.meta.AllowAbstract) || false;\r\n\t\tthis.pendingIds = [];\r\n\t}\r\n\r\n\twillValueChange(currentValue: any, newValue: any): boolean {\r\n\t\tif (this.isObject(currentValue) && this.isObject(newValue)) {\r\n\t\t\tlet x = currentValue as Option;\r\n\t\t\tlet y = newValue as Option;\r\n\r\n\t\t\tvar equal =\r\n\t\t\t\tx.id === y.id &&\r\n\t\t\t\tx.text === y.text &&\r\n\t\t\t\tx.targetFormId === y.targetFormId &&\r\n\t\t\t\tx.isAbstract === y.isAbstract;\r\n\r\n\t\t\tif (!equal) {\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\r\n\t\t\tif (y.target && !x.target) {\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\r\n\t\t\tif (y.values && !x.values) {\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\telse {\r\n\t\t\treturn super.willValueChange(currentValue, newValue);\r\n\t\t}\r\n\t}\r\n\r\n\tsaveItems(id: string): any[] {\r\n\t\tvar result = [];\r\n\r\n\t\tvar makeId = (key: string, index: number) => {\r\n\t\t\tif (this.multiple) {\r\n\t\t\t\treturn id + '[' + index + '].' + key;\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\treturn id + '.' + key;\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tvar i = this.items();\r\n\t\tif (i.length) {\r\n\t\t\t_.forEach(i, (x, n?: number) => {\r\n\t\t\t\t_.forEach(x, (value, key?: string) => {\r\n\t\t\t\t\tif (!_.isObject(value)) {\r\n\t\t\t\t\t\tresult.push({\r\n\t\t\t\t\t\t\tid: makeId(key, n),\r\n\t\t\t\t\t\t\tvalue: value\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t\t}\r\n\t\telse {\r\n\t\t\tresult.push({\r\n\t\t\t\tid: id,\r\n\t\t\t\tvalue: ''\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\tselectedItems(): Option[] {\r\n\t\tif (!this.options.length) {\r\n\t\t\treturn this.items();\r\n\t\t}\r\n\r\n\t\treturn super.selectedItems();\r\n\t}\r\n\r\n\titems(): any[] {\r\n\t\tvar x = this.value();\r\n\t\tif (x == null) return [];\r\n\r\n\t\tif (this.multiple && _.isArray(x)) {\r\n\t\t\treturn x\r\n\t\t}\r\n\t\telse if (_.isObject(x)) {\r\n\t\t\treturn [x];\r\n\t\t}\r\n\t\telse {\r\n\t\t\treturn [];\r\n\t\t}\r\n\t}\r\n\r\n\tload(x) {\r\n\t\tif (_.isNull(x) || _.isUndefined(x)) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\t\tif (_.isArray(x)) {\r\n\t\t\treturn _.filter(x, (e) => !_.isNull(e));\r\n\t\t}\r\n\t\treturn x;\r\n\t}\r\n\r\n\tparse(data) {\r\n\t\tif (_.isNull(data) || _.isUndefined(data)) {\r\n\t\t\tthis.value(null);\r\n\t\t}\r\n\t\telse if (this.isObject(data)) {\r\n\t\t\tthis.setValue(this.convertToOption(data));\r\n\t\t}\r\n\t\telse {\r\n\t\t\t//if the new value is a number that is equal to the current id\r\n\t\t\t//then return early to prevent trying to do a reference lookup\r\n\t\t\tif (_.isNumber(data)) {\r\n\t\t\t\tconst value = this.value();\r\n\t\t\t\tif (this.isObject(value) && value.id === data) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tvar options = this.getOptions(data);\r\n\t\t\tthis.setValue(options);\r\n\t\t}\r\n\t}\r\n\r\n\tisObject(data): boolean {\r\n\t\treturn _.isObject(data) && !_.isArray(data)\r\n\t}\r\n\r\n\tgetOptions(data): Option[] {\r\n\t\tvar options = super.getOptions(data);\r\n\r\n\t\t//we remove id's that are 0 for non abstract records because we treat 0 as null\r\n\t\toptions = options.filter(o => o.id + '' !== '0' || o.isAbstract);\r\n\r\n\t\tif (this.dataUrl && this.pendingIds.length) {\r\n\t\t\tthis.isUpdating(true);\r\n\r\n\t\t\tvar q = {\r\n\t\t\t\ti: this.form.dataId() || 0,\r\n\t\t\t\tids: this.pendingIds,\r\n\t\t\t\tn: this.pendingIds.length\r\n\t\t\t};\r\n\r\n\t\t\tvar map = {};\r\n\t\t\t_.each(options, x => map[this.getMapId(x.id)] = x);\r\n\r\n\t\t\tjQuery.post(\r\n\t\t\t\tappUrl(this.dataUrl),\r\n\t\t\t\tq\r\n\t\t\t)\r\n\t\t\t\t.done((result, _, __) => {\r\n\t\t\t\t\tvar resultMap = {};\r\n\r\n\t\t\t\t\tvar mapOptions = (values: Option[]) => {\r\n\t\t\t\t\t\tvalues.forEach(x => {\r\n\t\t\t\t\t\t\tif (x.id !== undefined) {\r\n\t\t\t\t\t\t\t\tresultMap[this.getMapId(x.id)] = x;\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\tif (x.children) {\r\n\t\t\t\t\t\t\t\tmapOptions(x.children);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tresult && mapOptions(result);\r\n\r\n\t\t\t\t\tthis.pendingIds.forEach(i => {\r\n\t\t\t\t\t\tvar id = this.getMapId(i);\r\n\t\t\t\t\t\tvar option = map[id];\r\n\r\n\t\t\t\t\t\tif (!option) {\r\n\t\t\t\t\t\t\treturn;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tvar resolved = resultMap[id];\r\n\t\t\t\t\t\tif (resolved) {\r\n\t\t\t\t\t\t\toption.text = resolved.text;\r\n\t\t\t\t\t\t\toption.values = resolved.values;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\telse {\r\n\t\t\t\t\t\t\tif (this.multiple) {\r\n\t\t\t\t\t\t\t\tthis.value(options.filter(x => x.id !== id));\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\telse {\r\n\t\t\t\t\t\t\t\tif (this.allowAbstract) {\r\n\t\t\t\t\t\t\t\t\tthis.value(makeAbstractOption(id));\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\telse {\r\n\t\t\t\t\t\t\t\t\tthis.value(null);\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tthis.value.valueHasMutated();\r\n\t\t\t\t})\r\n\t\t\t\t.fail((xhr, _, __) => {\r\n\t\t\t\t\tthis.updateError(xhr.responseText);\r\n\t\t\t\t})\r\n\t\t\t\t.always(() => {\r\n\t\t\t\t\tthis.pendingIds = [];\r\n\t\t\t\t\tthis.isUpdating(false);\r\n\t\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn options;\r\n\t}\r\n\r\n\tbuildOption(id): Option {\r\n\t\tif (!id) return null;\r\n\r\n\t\tif (_.isObject(id)) {\r\n\t\t\treturn this.convertToOption(id);\r\n\t\t}\r\n\r\n\t\tvar option: Option = {\r\n\t\t\tid: id,\r\n\t\t\ttext: this.dataUrl ? settings.strings.loadingMessage : id,\r\n\t\t\ttargetFormId: this.targetId\r\n\t\t};\r\n\r\n\t\tif (this.dataUrl) {\r\n\t\t\tthis.pendingIds.push(id);\r\n\t\t}\r\n\r\n\t\treturn option;\r\n\t}\r\n\r\n\tprivate convertToOption(data): Option {\r\n\t\tif (_.isFunction(data.dataId)) {\r\n\t\t\t//can't check for instance of object form as it could have been passed back\r\n\t\t\t//from a child window\r\n\t\t\tvar form = data;\r\n\t\t\tdata = form.toObjectOption();\r\n\t\t\tdata.targetFormId = data.targetFormId || this.targetId;\r\n\t\t}\r\n\t\telse if (_.isUndefined(data.targetFormId)) {\r\n\t\t\tdata.targetFormId = this.targetId;\r\n\t\t}\r\n\r\n\t\tdata.text = data.text || data.displayName || data.id;\r\n\r\n\t\treturn data;\r\n\t}\r\n}\r\n\r\nexport class ListItemForm extends ObjectForm {\r\n\tindex: Observable;\r\n\turl: string;\r\n\teditUrl: string;\r\n\tcloneUrl: string;\r\n\tcanRemove: boolean;\r\n\tcanMoveUp: Computed;\r\n\tcanMoveDown: Computed;\r\n\tisSelected: Computed;\r\n\tshowEditButton: boolean;\r\n\tshowViewButton: boolean;\r\n\tshowContextEditButton: boolean;\r\n\r\n\tonRevert: () => void;\r\n\r\n\tconstructor(data, index: number, list: List, useInitialValues?: boolean) {\r\n\t\tvar isLocked: boolean = data.isLocked || false;\r\n\t\tdata.canView = data.canView !== false;\r\n\r\n\t\t//new items are always editable (in edit mode) but existing items obey the rules\r\n\t\tdata.canEdit = !isLocked && (data.canEdit !== false);\r\n\t\tdata.editMode = data.canEdit && (_.isNumber(data.dataId) ? list.canEdit : list.canAdd);\r\n\r\n\t\tvar context = {\r\n\t\t\tlist: list,\r\n\t\t\tindex: index,\r\n\t\t\tuseInitialValues: useInitialValues || false\r\n\t\t};\r\n\r\n\t\tsuper(data, context);\r\n\r\n\t\tthis.shouldPost(list.shouldPost());\r\n\t\tlist.shouldPost.subscribe(value => this.shouldPost(value));\r\n\r\n\t\tthis.index = ko.observable(index);\r\n\t\tvar s = this.index.subscribe(() => {\r\n\t\t\t//ensure expressions are calculated when the index changes\r\n\t\t\tthis.hasChanges.notifySubscribers(this.hasChanges());\r\n\t\t\ts.dispose();\r\n\t\t});\r\n\r\n\t\tthis.editUrl = null;\r\n\t\tthis.url = null;\r\n\t\tthis.cloneUrl = null;\r\n\r\n\t\tfunction parseTokens(url: string): string {\r\n\t\t\treturn url\r\n\t\t\t\t.replace(\"{id}\", data.dataId)\r\n\t\t\t\t.replace(\"{formId}\", data.formId || list.prototype.formId)\r\n\t\t}\r\n\r\n\t\tif (_.isNumber(data.dataId)) {\r\n\t\t\tif (data.canEdit && list.editUrl) {\r\n\t\t\t\tthis.editUrl = parseTokens(list.editUrl);\r\n\t\t\t}\r\n\r\n\t\t\tif (data.canView && list.viewUrl) {\r\n\t\t\t\tthis.url = parseTokens(list.viewUrl);\r\n\t\t\t}\r\n\r\n\t\t\tif (data.canView && list.cloneUrl) {\r\n\t\t\t\tthis.cloneUrl = parseTokens(list.cloneUrl);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.showEditButton = this.editUrl && this.canEdit && list.canEditItems;\r\n\t\tthis.showViewButton = this.url && list.canViewItems;\r\n\t\tthis.showContextEditButton = (this.editMode && list.contextFormUrl) ? true : false;\r\n\r\n\t\tthis.canRemove = !isLocked && (data.canRemove !== false) && (list.canRemove || !_.isNumber(data.dataId));\r\n\r\n\t\tthis.isSelected = ko.computed(() => list.selections.contains(this));\r\n\r\n\t\tthis.canMoveUp = ko.computed(() => {\r\n\t\t\tvar index = this.index();\r\n\t\t\tvar items = this.list().items();\r\n\t\t\treturn this.editMode && (index > 0) && (index < items.length) && items[index - 1].editMode;\r\n\t\t});\r\n\r\n\t\tthis.canMoveDown = ko.computed(() => {\r\n\t\t\tvar index = this.index();\r\n\t\t\tvar items = this.list().items();\r\n\t\t\treturn this.editMode && (index < items.length - 1) && items[index + 1].editMode;\r\n\t\t});\r\n\r\n\t\tif (this.editMode && list.canOrderItems && list.orderField) {\r\n\t\t\tthis.index.subscribe((value) => {\r\n\t\t\t\tvar f = this.fields.map[this.list().orderField];\r\n\t\t\t\tf && f.value(value + 1);\r\n\t\t\t});\r\n\t\t\tthis.index.notifySubscribers(this.index());\r\n\t\t}\r\n\r\n\t\tif (list.selectMode) {\r\n\t\t\tfor (let f of this.mutableFields()) {\r\n\t\t\t\tif (f instanceof ScalarField && f.isCalculated()) {\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tf.hasChanges.subscribe(newValue => {\r\n\t\t\t\t\tif (newValue && !this.isSelected()) {\r\n\t\t\t\t\t\tthis.list().selectItem(this, true);\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tthis.isSelected.subscribe(() => this.validate());\r\n\r\n\t\t\tconst state = this.state;\r\n\t\t\tthis.state =\r\n\t\t\t\tko.computed(() => {\r\n\t\t\t\t\tif (this.isSelected()) {\r\n\t\t\t\t\t\treturn state();\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t\treturn FormState.Unmodified;\r\n\t\t\t\t\t}\r\n\t\t\t\t})\r\n\t\t\t\t.extend({ notify: 'always' });\r\n\r\n\t\t\tthis.validate();\r\n\t\t}\r\n\t}\r\n\r\n\tpublic list(): List {\r\n\t\treturn (this.context.list);\r\n\t}\r\n\r\n\tonInitialize() {\r\n\t\tif (!this.context.useInitialValues) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tfor (let field of this.fields.scalar) {\r\n\t\t\tif (field.id == this.list().relationship) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tconst useInitialValue = (_.isNull(field.originalValue) || field.originalValue === '') && !_.isNull(field.initialValue);\r\n\r\n\t\t\tif (useInitialValue) {\r\n\t\t\t\tfield.reset(field.initialValue, field.initialValue);\r\n\t\t\t}\r\n\t\t\telse if (field.initialValueExpression) {\r\n\t\t\t\tvar c = field.compileInitialValueExpression();\r\n\r\n\t\t\t\tif (c != null) {\r\n\t\t\t\t\tvar s = c.subscribe((value) => {\r\n\t\t\t\t\t\tif (field.expressionsEnabled() && !field.isUpdating()) {\r\n\t\t\t\t\t\t\tif (!field.expressionError()) {\r\n\t\t\t\t\t\t\t\tfield.reset(value, value);\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\tko.tasks.runEarly();\r\n\t\t\t\t\t\t\ts.dispose();\r\n\t\t\t\t\t\t\tc.dispose();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tlet errorHandler = field.expressionError.subscribe(error => {\r\n\t\t\t\t\t\tfield.customError(`${settings.strings.expressionError}: ${error}`);\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tc.notifySubscribers(c());\r\n\r\n\t\t\t\t\tif (this.enableExpressions()) {\r\n\t\t\t\t\t\tthis.whenIdle(() => {\r\n\t\t\t\t\t\t\terrorHandler.dispose();\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t\tlet onExecuted = this.enableExpressions.subscribe(enabled => {\r\n\t\t\t\t\t\t\tif (enabled) {\r\n\t\t\t\t\t\t\t\tthis.whenIdle(() => {\r\n\t\t\t\t\t\t\t\t\terrorHandler.dispose();\r\n\t\t\t\t\t\t\t\t\tonExecuted.dispose();\r\n\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t};\r\n\t}\r\n\r\n\tselect(command?: Command) {\r\n\t\tvar list = this.list();\r\n\t\tlist.selectItem(this, true);\r\n\t\tlist.select(command);\r\n\t}\r\n\r\n\tqualifyId(id: string, pageUnique?: boolean) {\r\n\t\tvar list = this.list();\r\n\r\n\t\tvar qualifyId = list.qualifier + '[' + this.getIndex() + '].' + id;\r\n\t\tif (pageUnique) {\r\n\t\t\treturn list.queryId + '.' + qualifyId;\r\n\t\t}\r\n\t\telse {\r\n\t\t\treturn qualifyId;\r\n\t\t}\r\n\t}\r\n\r\n\tmoveUp() {\r\n\t\tif (!this.canMoveUp()) return;\r\n\r\n\t\tvar list = this.list();\r\n\t\tvar index = this.index();\r\n\t\tvar item = list.items.remove(this)[0];\r\n\t\tlist.items.splice(index - 1, 0, item);\r\n\t}\r\n\r\n\tmoveDown() {\r\n\t\tif (!this.canMoveDown()) return;\r\n\r\n\t\tvar list = this.list();\r\n\t\tvar index = this.index();\r\n\t\tvar item = list.items.remove(this)[0];\r\n\t\tlist.items.splice(index + 1, 0, item);\r\n\t}\r\n\r\n\tremove() {\r\n\t\tthis.revert();\r\n\t\tthis.list().remove(this);\r\n\t}\r\n\r\n\trestore() {\r\n\t\tthis.isRemoved(false);\r\n\t}\r\n\r\n\tsnapshot(map, excludeTargets?: boolean) {\r\n\t\tsuper.snapshot(map, excludeTargets);\r\n\r\n\t\tvar list = this.list();\r\n\t\tif (list.relationship && list.relationshipTarget) {\r\n\t\t\t//synthesize the parent relationship\r\n\t\t\tmap[list.relationship + '.Id'] = list.relationshipTarget.dataId();\r\n\r\n\t\t\tif (!(excludeTargets === true)) {\r\n\t\t\t\tvar targetMap: _.Dictionary = {};\r\n\t\t\t\tlist.relationshipTarget.snapshot(targetMap);\r\n\t\t\t\t_.each(targetMap, (value, key?: string) => {\r\n\t\t\t\t\tmap[list.relationship + '.Target.' + key] = value;\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tsnapshotFilter(map, forPost: boolean) {\r\n\t\tsuper.snapshotFilter(map, forPost);\r\n\r\n\t\tvar list = this.list();\r\n\t\tif (list.relationship && list.relationshipTarget) {\r\n\t\t\t//synthesize the parent relationship\r\n\t\t\tmap['q.' + list.relationship + '.Id'] = list.relationshipTarget.dataId();\r\n\r\n\t\t\tif (forPost) {\r\n\t\t\t\tvar targetMap: _.Dictionary = {};\r\n\t\t\t\tlist.relationshipTarget.snapshot(targetMap);\r\n\t\t\t\t_.each(targetMap, (value, key?: string) => {\r\n\t\t\t\t\tmap['q.' + list.relationship + '.Target.' + key] = value;\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tgetIndex() {\r\n\t\t//index may be needed before the index observable is available\r\n\t\treturn this.index ? this.index() : this.context.index;\r\n\t}\r\n\r\n\tposition(): number {\r\n\t\treturn this.getIndex() + this.list().pager.start();\r\n\t}\r\n\r\n\tlookup(resultField: Field, targetFieldId: string, property?: string, forComputedValue: boolean = false): any {\r\n\t\tif (!resultField) return null;\r\n\r\n\t\tvar list = this.list();\r\n\t\tif (targetFieldId == list.relationship) {\r\n\t\t\tvar targetForm = list.relationshipTarget;\r\n\r\n\t\t\tif (!targetForm) return null;\r\n\r\n\t\t\tif (property) {\r\n\t\t\t\t//lookup the property on the relationship form\r\n\t\t\t\tvar parts = property.split('.');\r\n\t\t\t\tvar fieldId = parts.shift();\r\n\t\t\t\tvar subProperty = parts.join('.');\r\n\r\n\t\t\t\tresultField.computedValueTargetsParent = forComputedValue;\r\n\r\n\t\t\t\treturn targetForm.lookup(resultField, fieldId, subProperty, forComputedValue);\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\t//synthesise an object that represents the relationship form\r\n\t\t\t\tvar option = targetForm.toObjectOption();\r\n\t\t\t\toption.target = {};\r\n\r\n\t\t\t\tfor (let [id, field] of Object.entries(this.fields.map)) {\r\n\t\t\t\t\toption.target[id] = field.value();\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn option;\r\n\t\t\t}\r\n\t\t}\r\n\t\telse {\r\n\t\t\treturn super.lookup(resultField, targetFieldId, property, forComputedValue);\r\n\t\t}\r\n\t}\r\n\r\n\tcontextEdit() {\r\n\t\tif (!this.showContextEditButton) return;\r\n\r\n\t\tthis.list().showContextForm(this, (contextForm) => {\r\n\t\t\tthis.mergeValues(contextForm);\r\n\t\t});\r\n\t}\r\n\r\n\tvalidate(): boolean {\r\n\t\tlet isUnselected = this.list().selectMode && this.isSelected && !this.isSelected();\r\n\r\n\t\tif (this.errors().length == 0 && (!this.editMode || isUnselected)) {\r\n\t\t\t//read only and unselected rows are always valid unless there are row level errors\r\n\t\t\tfor (let f of this.fields.all) {\r\n\t\t\t\tf.isValid(true);\r\n\t\t\t}\r\n\r\n\t\t\tthis.validationSummary([]);\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\telse {\r\n\t\t\treturn super.validate();\r\n\t\t}\r\n\t}\r\n\r\n\trevert() {\r\n\t\tsuper.revert();\r\n\r\n\t\tif (this.list().selectMode) {\r\n\t\t\tthis.validate();\r\n\t\t}\r\n\r\n\t\tthis.onRevert && this.onRevert();\r\n\t}\r\n}\r\n\r\nexport class FilterForm extends ObjectForm {\r\n\tlist: List;\r\n\thasVisibleFilter: Computed;\r\n\thasUserFilter: Observable;\r\n\r\n\tconstructor(data, list: List) {\r\n\t\tdata.editMode = true;\r\n\t\tsuper(data);\r\n\r\n\t\tthis.list = list;\r\n\r\n\t\tthis.hasVisibleFilter = ko.computed(() => {\r\n\t\t\tvar hasVisibleFilter = false;\r\n\r\n\t\t\tfor (let field of this.fields.scalar) {\r\n\t\t\t\thasVisibleFilter = hasVisibleFilter || (field.isVisible() && !field.isNull());\r\n\t\t\t}\r\n\r\n\t\t\treturn hasVisibleFilter;\r\n\t\t});\r\n\r\n\t\tthis.hasUserFilter = ko.observable(data.hasUserFilter ?? false);\r\n\t}\r\n\r\n\tqualifyId(id: string) {\r\n\t\treturn 'q.' + id;\r\n\t}\r\n\r\n\tsnapshot(map) {\r\n\t\tvar filterMap: _.Dictionary = {};\r\n\r\n\t\tfor (let f of this.fields.scalar) {\r\n\t\t\tf.snapshot(filterMap, true);\r\n\t\t}\r\n\r\n\t\t_.each(filterMap, (value, key?: string, object?: Object) => {\r\n\t\t\tmap[this.qualifyId(key)] = value;\r\n\t\t});\r\n\t}\r\n\r\n\tclear() {\r\n\t\tif (this.list.assertNoChanges()) {\r\n\t\t\tfor (let field of this.fields.scalar) {\r\n\t\t\t\tif (field.isVisible()) {\r\n\t\t\t\t\tfield.value(null);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tthis.list.initialized(false);\r\n\t\t}\r\n\t}\r\n\r\n\tsearch() {\r\n\t\tko.tasks.runEarly();\r\n\r\n\t\tif (this.list.assertNoChanges() && this.validate()) {\r\n\t\t\tthis.list.pager.offset(0);\r\n\t\t\tthis.list.load();\r\n\t\t}\r\n\t}\r\n\r\n\tsaveUserFilter() {\r\n\t\tlet filter = {};\r\n\t\tthis.list.filter.snapshotFilter(filter, true, '', false);\r\n\t\tsaveUserFilter(UserFilterType.List, this.list.queryId, filter, () => this.hasUserFilter(true));\r\n\t}\r\n\r\n\tclearUserFilter() {\r\n\t\tclearUserFilter(UserFilterType.List, this.list.queryId, () => this.hasUserFilter(false));\r\n\t}\r\n}\r\n\r\ninterface ListPrototypeData {\r\n\tdataId;\r\n\tformId?;\r\n\tkey?;\r\n\tparentKey?;\r\n\tidProperty;\r\n\tdisplayName: string;\r\n\tcloneUrl?;\r\n\tactiveUrl;\r\n\tactiveCreateArgument?;\r\n\tisLocked;\r\n\tisArchived;\r\n\tcanEdit?;\r\n\tcanView?;\r\n\tcanRemove?;\r\n\tlinksDisabled?;\r\n\tfields: { [id: string]: any; };\r\n\terrors?: { [id: string]: string; };\r\n\tactiveOperations?: Instruction[];\r\n}\r\n\r\ninterface ListItemData {\r\n\tid: string;\r\n\tformId?: number;\r\n\tkey?: string;\r\n\tparentKey?: string;\r\n\tdisplayName: string;\r\n\tcloneUrl?: string;\r\n\tisLocked: boolean;\r\n\tisArchived: boolean;\r\n\tcanEdit?: boolean;\r\n\tcanView?: boolean;\r\n\tcanRemove?: boolean;\r\n\tvalues: { [id: string]: any; };\r\n\terrors?: { [id: string]: string; };\r\n\tactiveOperations?: Instruction[];\r\n}\r\n\r\ninterface ListResult {\r\n\terror?: string;\r\n\ttotal: number;\r\n\titems: ListItemData[];\r\n\taggregates?: { [id: string]: AggregateResults; };\r\n}\r\n\r\ninterface ListRequest {\r\n\turl: string;\r\n\tdata?: any;\r\n}\r\n\r\ninterface AggregateResults {\r\n\tsum: number;\r\n}\r\n\r\nclass ListSelections {\r\n\titems = ko.observableArray