Code: Select all
REPLACE INTO `zzzzsys_form` (`zzzzsys_form_id`, `sfo_type`, `sfo_code`, `sfo_description`, `sfo_group`, `sfo_breadcrumb_title`, `sfo_table`, `sfo_primary_key`, `sfo_browse_redirect_form_id`, `sfo_browse_row_height`, `sfo_browse_rows_per_page`, `sfo_browse_title_multiline`, `sfo_browse_autoresize_columns`, `sfo_browse_sql`, `sfo_javascript`, `sfo_browse_javascript`, `sfo_edit_javascript`, `sfo_style`, `sfo_mobile_view`, `sfo_json`) VALUES ('nuobject', 'browseedit', 'nuobject', 'Objects', NULL, '#sob_all_id#|New', 'zzzzsys_object', 'zzzzsys_object_id', '', '0', '0', '1', NULL, 'SELECT * FROM zzzzsys_object\r\nJOIN #TABLE_ID# ON zzzzsys_object_id = theid\r\nJOIN zzzzsys_tab ON zzzzsys_tab_id = sob_all_zzzzsys_tab_id\r\nJOIN zzzzsys_form ON zzzzsys_form_id = syt_zzzzsys_form_id \r\n\r\nWHERE (\r\n (sob_all_type = \'#nuBrowseTitle0_select#\' OR \'#nuBrowseTitle0_select#\' = \'\' OR \'#nuBrowseTitle0_select#\' LIKE \'#%\' )\r\n AND\r\n (sob_input_type = \'#nuBrowseTitle1_select#\' OR \'#nuBrowseTitle1_select#\' = \'\' OR \'#nuBrowseTitle1_select#\' LIKE \'#%\' )\r\n)\r\n\r\nORDER BY sfo_description, sob_input_type, sob_all_id', NULL, 'var a = [[\"\",\"\"],[\"calc\",\"Calc\"],[\"display\",\"Display\"],[\"contentbox\",\"ContentBox\"],[\"editor\",\"WYSIWYG Editor\"],[\"html\",\"HTML\"],[\"image\",\"Image\"],[\"input\",\"Input\"],[\"lookup\",\"Lookup\"],[\"run\",\"Run\"],[\"select\",\"Select\"],[\"subform\",\"Subform\"],[\"textarea\",\"Textarea\"],[\"word\",\"Word\"]];\r\nnuAddBrowseTitleSelect(0, a);\r\n\r\n$(\'#nuBrowseTitle9_select\').parent().off(\"touchstart\");\r\n\r\na = [[\"\",\"\"],[\"nuDate\",\"nuDate\"],[\"nuNumber\",\"nuNumber\"],[\"nuScroll\",\"nuScroll\"],[\"nuAutoNumber\",\"nuAutoNumber\"],[\"button\",\"Button\"],\r\n [\"checkbox\",\"Checkbox\"],[\"color\",\"Color\"],[\"datetime-local\",\"Datetime-Local\"],[\"email\",\"Email\"],[\"file\",\"File\"],\r\n [\"image\",\"Image\"],[\"month\",\"Month\"],[\"number\",\"Number\"],[\"password\",\"Password\"],[\"radio\",\"Radio\"],[\"range\",\"Range\"],\r\n [\"reset\",\"Reset\"],[\"search\",\"Search\"],[\"tel\",\"Telephone\"],[\"text\",\"Text\"],[\"time\",\"Time\"],[\"url\",\"URL\"],[\"week\",\"Week\"]];\r\n\r\nnuAddBrowseTitleSelect(1, a);\r\n$(\'#nuBrowseTitle1_select\').parent().off(\"touchstart\");\r\n\r\n$(\"[data-nu-column=\'0\']\").each(function() {\r\n $(this).addClass(\'nu_\' + this.textContent).addClass(\'nuCellColored\');\r\n});\r\n\r\n\r\n$(\"[data-nu-column=\'4\']\").each(function() {\r\n $(this).html(stripHTMLTags($(this).html()).replace(/ /g, \' \').trim());\r\n});\r\n\r\n\r\nfunction stripHTMLTags(s) {\r\n return s == \'\' ? \'\' : s.replace(/<\\/?[^>]+(>|$)/g, \"\");\r\n}\r\n', 'if (! nuDevMode()) {\r\n nuHideTabById(\'nu61e9964c9bf5e13\'); // JSON\r\n}\r\n\r\n// Code Snippets form\r\nnuSetSnippetFormFilter(0, 0, 1, 0); // SQL\r\n\r\nnuHide(\'sob_code_snippet_display_lookupcode\');\r\nnuHide(\'sob_code_snippet_select_lookupcode\');\r\nnuHide(\'label_zzzzsys_event_sf\');\r\nnuHide(\'label_sob_html_code\');\r\nnuShow(\'sob_run_zzzzsys_form_open_button\', sob_run_zzzzsys_form_id.value !== \'\');\r\nnuShow(\'sob_lookup_zzzzsys_form_open_button\', sob_lookup_zzzzsys_form_id.value !== \'\');\r\nnuObjectDisplayInputIcon();\r\nnuObjectDisplayAccessCondition();\r\nnuObjectProcedureChanged();\r\n\r\nnuDisable(\'sob_calc_formula\');\r\nnuSetToolTip(\'sob_all_id_create_button\', nuTranslate(\'Add database column\'));\r\n\r\nwindow.parentTabs = parent.$(\'.nuTab\');\r\n\r\n\r\nvar tabIdDescLeft = $(\'#sob_all_zzzzsys_tab_iddescription\').nuCSSNumber(\'left\') + 11;\r\n$(\'#sob_all_zzzzsys_tab_iddescription\').css(\'left\', tabIdDescLeft + \'px\');\r\n\r\n$(\'#zzzzsys_event_sfsev_javascript\').attr(\'id\', \'jsfuntitle\');\r\n$(\'#sob_calc_formula\').addClass(\'nuCalculatorCurrency\').css(\'font-size\', \'12px\');\r\n$(\'#sob_all_display_condition\').addClass(\'sql\');\r\n$(\'#sob_all_default_value_sql\').addClass(\'sql\');\r\n$(\'#sob_display_sql\').addClass(\'sql\');\r\n$(\'#sob_input_datalist\').addClass(\'sql\');\r\n$(\'#sob_select_sql\').addClass(\'sql\');\r\n$(\'#sob_lookup_javascript\').addClass(\'js\');\r\n$(\'#sob_input_javascript\').addClass(\'js\');\r\n$(\'#sob_html_javascript\').addClass(\'js\');\r\n$(\'#sob_lookup_php\').addClass(\'php\');\r\n$(\'#sob_html_code\').addClass(\'html\');\r\n$(\'#sob_all_style\').addClass(\'css\');\r\n$(\'#sob_input_attribute\').addClass(\'css\');\r\n$(\"[id$=\'sev_javascript\']\").addClass(\'js\');\r\n$(\"#title_zzzzsys_event_sfsev_javascript\").removeClass(\'js\');\r\n$(\'#sob_run_zzzzsys_form_open_button\').toggleClass(\'input_button nuButton nuLookupButton\');\r\n$(\'#sob_lookup_zzzzsys_form_open_button\').toggleClass(\'input_button nuButton nuLookupButton\');\r\n$(\'#sob_subform_zzzzsys_form_open_button\').toggleClass(\'input_button nuButton nuLookupButton\');\r\n$(\'#sob_all_type_open_button\').toggleClass(\'input_button nuButton nuLookupButton\');\r\n\r\nnuObjectPreviewIcon(\'sob_input_icon_preview_html\', nuGetValue(\'sob_input_icon\'));\r\n\r\n\r\nvar placeholderText = `1. SQL: A valid SQL query that returns 2 columns:\r\nSELECT table_id, description FROM table\r\n\r\nOr:\r\n\r\n2. List: A list delimited by a |:\r\n1|First|\r\n2|Second|\r\n3|Third\r\n\r\nOr:\r\n\r\n3. JSON/Array: if both the display and the bound value are identical:\r\n\r\n[\"value1\", \"value1\", \"value1\"]\r\n`;\r\n\r\n$(\'#sob_select_sql\').on(\'focus\', function() {\r\n $(this).prop(\'placeholder\', placeholderText);\r\n}).on(\'blur\', function() {\r\n $(this).prop(\'placeholder\', \'\');\r\n});\r\n\r\n$(\'#nuTab8\').on(\'click\', function() {\r\n nuObjectTestChart();\r\n});\r\n\r\nnuAttachButtonImage(\'icon_lujs\', \'LUJS\');\r\nnuAttachButtonImage(\'icon_html\', \'HTML\');\r\nnuAttachButtonImage(\'ab_event\', \'AB\', \'nuButtonImageSmall\');\r\n// nuAttachButtonImage(\'di_sql\', \'SQL\',\'nuButtonImageSmall\');\r\n// nuAttachButtonImage(\'se_sql\', \'SQL\',\'nuButtonImageSmall\');\r\n\r\n$(\'#viewflowchart\')\r\n.css(\'padding\', \'46px 0px 0px 3px\')\r\n.css(\'text-align\', \'left\')\r\n.css(\'background-size\', \'75px\');\r\n\r\n\r\nif ($(\'#zzzzsys_event_sf000sev_event\').val() !== \'\') {\r\n $(\'#nuTab10\').css(\'font-weight\', \'bold\');\r\n}\r\n\r\nnuObjectInputTypeChanged(nuGetValue(\'sob_input_type\'));\r\nnuObjectHideCalcObjects();\r\nnuObjectPopulateHTML();\r\nnuObjectAddDataListToRunId();\r\n\r\n$(\"button[id*=\'_btn_\']\").addClass(\'nuQuickButton\').removeClass(\'input_button nuButton\');\r\n\r\nvar filter = String(window.filter).split(\'|\');\r\n\r\nif (filter[0] == \'fromfastform\') {\r\n\r\n $(\'#nuDeleteButton\').remove();\r\n $(\'#nuCloneButton\').remove();\r\n $(\'#nuSaveButton\').remove();\r\n $(\'#sob_all_id\').val(filter[1]).addClass(\'nuHighlight\');\r\n $(\'#sob_all_label\').val(filter[2]).addClass(\'nuHighlight\');\r\n\r\n}\r\n\r\nnuACEInitDblClickHandlers();\r\n\r\nnuHide(\'sob_input_format\');\r\nvar sit = nuGetValue(\'sob_input_type\');\r\nnuShow(\'sob_input_format\', sit == \'nuDate\' || sit == \'nuNumber\');\r\nnuShow(\'sob_input_javascript\', sit == \'nuScroll\');\r\n\r\nnuObjectColor();\r\nnuGetStartingTab();\r\n\r\n\r\nif (!nuIsNewRecord()) {\r\n\r\n nuObjectMaximiseParentifDragOptionsBox();\r\n nuObjectDisplayIncHeightButtons();\r\n nuObjectShowDataType();\r\n\r\n} else {\r\n\r\n nuSetValue(\'sob_all_top\', 0);\r\n nuSetValue(\'sob_all_left\', 60);\r\n nuSetValue(\'sob_all_height\', 22);\r\n nuSetValue(\'sob_all_width\', 100);\r\n nuSetValue(\'sob_all_validate\', 0);\r\n nuSetValue(\'sob_all_access\', 0);\r\n nuSetValue(\'sob_all_align\', \'left\');\r\n nuSetValue(\'sob_all_cloneable\', \'1\');\r\n\r\n nuHide(\'sob_all_type_open_button\');\r\n nuHide(\'sob_all_type_input\');\r\n nuHide(\'sob_all_id_create_button\');\r\n\r\n if (nuIsIframe()) {\r\n let pTab = nuSelectedTabId(parent);\r\n if (pTab !== null) {\r\n nuGetLookupId(pTab, \'sob_all_zzzzsys_tab_id\', false);\r\n } else {\r\n if (nuGetValue(\'sob_all_zzzzsys_tab_id\') === \'\' && parent.nuCurrentProperties().form_code == \'nuuserhome\') {\r\n nuGetLookupId(\'nufastforms\', \'sob_all_zzzzsys_tab_id\', false);\r\n }\r\n }\r\n $(\'#sob_all_label\').trigger(\"focus\");\r\n nuSetValue(\'sob_all_type\', \'input\');\r\n nuSetValue(\'sob_input_type\', \'text\');\r\n }\r\n\r\n}\r\n\r\nnuObjectUpdateLookupDescriptionDatalist();\r\nnuObjectUpdateIdDatalist();\r\nnuObjectRunMethodChanged();\r\nnuHasNotBeenEdited();\r\n\r\n\r\nfunction nuObjectMaximiseParentifDragOptionsBox() {\r\n\r\n let db = parent.parent.$(\'.nuDragOptionsBox\');\r\n if (db.length === 0) return;\r\n\r\n let dd = db.parent(); // nuDragDialog\r\n let l = parseInt(dd.css(\'left\'), 10);\r\n\r\n if (l == 2) return; // already maximised\r\n\r\n let dt = db.nextAll(\'.nuDialogTitle\').find(\'#dialogTitleWords\');\r\n if (dt.length !== 0) {\r\n var e = {\r\n target: {\r\n id: \"dialogTitleWords\"\r\n }}\r\n parent.parent.nuResizeWindow(e);\r\n }\r\n\r\n}\r\n\r\nfunction nuObjectColumnDataType(table, id) {\r\n\r\n let s = nuFORM.tableSchema[table];\r\n let i = -1;\r\n if (typeof s !== \"undefined\") {\r\n i = s.names.indexOf(id.val());\r\n }\r\n\r\n return i > -1 ? s.types[i]: \'\';\r\n\r\n}\r\n\r\nfunction nuObjectShowDataType() {\r\n\r\n let id = $(\'#sob_all_id\');\r\n let iDataType = $(\'#sob_all_id_datatype\');\r\n\r\n let table = nuGetValue(\"sob_all_table\");\r\n let dataType = \'\';\r\n\r\n if (table !== \'\' && id.val() !== \'\') {\r\n dataType = nuObjectColumnDataType(table, id);\r\n\r\n }\r\n\r\n iDataType.val(dataType);\r\n nuObjectDisplayCreateButton();\r\n\r\n}\r\n\r\nfunction nuObjectObjectNoId() {\r\n return [\'word\',\r\n \'html\',\r\n \'button\',\r\n \'run\',\r\n \'subform\',\r\n \'contentbox\'].indexOf(nuGetValue(\'sob_all_type\')) !== -1;\r\n}\r\n\r\nfunction nuObjectDisplayCreateButton() {\r\n\r\n let dataType = nuObjectColumnDataType(nuGetValue(\"sob_all_table\"), $(\'#sob_all_id\'));\r\n nuShow(\'sob_all_id_create_button\', dataType === \'\' && nuGetValue(\'sob_all_id\') !== \'\' && nuGetValue(\'sob_all_table\') !== \'\' && !nuObjectObjectNoId());\r\n\r\n}\r\n\r\nfunction nuObjectDisplayIncHeightButtons() {\r\n\r\n var showButtons = [\'html\',\r\n \'textarea\',\r\n \'subform\',\r\n \'image\',\r\n \'contentbox\'].indexOf(nuGetValue(\'sob_all_type\')) !== -1;\r\n\r\n $(\'[id^=sob_height_btn_set]\').nuShow(showButtons);\r\n}\r\n\r\n\r\nfunction nuObjectTestChart() {\r\n\r\n let g = nuGetValue(\'sob_html_chart_type\');\r\n\r\n if (g === \'\' || nuGetValue(\'sob_all_type\') !== \'html\') {\r\n $(\'#google_chart\').html(\'\');\r\n return;\r\n }\r\n\r\n let c = \'ComboChart\';\r\n let t = nuGetValue(\'sob_html_title\');\r\n let x = nuGetValue(\'sob_html_vertical_label\');\r\n let y = nuGetValue(\'sob_html_horizontal_label\');\r\n let l = \'bars\';\r\n let s = false;\r\n\r\n let a = [\r\n [\'Month\',\r\n \'Shane\',\r\n \'Dave\',\r\n \'Adam\',\r\n \'Paul\',\r\n \'Chris\'],\r\n [\'2019\',\r\n 100,\r\n 200,\r\n 300,\r\n 400,\r\n 500],\r\n [\'2020\',\r\n 165,\r\n 238,\r\n 322,\r\n 498,\r\n 550],\r\n [\'2021\',\r\n 165,\r\n 938,\r\n 522,\r\n 998,\r\n 450],\r\n [\'2022\',\r\n 135,\r\n 1120,\r\n 599,\r\n 1268,\r\n 288]\r\n ];\r\n\r\n if (g == \'p\') c = \'PieChart\';\r\n if (g == \'l\') l = \'lines\';\r\n if (g == \'bh\') c = \'BarChart\';\r\n if (g == \'bhs\') c = \'BarChart\';\r\n if (g == \'bs\') s = true;\r\n if (g == \'bhs\') s = true;\r\n\r\n nuChart(\'google_chart\', c, a, t, x, y, l, s);\r\n\r\n}\r\n\r\nfunction nuObjectChartOnReady(i, wrapper) {\r\n // let wrapper = window[\"google_chart_wrapper\"];\r\n var options = {\r\n seriesType: wrapper.m.seriesType,\r\n chartArea: {\r\n left: \"10%\",\r\n width: \"65%\"\r\n }\r\n };\r\n wrapper.setOptions(options);\r\n wrapper.draw();\r\n}\r\n\r\nfunction nuObjectAddDataListToRunId() {\r\n\r\n let arrRecordId = [\r\n [\" \",\r\n nuTranslate(\"Leave blank to open a Browse or Launch Form\")],\r\n [\"-1\",\r\n nuTranslate(\"Open a new Record\")],\r\n [\"#EXAMPLE_HASH_COOKIE#\",\r\n nuTranslate(\"Use a Hash Cookie\")]\r\n ];\r\n\r\n nuAddDatalist(\'sob_run_id\', arrRecordId);\r\n\r\n $(\'#sob_run_id\').on(\'input\', function() {\r\n if ($(this).val() == \' \') {\r\n $(this).val(\'\').change();\r\n }\r\n\r\n });\r\n\r\n}\r\n\r\nfunction nuObjectColor() {\r\n\r\n $(\'.nuValidate\').removeClass(\'nuValidate\');\r\n\r\n let e = $(\'#sob_all_type\').hasClass(\'nuEdited\');\r\n let o = [];\r\n\r\n o.run = 1;\r\n o.display = 2;\r\n o.select = 3;\r\n o.lookup = 4;\r\n o.subform = 5;\r\n o.image = 6;\r\n o.input = 7;\r\n o.html = 8;\r\n o.calc = 9;\r\n\r\n $(\'#sob_all_type\').removeClass();\r\n\r\n if (e) {\r\n //-- keep class if edited\r\n $(\'#sob_all_type\').addClass(\'nuEdited\');\r\n }\r\n\r\n $(\'#sob_all_type\').addClass(\'nu_\'+$(\'#sob_all_type\').val());\r\n\r\n $(\"#sob_all_type > option\").each(function() {\r\n $(this).addClass(\'nu_\'+this.value);\r\n });\r\n\r\n let t = o[$(\'#sob_all_type\').val()];\r\n\r\n $(\"[id^=\'nuTab\']\").removeClass(\'nuRelatedTab\');\r\n\r\n for (let i = 1; i < o.length; i++) {\r\n $(\'#nuTab\' + i).removeClass(\'nuRelatedTab\');\r\n }\r\n\r\n $(\'#nuTab0\').addClass(\'nuRelatedTab\');\r\n $(\'#nuTab\' + t).addClass(\'nuRelatedTab\');\r\n\r\n}\r\n\r\n\r\nfunction nuObjectDisplayAllTypeInput() {\r\n\r\n let v = nuGetValue(\'sob_input_type\', \'text\');\r\n v = nuGetValue(\'sob_all_type\') == \'input\' ? v: \'\';\r\n $(\'#sob_all_type_input\').val(v);\r\n\r\n}\r\n\r\nfunction nuObjectTypeChanged() {\r\n\r\n nuShow(\'sob_all_type_open_button\', sob_all_type.value !== \'\');\r\n nuShow(\'sob_all_type_input\', sob_all_type.value !== \'\');\r\n\r\n nuObjectColor();\r\n nuObjectDisplayCreateButton();\r\n nuObjectDisplayIncHeightButtons();\r\n nuObjectDisplayAllTypeInput();\r\n nuObjectDisplayInputIcon();\r\n\r\n}\r\n\r\nfunction nuObjectInputTypeChanged(t) {\r\n\r\n nuHide(\'sob_input_format\');\r\n nuHide(\'sob_input_count\');\r\n nuHide(\'sob_input_javascript\');\r\n nuHide(\'sob_input_datalist\');\r\n nuHide(\'sob_input_file_target\');\r\n\r\n\r\n if (t == \'nuScroll\') {\r\n nuShow(\'sob_input_javascript\');\r\n }\r\n\r\n if (t == \'file\') {\r\n nuShow(\'sob_input_file_target\');\r\n\r\n if (nuGetValue(\'sob_input_file_target\') == \'\') {\r\n nuSetValue(\'sob_input_file_target\', \'0\');\r\n }\r\n\r\n nuObjectFileUploadScript();\r\n }\r\n\r\n if (t == \'nuAutoNumber\') {\r\n\r\n nuShow(\'sob_input_count\');\r\n $(\'#sob_input_javascript\').val(\'\').addClass(\'nuEdited\');\r\n\r\n }\r\n\r\n if (t == \'nuDate\' || t == \'nuNumber\' || t == \'number\' || t == \'text\' || t == \'email\' || t == \'search\' || t == \'month\') {\r\n nuShow(\'sob_input_datalist\');\r\n if ($(\'#sob_input_datalist\').val() == \'\' && $(\'#sob_all_id_datatype\').val() !== \'\') {\r\n // $(\'#sob_input_datalist\').val(\"SELECT DISTINCT `\" + $(\"#sob_all_id\").val() + \"` FROM `\" + $(\'#sob_all_table\').val() + \"` ORDER BY 1\").change();\r\n }\r\n }\r\n\r\n if (t == \'nuDate\' || t == \'nuNumber\') {\r\n\r\n nuShow(\'sob_input_format\');\r\n\r\n $(\'#sob_input_format\').children().each(function(index) {\r\n\r\n $(this).show();\r\n\r\n if ($(this).val()[0] == \'D\' && t != \'nuDate\') {\r\n $(this).hide();\r\n }\r\n if ($(this).val()[0] == \'N\' && t != \'nuNumber\') {\r\n $(this).hide();\r\n }\r\n\r\n });\r\n\r\n nuSetProperty(\'NUFORMATGETDEFAULT_INPUTTYPE\', nuGetValue(\'sob_input_type\').slice(2));\r\n nuRunPHPHidden(\'NUFORMATGETDEFAULT\');\r\n \r\n\r\n\r\n }\r\n\r\n nuObjectDisplayInputIcon();\r\n nuObjectDisplayAllTypeInput();\r\n\r\n}\r\n\r\nfunction nuSetDefaultFormat(format) {\r\n if (format !== \'\' && nuGetValue(\'sob_input_format\') === \'\') {\r\n nuSetText(\'sob_input_format\', format);\r\n }\r\n}\r\n\r\n\r\nfunction nuObjectDisplayInputIcon() {\r\n nuShow(\'sob_input_icon\',\r\n sob_input_type.value == \'button\' || sob_all_type.value == \'run\' || sob_all_type.value == \'word\');\r\n}\r\n\r\nfunction nuObjectDisplayAccessCondition() {\r\n nuShow(\'sob_all_access_condition\',\r\n sob_all_access.value == \'9\');\r\n $(\'[nu-access-button]\').nuShow(sob_all_access.value != \'9\');\r\n}\r\n\r\nfunction nuObjectHideCalcObjects() {\r\n\r\n var f = $(\'#sob_all_zzzzsys_form_id\').val();\r\n\r\n $(\'#add_total\').children().each(function(index) {\r\n\r\n\r\n if ($(this).val() != f) {\r\n $(this).hide();\r\n }\r\n if ($(this).text() == $(\'#sob_all_id\').val()) {\r\n $(this).hide();\r\n }\r\n\r\n });\r\n\r\n}\r\n\r\nfunction nuObjectInsertOrAppendToCalcFormula(oldValue, newValue) {\r\n\r\n const manualMode = nuGetValue(\'sob_calc_formula_edit_mode_checkbox\');\r\n if (manualMode) {\r\n nuInsertAtCaret(\'sob_calc_formula\', newValue);\r\n } else {\r\n nuSetValue(\'sob_calc_formula\', oldValue + newValue);\r\n }\r\n\r\n}\r\n\r\nfunction nuObjectAddCalcObject(t) {\r\n\r\n const i = $(t).attr(\'data-nu-ids\');\r\n const oldValue = $(\'#sob_calc_formula\').val();\r\n const newValue = \"nuTotal(\'\" + i + \"\')\";\r\n\r\n if (i == \'\') {\r\n return;\r\n }\r\n\r\n $(\'#sob_calc_formula\').addClass(\'nuEdited\')\r\n\r\n nuObjectInsertOrAppendToCalcFormula(oldValue, newValue);\r\n\r\n $(\'#add_total\').val(\'\');\r\n\r\n nuHasBeenEdited();\r\n\r\n}\r\n\r\n\r\nfunction nuObjectAddToFormula(e) {\r\n\r\n const newValue = e.target.innerHTML;\r\n const oldValue = $(\'#sob_calc_formula\').val();\r\n\r\n if (newValue == \'Clear\') {\r\n\r\n $(\'#sob_calc_formula\')\r\n .val(\'\')\r\n .addClass(\'nuEdited\');\r\n return;\r\n\r\n }\r\n\r\n $(\'#sob_calc_formula\').addClass(\'nuEdited\')\r\n\r\n nuObjectInsertOrAppendToCalcFormula(oldValue, newValue);\r\n\r\n nuHasBeenEdited();\r\n\r\n}\r\n\r\n\r\n\r\nfunction nuObjectPopulateHTML() {\r\n\r\n var o = nuCalcObjects();\r\n var a = [];\r\n\r\n for (var i = 0; i < o.length; i++) {\r\n\r\n var ids = String(o[i].ids);\r\n var ty = o[i].type;\r\n var id = String(o[i].ids).split(\'.\');\r\n var sp = \' \';\r\n\r\n if (id.length == 1) {\r\n a.push(\'<tr><td><div title=\"\' + ty + \'\" style=\"overflow:hidden;width:305px;text-align:left;padding:2px\" onclick=\"nuObjectAddCalcObject(this);\" class=\"nuCalculatorButton nu_\' + o[i].type + \'\" data-nu-ids=\"\' + ids + \'\">\' + ids + \'</div></td></tr>\');\r\n } else {\r\n\r\n var h = \'<span title=\"subform\" class=\"nu_subform\">\' + id[0] + \'</span>.<span title=\"\' + ty + \'\" class=\"nu_input\" style=\"padding:7px 5px 7px 5px\">\' + id[1] + sp.repeat(200) + \'</span>\';\r\n a.push(\'<tr><td><div style=\"overflow:hidden;width:305px;text-align:left;padding:2px;height:28px\" onclick=\"nuObjectAddCalcObject(this);\" class=\"nuCalculatorButton nu_subform\" data-nu-ids=\"\' + ids + \'\">\' + h + \'</div></td></tr>\');\r\n\r\n }\r\n\r\n }\r\n\r\n $(\'#add_total\').html(\'<table>\' + a.join(\'\') + \'</table>\');\r\n\r\n}\r\n\r\n\r\nfunction nuObjectSetSelectIndex(i, index) {\r\n\r\n $(\"#\" + i).prop(\"selectedIndex\", index).change();\r\n\r\n}\r\n\r\nfunction nuObjectSetLookupWidth() {\r\n var w = $(\'#sob_lookup_description\').val() == $(\'#sob_lookup_code\').val() ? 0: 150;\r\n var cw = $(\'#sob_lookup_description_width\').val();\r\n if (cw == 0 || cw == 150 || w == 0) $(\'#sob_lookup_description_width\').val(w).change();\r\n}\r\n\r\n\r\nfunction nuObjectSubFormRowsCount(subform, fieldname) {\r\n\r\n var sf = nuSubformObject(subform);\r\n var col = sf.fields.indexOf(fieldname);\r\n var c = 0;\r\n for (var row = 0; row < sf.rows.length; row++) {\r\n if (sf.deleted[row] == 0 && sf.rows[row][col].trim() != \'\') c++;\r\n }\r\n\r\n return c;\r\n\r\n}\r\n\r\nfunction nuObjecEnsureAutoNumberEndsWithNumber(str) {\r\n if (str !== \'\') {\r\n nuSetValue(\'sob_input_count\', /\\d$/.test(str) ? str: \'1\');\r\n }\r\n}\r\n\r\nfunction nuBeforeSave() {\r\n\r\n nuObjectRunMethodChanged();\r\n nuObjectAdjustProperties();\r\n\r\n nuObjecEnsureAutoNumberEndsWithNumber(sob_input_count.value);\r\n \r\n if (!nuObjectIdIsValid(nuGetValue(\'sob_all_id\'))) {\r\n nuMessage(nuTranslate(\'Invalid ID\'));\r\n return false;\r\n }\r\n\r\n if ($(\'#sob_all_type\').val() == \'select\') {\r\n $(\'#sob_select_multiple\').addClass(\'nuEdited\');\r\n }\r\n\r\n $(\"#sob_all_event\").prop(\'checked\', nuObjectSubFormRowsCount(\'zzzzsys_event_sf\', \'sev_event\') > 0).trigger(\'change\');\r\n\r\n}\r\n\r\nfunction nuObjectAdjustProperties() {\r\n\r\n let type = nuGetValue(\'sob_all_type\');\r\n let access = nuGetValue(\'sob_all_access\');\r\n let validation = nuGetValue(\'sob_all_validate\');\r\n let inputType = nuGetValue(\'sob_input_type\');\r\n let inputFormat = nuGetValue(\'sob_input_format\');\r\n\r\n if (type !== \'input\') {\r\n if (inputType !== \'\') nuSetValue(\'sob_input_type\', \'\');\r\n if (inputFormat !== \'\') nuSetValue(\'sob_input_format\', \'\');\r\n }\r\n\r\n if (type.containsAny([\'word\', \'html\', \'image\', \'contentbox\', \'contentbox\'])) {\r\n if (validation !== \'0\') nuSetValue(\'sob_all_validate\', \'0\'); // validation --> none\r\n if (access == \'1\') nuSetValue(\'sob_all_access\', \'0\'); // readonly --> editable\r\n }\r\n\r\n if (type === \'word\') {\r\n if (access == \'1\') nuSetValue(\'sob_all_access\', \'0\'); // readonly --> editable\r\n if (validation !== \'0\') nuSetValue(\'sob_all_validate\', \'0\'); // validation --> none\r\n nuSetValue(\'sob_input_type\', \'\');\r\n nuSetValue(\'sob_input_format\', \'\');\r\n }\r\n\r\n if (type === \'display\') {\r\n if (access == \'1\') nuSetValue(\'sob_all_access\', \'0\'); // readonly --> editable\r\n }\r\n\r\n}\r\n\r\nfunction nuObjectRunMethodChanged() {\r\n\r\n var m = nuGetValue(\'sob_run_method\');\r\n nuEnable(\'sob_run_target\', m == \'b\');\r\n\r\n if ($(\'#sob_run_target\').prop(\"selectedIndex\") > 0 && m == \'b\') {\r\n return;\r\n }\r\n\r\n if (m == \'b\' || m == \'i\') {\r\n $(\'#sob_run_target\').prop(\"selectedIndex\", m == \'b\' ? 1: 0).change();\r\n }\r\n\r\n}\r\n\r\nfunction nuOnClone() {\r\n nuHide(\'sob_all_id_create_button\');\r\n}\r\n\r\nfunction nuObjectUpdateIdDatalist() {\r\n var t = nuFORM.tableSchema[nuGetValue(\"sob_all_table\")];\r\n nuAddDatalist(\'sob_all_id\', typeof t !== \"undefined\" ? t.names: []);\r\n}\r\n\r\nfunction nuObjectUpdateLookupDescriptionDatalist() {\r\n let arr = nuFORM.tableSchema[nuGetValue(\"sob_lookup_table\")]?nuFORM.tableSchema[nuGetValue(\"sob_lookup_table\")].names: [];\r\n nuAddDatalist(\'sob_lookup_description\', arr);\r\n}\r\n\r\nfunction nuObjectSetJSON() {\r\n\r\n const data = {\r\n\r\n \"type\": {\r\n\r\n \"version\": \"1.0\",\r\n \"mobile\": {\r\n \"version\": \"1.0\",\r\n \"name\": \"test1\",\r\n \"visible\": true,\r\n \"location\": {\r\n \"top\": sob_all_top.value,\r\n \"left\": sob_all_left.value\r\n },\r\n \"size\": {\r\n \"width\": sob_all_width.value,\r\n \"height\": sob_all_height.value\r\n },\r\n \"class\": [\"nuMobileInput\"]\r\n }\r\n }\r\n\r\n }\r\n\r\n\r\n var obj = JSON.stringify(data);\r\n nuSetValue(\'sob_all_json\', obj);\r\n\r\n}\r\n\r\n\r\nfunction nuObjectPreviewIcon(i, s) {\r\n\r\n s = nuEscapeHTML(s);\r\n\r\n let $i = $(\'#\'+i);\r\n\r\n $i.html(\'\');\r\n\r\n if (s.startsWith(\'fas \') || s.startsWith(\'fa \') || s.startsWith(\'far \') || s.startsWith(\'fa-\')) {\r\n $i.append(\'<i class=\"\' + s + \' fa-2x\' + \'\"></i>\');\r\n } else if (s.startsWith(\'<i class=\"fa\')) {\r\n let i = s.indexOf(\'>\', 10);\r\n $i.append(s.nuInsertString(i-1, \' fa-2x\'));\r\n\r\n } else {\r\n $i.append(s);\r\n }\r\n\r\n}\r\n\r\n\r\nfunction nuObjectFileUploadScript() {\r\n\r\n let htmlCode = $(\'#sob_html_code\');\r\n\r\n if (nuGetValue(\'sob_input_file_target\') == \'0\' && ! htmlCode.val().includes(\'Uppy\')) {\r\n\r\n const uppyScript = `\r\n <div id=\"#uppy_div#\"></div>\r\n\r\n <script>\r\n\r\n nuInitUppy();\r\n\r\n function nuInitUppy() {\r\n\r\n const $objId = $(\'#\' + \'#this_object_id#\');\r\n const target = \'#\' + \'#uppy_div#\';\r\n\r\n let uppy = nuUppyCreate();\r\n\r\n uppy.use(Uppy.Dashboard, {\r\n inline: true,\r\n bundle: true,\r\n height: $objId.nuCSSNumber(\'height\'),\r\n width: $objId.nuCSSNumber(\'width\'),\r\n target: target,\r\n showProgressDetails: true,\r\n replaceTargetContent: true,\r\n method: \'post\'\r\n })\r\n .use(Uppy.XHRUpload, {\r\n endpoint: \'core/nuapi.php\'\r\n })\r\n\r\n uppy.on(\'upload\', (file) => {\r\n uppy.setMeta({\r\n procedure: \'NUUPLOADFILE_TEMPLATE\',\r\n session_id: window.nuSESSION\r\n })\r\n });\r\n\r\n uppy.on(\'complete\', (result) => {\r\n\r\n if (window.nuOnFileUploadComplete) {\r\n nuOnFileUploadComplete(\'FS\', $objId.attr(\'id\'), result);\r\n }\r\n\r\n })\r\n\r\n }\r\n\r\n </script>\r\n `;\r\n\r\n nuSetValue(\'sob_html_code\', htmlCode.val() + uppyScript.trim());\r\n\r\n if (sob_all_height.value < 30) nuSetValue(\'sob_all_height\', \'250\');\r\n\r\n }\r\n\r\n\r\n\r\n}\r\n\r\n\r\n// Pick Tabs\r\n\r\nfunction nuObjectOpenMenu(event, menu, element) {\r\n event.stopPropagation();\r\n ctxmenu.show(menu, element);\r\n}\r\n\r\n\r\nfunction nuObjectSetTabId(tabTitle) {\r\n\r\n const tab = parent.$(\'.nuTab\').filter(function() {\r\n return $(this).html() == tabTitle;\r\n });\r\n\r\n if (tab.length == 1) {\r\n nuGetLookupId(tab.attr(\'data-nu-tab-id\'), \'sob_all_zzzzsys_tab_id\', true, true);\r\n\r\n }\r\n\r\n}\r\n\r\nfunction nuObjectMenuPickTabsClick(element, event) {\r\n\r\n if (!nuIsIframe()) {\r\n return;\r\n }\r\n\r\n var items = [];\r\n\r\n const item = {\r\n text: nuTranslate(\'Tabs\')\r\n };\r\n\r\n items.push(item);\r\n\r\n window.parentTabs.each(function() {\r\n var item =\r\n {\r\n text: nuContextMenuItemText(this.innerHTML, \"fa-regular fa-square\"),\r\n action: () => nuObjectSetTabId(this.innerHTML)\r\n }\r\n\r\n items.push(item);\r\n });\r\n\r\n nuObjectOpenMenu(event, items, element);\r\n\r\n}\r\n\r\nfunction nuObjectProcedureChanged() {\r\n const hasDisplayProcedure = sob_display_procedure.value === \'\';\r\n nuEnable(\'sob_display_sql\', hasDisplayProcedure);\r\n $(\'#sob_display_sql\').toggleClass(\'display-sql-strikethrough\', !hasDisplayProcedure);\r\n}\r\n\r\n$(\"#sob_display_procedurecode\").on(\"change\", function(event) {\r\n nuObjectProcedureChanged();\r\n});\r\n\r\n\r\n$(\'#sob_all_zzzzsys_tab_idbutton\').on(\'contextmenu\', function(e) {\r\n e.preventDefault();\r\n nuObjectMenuPickTabsClick(this, event);\r\n});\r\n\r\nfunction nuOnMobileViewComplete() { \r\n \r\n const elements = [\r\n { input: \'#sob_input_file_target\', label: \'#label_sob_input_file_target\' },\r\n { input: \'#sob_input_count\', label: \'#label_sob_input_count\' },\r\n { input: \'#sob_input_javascript\', label: \'#label_sob_input_javascript\' },\r\n { input: \'#sob_input_datalist\', label: \'#label_sob_input_datalist\', offsety: 80 }\r\n ];\r\n\r\n const inputAnchorTop = $(\'#sob_input_format\').nuCSSNumber(\'top\');\r\n const inputAnchorTopLabel = $(\'#label_sob_input_format\').nuCSSNumber(\'top\');\r\n\r\n elements.forEach(({ input, label, offsety = 0 }) => {\r\n\r\n $(input).css(\'top\', inputAnchorTop + offsety);\r\n $(label).css(\'top\', inputAnchorTopLabel + offsety);\r\n\r\n });\r\n \r\n}\r\n', ' .display-sql-strikethrough {\r\n text-decoration: line-through;\r\n color: #cdc7c7!important;\r\n }', '1', NULL)