diff --git a/core/admin/_admin_catalog.py b/core/admin/_admin_catalog.py index dcc9ae05ff..a9d6c928c3 100644 --- a/core/admin/_admin_catalog.py +++ b/core/admin/_admin_catalog.py @@ -177,7 +177,7 @@ def project_type_for_schema( WHERE c.relname = 'sys_version' AND c.relkind IN ('r', 'p') AND n.nspname = ANY(%s::text[]) - AND a.attname = ANY(ARRAY['giswater', 'version', 'addparam', 'date']) + AND a.attname = ANY(ARRAY['giswater', 'version', 'addparam', 'date', 'language', 'project_type']) AND a.attnum > 0 AND NOT a.attisdropped """ @@ -694,3 +694,87 @@ def find_inventory_row( if want_kind and str(row.get("kind") or "").upper() == want_kind: return row return None + + +_TRANSLATABLE_KINDS = frozenset({"ws", "ud", "am", "cm"}) + + +def fetch_schema_translation_info( + fetcher: RowFetcher = _tools_db_fetch, + *, + kinds: frozenset[str] | set[str] | None = None, +) -> list[dict[str, Any]]: + """ + Return [{schema, kind, version, language}, ...] for Giswater schemas that + expose ``sys_version``. Missing/legacy columns are tolerated (empty strings). + """ + wanted = {str(k).lower() for k in (kinds or _TRANSLATABLE_KINDS)} + names = fetch_schema_names_with_sys_version(fetcher) + if not names: + return [] + + columns_by_schema = _sys_version_columns_by_schema(names, fetcher) + result: list[dict[str, Any]] = [] + + for schema_name in sorted(names): + columns = columns_by_schema.get(schema_name, set()) + version_col = _version_column_for_schema(schema_name, columns) + if not version_col: + continue + + select_cols = ["project_type", version_col] + has_language = "language" in columns + if has_language: + select_cols.append("language") + + row = fetcher( + f"SELECT {', '.join(select_cols)} " + f"FROM {_quote_ident(schema_name)}.sys_version " + "ORDER BY id DESC LIMIT 1", + None, + ) + if not row or not row[0]: + continue + + values = row[0] + kind = str(values[0] or "").strip().lower() + if not kind or kind not in wanted: + continue + + version = str(values[1] or "") if len(values) > 1 else "" + language = "" + if has_language and len(values) > 2: + language = str(values[2] or "") + + result.append({ + "schema": schema_name, + "kind": kind, + "version": version, + "language": language, + }) + return result + + +def fetch_multilang_operative_languages( + fetcher: RowFetcher = _tools_db_fetch, +) -> set[str]: + """ + Return operative multilang language ids (folder form) when the multilang + schema exists. Missing schema/tables return an empty set (non-fatal). + """ + try: + if not schema_exists("multilang", fetcher): + return set() + except Exception: + return set() + + try: + from .i18n_baseline_seed import ( + fetch_seeded_language_ids, + normalize_language_folder, + ) + ids = fetch_seeded_language_ids(fetcher) + except Exception: + return set() + + return {normalize_language_folder(lang) for lang in ids if lang} diff --git a/core/admin/admin_btn.py b/core/admin/admin_btn.py index d6f729bb34..3cbf7a3628 100644 --- a/core/admin/admin_btn.py +++ b/core/admin/admin_btn.py @@ -41,6 +41,7 @@ from ...libs import lib_vars, tools_qt, tools_qgis, tools_log, tools_db, tools_os from ..ui.docker import GwDocker from ..threads.schema_builder_task import GwSchemaBuilderTask, load_kind_manifest +from ..threads.multilang_schema_task import GwMultilangSchemaTask from ..threads.project_schema_copy import GwCopySchemaTask from ..threads.project_schema_rename import GwRenameSchemaTask from ..threads.project_schema_vacuum import GwVacuumSchemaTask @@ -1596,8 +1597,20 @@ def reload_connection_for_manage_schemas(self, connection_name: str) -> bool: update_info = getattr(self, "_manage_schemas_update_system_info", None) if update_info: update_info() + self._ensure_language_packages_for_connection(force=True) return True + def _ensure_language_packages_for_connection(self, *, force: bool = False) -> None: + """Start automatic language-file provisioning for the active DB connection.""" + try: + from .i18n_provision import ensure_language_packages_after_connection + ensure_language_packages_after_connection(force=force) + except Exception as exc: + msg = "Automatic language provisioning failed to start: {0}" + msg_params = (exc,) + tools_log.log_warning(msg, msg_params=msg_params) + self._i18n_provision_after_load = False + def _start_admin_load_sync(self, connection_name): self._extensions_checked = False self._cached_pg_versions = None @@ -1703,6 +1716,10 @@ def _apply_admin_load_result(self, result: AdminLoadResult, connection_name): if manage_cmb: manage_cmb(connection_name) + force = bool(getattr(self, "_i18n_provision_after_load", False)) + self._i18n_provision_after_load = False + self._ensure_language_packages_for_connection(force=force) + def _finalize_admin_permissions_and_status(self): message = '' if not tools_db.check_role(self.username, is_admin=True) and not getattr(self, '_admin_show_dialog', False): @@ -2489,6 +2506,8 @@ def _event_change_connection(self): self.username = self._get_user_connection(connection_name) tools_db.current_user = None self._schema_cache.pop(connection_name, None) + # Re-check language packages after the new connection finishes loading. + self._i18n_provision_after_load = True self._start_admin_load(connection_name, try_set_connection=True, show_dialog=True) def _set_last_connection(self, connection_name): @@ -2813,22 +2832,30 @@ def _set_signals_create_project(self): def _open_manage_schemas(self): from .manage_schemas_dlg import GwManageSchemasDialog + + dlg = getattr(self, '_manage_schemas_dlg', None) + if dlg is not None and not isdeleted(dlg) and dlg.isVisible(): + tools_gw.focus_open_dialog(dlg) + return + dlg = GwManageSchemasDialog(self, parent=self.dlg_readsql) tools_gw.load_settings(dlg) - dlg.apply_fixed_geometry() + dlg.apply_scroll_geometry() self._manage_schemas_refresh = dlg._refresh_inventory self._manage_schemas_update_system_info = dlg._update_system_info self._manage_schemas_sync_connection = dlg._sync_connection_combo self._manage_schemas_dlg = dlg lib_vars.session_vars["message_parent"] = dlg - try: - dlg.exec() - finally: + dlg.finished.connect(self._on_manage_schemas_closed) + tools_gw.open_dialog(dlg, dlg_name='admin_manage_schemas') + + def _on_manage_schemas_closed(self, *_args): + if lib_vars.session_vars.get("message_parent") is getattr(self, '_manage_schemas_dlg', None): lib_vars.session_vars["message_parent"] = None - self._manage_schemas_refresh = None - self._manage_schemas_update_system_info = None - self._manage_schemas_sync_connection = None - self._manage_schemas_dlg = None + self._manage_schemas_refresh = None + self._manage_schemas_update_system_info = None + self._manage_schemas_sync_connection = None + self._manage_schemas_dlg = None def _open_create_project(self): """""" @@ -3119,9 +3146,75 @@ def _delete_other_schema(self, schema): tools_qt.show_info_box(msg, "Info") self._refresh_admin_catalog_cache() self._set_buttons_enabled() + refresh = getattr(self, "_manage_schemas_refresh", None) + if refresh: + refresh() else: tools_qt.show_info_box(f"Delete schema failed: {fx.error}", "Error") + def _multilang_stored_seeded_schemas(self) -> set[str]: + """Project types recorded at last multilang seed (prefer addparam).""" + from .i18n_baseline_seed import ( + fetch_seeded_project_types_from_multilang, + parse_stored_seeded_project_types, + ) + + if not admin_catalog.schema_exists("multilang"): + return set() + + row = tools_db.get_row( + "SELECT addparam FROM multilang.sys_version ORDER BY id DESC LIMIT 1" + ) + if row and row[0]: + try: + addparam = json.loads(row[0]) if isinstance(row[0], str) else row[0] + except (TypeError, ValueError): + addparam = None + if isinstance(addparam, dict) and ( + "seeded_project_types" in addparam or "seeded_schemas" in addparam + ): + return parse_stored_seeded_project_types(addparam) + + # Legacy multilang schemas without seeded_project_types in addparam. + return fetch_seeded_project_types_from_multilang( + fetcher=admin_catalog._tools_db_fetch, + ) + + def _multilang_current_seed_targets(self, inventory_rows=None) -> set[str]: + """Project types that should be present in multilang seed (ws/ud/am/cm).""" + from .i18n_baseline_seed import translatable_project_types_with_baseline + + return set(translatable_project_types_with_baseline(self.sql_dir)) + + def _multilang_schemas_out_of_sync(self, inventory_rows=None) -> bool: + """True when project types differ from the last multilang seed.""" + from .i18n_baseline_seed import seeded_project_types_out_of_sync + + if not admin_catalog.schema_exists("multilang"): + return False + current = self._multilang_current_seed_targets(inventory_rows) + stored = self._multilang_stored_seeded_schemas() + return seeded_project_types_out_of_sync(current, stored) + + def _multilang_baseline_changed(self) -> bool: + """True when bundled en_US baseline SQL differs from the last seed.""" + from .i18n_baseline_seed import baseline_needs_reseed + + if not admin_catalog.schema_exists("multilang"): + return False + row = tools_db.get_row( + "SELECT addparam FROM multilang.sys_version ORDER BY id DESC LIMIT 1" + ) + stored = None + if row and row[0]: + try: + addparam = json.loads(row[0]) if isinstance(row[0], str) else row[0] + if isinstance(addparam, dict): + stored = addparam.get("seed_baseline_fingerprint") + except (TypeError, ValueError): + pass + return baseline_needs_reseed(self.sql_dir, stored) + def _build_replace_dlg(self, replace_json): # Build the dialog @@ -4194,29 +4287,64 @@ def _update_utils(self, schema_name=None, on_done=None): on_done=on_done, ) - def _create_i18n(self): - """Create the (singleton) i18n satellite schema via the engine.""" + def _create_i18n(self, manage_schemas_dlg=None): + """Create multilang schema and seed en_US baseline translations.""" if admin_catalog.schema_exists('multilang'): tools_qgis.show_message("Schema multilang already exists.", Qgis.MessageLevel.Info) - return + return False + from .i18n_baseline_seed import invalidate_baseline_fingerprint_cache + invalidate_baseline_fingerprint_cache(self.sql_dir) bp = BuildParams( schema_name='multilang', srid=str(self.project_epsg or "25831"), - locale=self.locale, + locale="en_US", plugin_version=str(self.plugin_version), profile='empty', register_is_new='true', sql_root=self.sql_dir, ) - self._submit_builder( - 'multilang', + self._submit_multilang_task( bp, description='Create multilang schema', - on_done=partial(self._on_builder_done_other_update, 'multilang'), + on_done=partial[None](self._on_builder_done_other_update, 'multilang'), + manage_schemas_dlg=manage_schemas_dlg, + ) + return True + + def _submit_multilang_task( + self, + params, + *, + description=None, + on_done=None, + manage_schemas_dlg=None, + ): + """Queue multilang build + baseline seed on the QGIS task manager.""" + self._open_schema_build_message_log() + self.schema_build_progress_hint = "" + self.error_count = 0 + self.t0 = time() + self.timer = QTimer() + self.timer.start(1000) + + desc = description or "Create multilang schema" + task = GwMultilangSchemaTask( + self, + params, + description=desc, + timer=self.timer, + on_done=on_done, + manage_schemas_dlg=manage_schemas_dlg, ) + self.task_create_schema = task + QgsApplication.taskManager().addTask(task) + QgsApplication.taskManager().triggerTask(task) + return task - def _update_i18n(self, on_done=None): - """Run the i18n 'update' profile in place.""" + def _update_i18n(self, on_done=None, manage_schemas_dlg=None): + """Run multilang schema update and re-seed baseline translations.""" + from .i18n_baseline_seed import invalidate_baseline_fingerprint_cache + invalidate_baseline_fingerprint_cache(self.sql_dir) row = tools_db.get_row( "SELECT giswater FROM multilang.sys_version ORDER BY id DESC LIMIT 1" ) @@ -4224,7 +4352,7 @@ def _update_i18n(self, on_done=None): bp = BuildParams( schema_name='multilang', srid=str(self.project_epsg or "25831"), - locale=self.locale, + locale="en_US", plugin_version=str(self.plugin_version), project_version=str(current_version), profile='update', @@ -4232,11 +4360,11 @@ def _update_i18n(self, on_done=None): sql_root=self.sql_dir, ) callback = on_done if on_done is not None else partial(self._on_builder_done_other_update, 'multilang') - self._submit_builder( - 'multilang', + self._submit_multilang_task( bp, description="Update multilang schema", on_done=callback, + manage_schemas_dlg=manage_schemas_dlg, ) def _update_cibs(self, on_done=None): @@ -4356,15 +4484,6 @@ def _update_cm(self, parent_schema=None, parent_type=None, cm_schema=None, on_do def _on_builder_done_other_update(self, schema_name, result): if not result.ok: self.error_count += 1 - elif schema_name == 'multilang' and self.schema_name: - lang_value = json.dumps({"lang": self.locale or "en_US"}).replace("'", "''") - sql = (f"UPDATE {self.schema_name}.config_param_system " - f"SET value = '{lang_value}', isenabled = true " - f"WHERE parameter = 'utils_language_ui'") - tools_log.log_info("Task '{0}' execute sql: '{1}'", - msg_params=("Update multilang language", sql,)) - if not tools_db.execute_sql(sql): - self.error_count += 1 self.manage_other_process_result() def _calculate_elapsed_time(self, dialog): diff --git a/core/admin/i18n_baseline_seed.py b/core/admin/i18n_baseline_seed.py new file mode 100644 index 0000000000..3d379a601b --- /dev/null +++ b/core/admin/i18n_baseline_seed.py @@ -0,0 +1,1011 @@ +""" +Parse bundled i18n baseline SQL (UPDATE … FROM (VALUES …)) and build +INSERT statements for the multilang satellite schema. + +Initial scope: en_US only; baselines are loaded per project_type (ws, ud, am, cm). +""" + +from __future__ import annotations + +import hashlib +import json +import os +import re +from dataclasses import dataclass, field +from typing import Any, Callable, Iterable, Optional, Sequence + +# Hardcoded initial language scope. +SEED_LANGUAGE_ID = "en_us" +SEED_LANGUAGE_FOLDER = "en_US" + +# Relative dbmodel paths to bundled baseline SQL (language folder appended). +_I18N_BASELINE_ROOTS: dict[str, str] = { + "ws": os.path.join("schemas", "main", "ws", "final_pass", "i18n"), + "ud": os.path.join("schemas", "main", "ud", "final_pass", "i18n"), + "am": os.path.join("schemas", "addon", "am", "final_pass", "i18n"), + "cm": os.path.join("schemas", "addon", "cm", "final_pass", "i18n"), +} + +TRANSLATABLE_PROJECT_TYPES: frozenset[str] = frozenset(_I18N_BASELINE_ROOTS.keys()) + +# Baseline SQL file stem -> multilang schema table (mains_language_ui.md scope). +BASELINE_TO_MULTILANG_TABLE: dict[str, str] = { + "dbconfig_form_fields": "config_form_fields", + "dbconfig_form_fields_feat": "config_form_fields", + "dbconfig_form_fields_json": "config_form_fields_json", + "dbtable": "sys_table", + "dbmessage": "sys_message", + "dbfunction": "sys_function", + "dbfprocess": "sys_fprocess", + "dbparam_user": "sys_param_user", + "dbconfig_form_tabs": "config_form_tabs", + "dbconfig_param_system": "config_param_system", +} + +MULTILANG_UI_TABLES: tuple[str, ...] = tuple(sorted(set(BASELINE_TO_MULTILANG_TABLE.values()))) + +_CORE_BASELINE_FILES: tuple[str, ...] = tuple(BASELINE_TO_MULTILANG_TABLE.keys()) + +# Baseline SQL files per project type (skip missing files at load time). +_PROJECT_TYPE_TABLES: dict[str, tuple[str, ...]] = { + "ws": _CORE_BASELINE_FILES, + "ud": _CORE_BASELINE_FILES, + "am": (), + "cm": ( + "dbconfig_form_fields", + "dbconfig_form_fields_json", + "dbconfig_form_tabs", + "dbconfig_param_system", + "dbfprocess", + "dbtable", + ), +} + +UPDATE_HEADER_RE = re.compile( + r"UPDATE\s+(?P\w+)\s+AS\s+t\s+SET\s+(?P.+?)\s+FROM\s*\(\s*VALUES\s*", + re.IGNORECASE | re.DOTALL, +) + +# Matches ") AS v(" outside of string literals (found via quote-aware scan). +ALIAS_CLAUSE_RE = re.compile(r"\)\s*AS\s+v\s*\(", re.IGNORECASE) + +SET_ASSIGN_RE = re.compile( + r"(?P\w+)\s*=\s*(?:REPLACE\s*\(\s*)?v\.(?P\w+)", + re.IGNORECASE, +) + +_ORG_TO_I18N_DEFAULT = { + "alias": "al", + "descript": "ds", + "label": "lb", + "tooltip": "tt", + "idval": "vl", + "error_message": "ms", + "hint_message": "ht", + "except_msg": "ex", + "info_msg": "in", + "fprocess_name": "na", + "observ": "ob", + "widgetcontrols": "text", + "filterparam": "text", + "inputparams": "text", + "text": "tx", + "price": "pr", + "name": "na", + "value": "vl", +} + +# Context-specific org column -> multilang column overrides. +_CONTEXT_I18N_OVERRIDES: dict[str, dict[str, str]] = { + "config_typevalue": {"idval": "tt"}, + "sys_param_user": {"descript": "tt"}, + "config_param_system": {"descript": "tt"}, +} + +# ON CONFLICT target columns per multilang table (must match DDL PK). +_TABLE_CONFLICT_KEYS: dict[str, tuple[str, ...]] = { + "config_form_fields": ("tabname", "context", "formname", "formtype", "project_type", "source", "lang"), + "config_form_fields_json": ( + "tabname", "context", "formname", "formtype", "project_type", "source", "hint", "lang", + ), + "config_form_tabs": ("project_type", "context", "formname", "source", "lang"), + "config_param_system": ("project_type", "context", "source", "lang"), + "sys_fprocess": ("project_type", "context", "source", "lang"), + "sys_function": ("project_type", "context", "source", "lang"), + "sys_message": ("project_type", "context", "source", "lang"), + "sys_param_user": ("project_type", "context", "source", "lang"), + "sys_table": ("project_type", "context", "source", "lang"), +} + +# Multilang columns that must be double-quoted in generated SQL. +_QUOTED_SQL_COLUMNS = frozenset({"source", "in", "text", "parameter", "method"}) + + +def _quote_sql_col(name: str) -> str: + if name in _QUOTED_SQL_COLUMNS: + return f'"{name}"' + return name + + +def _dedupe_rows_by_conflict_key( + table: str, + rows: Sequence[MultilangRow], +) -> list[MultilangRow]: + """Keep one row per ON CONFLICT target; later baseline rows win.""" + conflict_keys = _TABLE_CONFLICT_KEYS.get(table) + if not conflict_keys or not rows: + return list(rows) + + deduped: dict[tuple[Any, ...], MultilangRow] = {} + for row in rows: + key = tuple(row.values.get(col) for col in conflict_keys) + deduped[key] = row + return list(deduped.values()) + + +@dataclass +class ParsedUpdateBlock: + context: str + set_targets: dict[str, str] # org column -> v alias + value_aliases: list[str] + rows: list[list[Any]] = field(default_factory=list) + json_hints: list[str] = field(default_factory=list) # SET targets stored as hint (json cols) + + +@dataclass +class MultilangRow: + table: str + values: dict[str, Any] + + +def baseline_i18n_dir( + sql_root: str, + project_type: str, + *, + lang: str = SEED_LANGUAGE_FOLDER, +) -> str | None: + """Return bundled baseline i18n folder for a project type, or None if unsupported.""" + pt = normalize_project_type(project_type) + if not pt: + return None + rel = _I18N_BASELINE_ROOTS.get(pt) + if not rel: + return None + return os.path.join(sql_root, rel, lang) + + +def normalize_project_type(project_type: str | None) -> str | None: + if not project_type: + return None + key = str(project_type).strip().lower() + if key in TRANSLATABLE_PROJECT_TYPES: + return key + return None + + +def normalize_language_id(locale: str | None) -> str: + """Normalize locale to multilang.cat_language / row lang id (en_us).""" + if not locale: + return SEED_LANGUAGE_ID + text = str(locale).strip().replace("-", "_") + parts = text.split("_", 1) + if len(parts) == 2 and parts[0] and parts[1]: + return f"{parts[0].lower()}_{parts[1].lower()}" + return text.lower() + + +def normalize_language_folder(locale: str | None) -> str: + """Normalize locale to bundled i18n folder name (en_US).""" + if not locale: + return SEED_LANGUAGE_FOLDER + text = str(locale).strip().replace("-", "_") + parts = text.split("_", 1) + if len(parts) == 2 and parts[0] and parts[1]: + return f"{parts[0].lower()}_{parts[1].upper()}" + return text + + +def project_type_has_baseline( + sql_root: str, + project_type: str, + *, + lang: str = SEED_LANGUAGE_FOLDER, +) -> bool: + i18n_dir = baseline_i18n_dir(sql_root, project_type, lang=lang) + if not i18n_dir or not os.path.isdir(i18n_dir): + return False + return any(name.endswith(".sql") for name in os.listdir(i18n_dir)) + + +def seed_table_files_for_project_type( + project_type: str, + sql_root: str, + *, + lang: str = SEED_LANGUAGE_FOLDER, +) -> tuple[str, ...]: + """Baseline table files to import for one project type (existing files only).""" + pt = normalize_project_type(project_type) + if not pt: + return () + + i18n_dir = baseline_i18n_dir(sql_root, pt, lang=lang) + if not i18n_dir or not os.path.isdir(i18n_dir): + return () + + tables: list[str] = [] + for baseline_file in _PROJECT_TYPE_TABLES.get(pt, ()): + target = BASELINE_TO_MULTILANG_TABLE.get(baseline_file) + if not target or target not in _TABLE_CONFLICT_KEYS: + continue + if os.path.isfile(os.path.join(i18n_dir, f"{baseline_file}.sql")): + tables.append(baseline_file) + return tuple(tables) + + +def _parse_sql_string_literal(inner: str, start: int, *, escape: bool = False) -> tuple[str, int]: + """Parse a SQL string starting after the opening quote; return (value, next_index).""" + length = len(inner) + i = start + chars: list[str] = [] + while i < length: + ch = inner[i] + if escape and ch == "\\" and i + 1 < length: + nxt = inner[i + 1] + if nxt == "n": + chars.append("\n") + elif nxt == "t": + chars.append("\t") + elif nxt == "r": + chars.append("\r") + elif nxt in ("\\", "'"): + chars.append(nxt) + else: + chars.append(nxt) + i += 2 + continue + if ch == "'": + if i + 1 < length and inner[i + 1] == "'": + chars.append("'") + i += 2 + continue + return "".join(chars), i + 1 + chars.append(ch) + i += 1 + return "".join(chars), i + + +def parse_sql_value_tuple(raw: str) -> list[Any]: + """Parse one SQL VALUES tuple: (a, 'b', NULL, 1) or (1, E'text', NULL).""" + text = raw.strip() + if not text.startswith("(") or not text.endswith(")"): + raise ValueError(f"Invalid tuple: {raw[:80]!r}") + inner = text[1:-1] + values: list[Any] = [] + i = 0 + length = len(inner) + + while i < length: + while i < length and inner[i] in " \t\n\r,": + i += 1 + if i >= length: + break + + # PostgreSQL escape-string: E'...' / e'...' + if ( + i + 1 < length + and inner[i] in "Ee" + and inner[i + 1] == "'" + ): + value, i = _parse_sql_string_literal(inner, i + 2, escape=True) + values.append(value) + continue + + if inner[i] == "'": + value, i = _parse_sql_string_literal(inner, i + 1, escape=False) + values.append(value) + continue + + if inner[i:].upper().startswith("NULL") and ( + i + 4 >= length or inner[i + 4] in " \t\n\r,)" + ): + values.append(None) + i += 4 + continue + + start = i + while i < length and inner[i] not in ",)": + i += 1 + token = inner[start:i].strip() + if not token: + # Unexpected char (e.g. stray ')'); advance to avoid infinite loop. + i += 1 + continue + if re.fullmatch(r"-?\d+", token): + values.append(int(token)) + elif re.fullmatch(r"-?\d+\.\d+", token): + values.append(float(token)) + else: + values.append(token) + + return values + + +def split_value_tuples(values_blob: str) -> list[str]: + """Split VALUES blob into individual tuple strings.""" + tuples: list[str] = [] + depth = 0 + start: int | None = None + in_quote = False + idx = 0 + length = len(values_blob) + + while idx < length: + ch = values_blob[idx] + if ch == "'": + if not in_quote: + in_quote = True + elif idx + 1 < length and values_blob[idx + 1] == "'": + idx += 1 + else: + in_quote = False + idx += 1 + continue + + if in_quote: + idx += 1 + continue + + if ch == "(": + if depth == 0: + start = idx + depth += 1 + elif ch == ")": + depth -= 1 + if depth == 0 and start is not None: + tuples.append(values_blob[start: idx + 1]) + start = None + idx += 1 + + return tuples + + +def _find_alias_clause(sql_text: str, start: int) -> re.Match[str] | None: + """Find ``) AS v(`` starting at/after *start*, skipping SQL string literals.""" + in_quote = False + idx = start + length = len(sql_text) + + while idx < length: + ch = sql_text[idx] + if ch == "'": + if not in_quote: + in_quote = True + elif idx + 1 < length and sql_text[idx + 1] == "'": + idx += 2 + continue + else: + in_quote = False + idx += 1 + continue + + if in_quote: + idx += 1 + continue + + match = ALIAS_CLAUSE_RE.match(sql_text, idx) + if match is not None: + return match + idx += 1 + + return None + + +def _parse_update_from_header( + sql_text: str, + header: re.Match[str], +) -> ParsedUpdateBlock | None: + values_start = header.end() + alias_match = _find_alias_clause(sql_text, values_start) + if alias_match is None: + return None + + values_blob = sql_text[values_start: alias_match.start()] + aliases_start = alias_match.end() + alias_close = sql_text.find(")", aliases_start) + if alias_close == -1: + return None + + aliases = [ + part.strip() + for part in sql_text[aliases_start:alias_close].split(",") + if part.strip() + ] + context = header.group("context") + set_clause = header.group("set_clause") + + set_targets: dict[str, str] = {} + json_hints: list[str] = [] + for set_match in SET_ASSIGN_RE.finditer(set_clause): + target = set_match.group("target") + alias = set_match.group("alias") + set_targets[target] = alias + if target in ("widgetcontrols", "filterparam", "inputparams"): + json_hints.append(target) + + rows: list[list[Any]] = [] + for tuple_raw in split_value_tuples(values_blob): + try: + rows.append(parse_sql_value_tuple(tuple_raw)) + except ValueError: + continue + + if not rows: + return None + + return ParsedUpdateBlock( + context=context, + set_targets=set_targets, + value_aliases=aliases, + rows=rows, + json_hints=json_hints, + ) + + +def parse_update_blocks(sql_text: str) -> list[ParsedUpdateBlock]: + """Parse ``UPDATE … AS t SET … FROM (VALUES …) AS v(…)`` blocks. + + Uses the real UPDATE header regex so the word UPDATE inside translated + string literals (e.g. ``'… FOR UPDATE operation'``) is ignored. + """ + blocks: list[ParsedUpdateBlock] = [] + for header in UPDATE_HEADER_RE.finditer(sql_text): + block = _parse_update_from_header(sql_text, header) + if block is not None: + blocks.append(block) + return blocks + + +def _alias_index(aliases: Sequence[str], name: str) -> int | None: + try: + return aliases.index(name) + except ValueError: + lowered = name.lower() + for idx, alias in enumerate(aliases): + if alias.lower() == lowered: + return idx + return None + + +def _cell(row: Sequence[Any], aliases: Sequence[str], alias: str) -> Any: + idx = _alias_index(aliases, alias) + if idx is None or idx >= len(row): + return None + return row[idx] + + +def _org_to_i18n(context: str, org_column: str) -> str | None: + overrides = _CONTEXT_I18N_OVERRIDES.get(context, {}) + if org_column in overrides: + return overrides[org_column] + return _ORG_TO_I18N_DEFAULT.get(org_column) + + +def _sql_literal(value: Any, *, as_json: bool = False) -> str: + if value is None: + return "NULL" + text = str(value).replace("'", "''") + if as_json: + return f"'{text}'::json" + return f"'{text}'" + + +def blocks_to_multilang_rows( + table: str, + blocks: Iterable[ParsedUpdateBlock], + *, + project_type: str = "", + lang: str = SEED_LANGUAGE_ID, + # Backward-compatible alias (ignored when project_type is set). + schema_name: str | None = None, +) -> list[MultilangRow]: + rows: list[MultilangRow] = [] + stamped_type = str(project_type or schema_name or "") + for block in blocks: + for raw in block.rows: + values: dict[str, Any] = { + "project_type": stamped_type, + "context": block.context, + "lang": lang, + } + + if table == "dbconfig_form_fields": + values.update({ + "source": _cell(raw, block.value_aliases, "columnname"), + "formname": _cell(raw, block.value_aliases, "formname"), + "formtype": _cell(raw, block.value_aliases, "formtype"), + "tabname": _cell(raw, block.value_aliases, "tabname"), + }) + elif table == "dbconfig_form_fields_feat": + values.update({ + "source": _cell(raw, block.value_aliases, "columnname"), + "formname": _cell(raw, block.value_aliases, "formname"), + "formtype": _cell(raw, block.value_aliases, "formtype"), + "tabname": _cell(raw, block.value_aliases, "tabname"), + }) + elif table == "dbconfig_form_fields_json": + values.update({ + "source": _cell(raw, block.value_aliases, "columnname"), + "formname": _cell(raw, block.value_aliases, "formname"), + "formtype": _cell(raw, block.value_aliases, "formtype"), + "tabname": _cell(raw, block.value_aliases, "tabname"), + "hint": block.json_hints[0] if block.json_hints else "widgetcontrols", + "text": _cell(raw, block.value_aliases, "text"), + }) + elif table == "dbconfig_form_tabs": + values.update({ + "formname": _cell(raw, block.value_aliases, "formname"), + "source": _cell(raw, block.value_aliases, "tabname"), + }) + elif table == "dbconfig_form_tableview": + values.update({ + "source": _cell(raw, block.value_aliases, "objectname"), + "columnname": _cell(raw, block.value_aliases, "columnname"), + }) + elif table == "dbconfig_typevalue": + values.update({ + "formname": _cell(raw, block.value_aliases, "formname"), + "source": _cell(raw, block.value_aliases, "source"), + }) + elif table == "dbtypevalue": + values.update({ + "source": _cell(raw, block.value_aliases, "id"), + "typevalue": _cell(raw, block.value_aliases, "typevalue"), + }) + elif table == "dbconfig_param_system": + values["source"] = _cell(raw, block.value_aliases, "parameter") + elif table in ("dbparam_user", "dbmessage", "dbfprocess", "dbconfig_report", + "dbconfig_toolbox", "dbfunction", "dbtable", "dbconfig_visit_parameter"): + key = "fid" if table == "dbfprocess" else "id" + values["source"] = _cell(raw, block.value_aliases, key) + elif table == "dbconfig_csv": + values["source"] = _cell(raw, block.value_aliases, "fid") + elif table == "dblabel": + values["source"] = _cell(raw, block.value_aliases, "id") + elif table == "dbplan_price": + values["source"] = _cell(raw, block.value_aliases, "id") + elif table == "dbjson": + hint = block.json_hints[0] if block.json_hints else next(iter(block.set_targets), "text") + values.update({ + "hint": hint, + "source": _cell(raw, block.value_aliases, "id"), + "text": _cell(raw, block.value_aliases, "text"), + }) + else: + continue + + for org_col, v_alias in block.set_targets.items(): + i18n_col = _org_to_i18n(block.context, org_col) + if not i18n_col: + continue + if table == "dbconfig_form_fields_json" and i18n_col == "text": + values["text"] = _cell(raw, block.value_aliases, v_alias) + elif table == "dbjson" and i18n_col == "text": + values["text"] = _cell(raw, block.value_aliases, v_alias) + else: + values[i18n_col] = _cell(raw, block.value_aliases, v_alias) + + if values.get("source") is not None: + values["source"] = str(values["source"]) + + target_table = BASELINE_TO_MULTILANG_TABLE.get(table) + if not target_table: + continue + rows.append(MultilangRow(table=target_table, values=values)) + return rows + + +def build_insert_sql( + table: str, + rows: Sequence[MultilangRow], + *, + batch_size: int = 500, + on_conflict: str = "update", +) -> list[str]: + """Build batched INSERT statements. + + on_conflict: + - ``update``: ON CONFLICT DO UPDATE (schema create/reseed) + - ``nothing``: ON CONFLICT DO NOTHING + - ``none``: plain INSERT (caller must delete existing rows first) + """ + rows = _dedupe_rows_by_conflict_key(table, rows) + if not rows: + return [] + + conflict_keys = _TABLE_CONFLICT_KEYS.get(table) + if not conflict_keys: + return [] + + mode = str(on_conflict or "update").strip().lower() + if mode not in ("update", "nothing", "none"): + mode = "update" + + statements: list[str] = [] + for start in range(0, len(rows), batch_size): + chunk = rows[start: start + batch_size] + columns = list(chunk[0].values.keys()) + update_cols = [ + col for col in columns + if col not in conflict_keys and col not in ("project_type", "context", "lang") + ] + + values_sql: list[str] = [] + for row in chunk: + literals = [] + for col in columns: + val = row.values.get(col) + as_json = col == "text" and table in ("dbjson", "config_form_fields_json") + literals.append(_sql_literal(val, as_json=as_json)) + values_sql.append(f"({', '.join(literals)})") + + quoted_columns = ", ".join(_quote_sql_col(col) for col in columns) + values_clause = ", ".join(values_sql) + if mode == "none": + sql = ( + f"INSERT INTO multilang.{table} ({quoted_columns}) " + f"VALUES {values_clause};" + ) + else: + conflict = ", ".join(_quote_sql_col(key) for key in conflict_keys) + if mode == "nothing" or not update_cols: + conflict_sql = f"ON CONFLICT ({conflict}) DO NOTHING" + else: + update_clause = ", ".join( + f"{_quote_sql_col(col)} = EXCLUDED.{_quote_sql_col(col)}" + for col in update_cols + ) + conflict_sql = f"ON CONFLICT ({conflict}) DO UPDATE SET {update_clause}" + sql = ( + f"INSERT INTO multilang.{table} ({quoted_columns}) " + f"VALUES {values_clause} " + f"{conflict_sql};" + ) + statements.append(sql) + return statements + + +def load_baseline_rows_for_project_type( + sql_root: str, + project_type: str, + *, + lang_id: str = SEED_LANGUAGE_ID, + lang_folder: str | None = None, +) -> list[MultilangRow]: + """Parse baseline SQL once for a project type; project_type is left empty.""" + folder = lang_folder or SEED_LANGUAGE_FOLDER + pt = normalize_project_type(project_type) + if not pt: + return [] + + i18n_dir = baseline_i18n_dir(sql_root, pt, lang=folder) + if not i18n_dir or not os.path.isdir(i18n_dir): + return [] + + all_rows: list[MultilangRow] = [] + for baseline_file in _PROJECT_TYPE_TABLES.get(pt, ()): + target = BASELINE_TO_MULTILANG_TABLE.get(baseline_file) + if not target or target not in _TABLE_CONFLICT_KEYS: + continue + path = os.path.join(i18n_dir, f"{baseline_file}.sql") + if not os.path.isfile(path): + continue + with open(path, encoding="utf-8") as handle: + sql_text = handle.read() + blocks = parse_update_blocks(sql_text) + all_rows.extend( + blocks_to_multilang_rows( + baseline_file, + blocks, + project_type="", + lang=lang_id, + ) + ) + return all_rows + + +def rows_for_project_type( + template_rows: Sequence[MultilangRow], + project_type: str, +) -> list[MultilangRow]: + """Shallow-copy template rows with project_type stamped.""" + pt = str(project_type or "").strip().lower() + return [ + MultilangRow(table=row.table, values={**row.values, "project_type": pt}) + for row in template_rows + ] + + +def _statements_from_rows( + rows: Sequence[MultilangRow], + *, + on_conflict: str = "update", + batch_size: int = 500, +) -> list[str]: + by_table: dict[str, list[MultilangRow]] = {} + for row in rows: + by_table.setdefault(row.table, []).append(row) + + statements: list[str] = [] + for target_table in MULTILANG_UI_TABLES: + table_rows = by_table.get(target_table) or [] + statements.extend( + build_insert_sql( + target_table, + table_rows, + batch_size=batch_size, + on_conflict=on_conflict, + ) + ) + return statements + + +def seed_sql_for_project_types( + sql_root: str, + project_types: Sequence[str], + *, + lang: str = SEED_LANGUAGE_ID, + on_conflict: str = "update", + batch_size: int = 500, +) -> list[tuple[str, list[str]]]: + """Build seed SQL for many project types, parsing each baseline once. + + Returns a list of ``(project_type, statements)`` in the same order as + ``project_types``. + """ + lang_id = normalize_language_id(lang) + lang_folder = normalize_language_folder(lang) + + templates: dict[str, list[MultilangRow]] = {} + result: list[tuple[str, list[str]]] = [] + for project_type in project_types: + pt = normalize_project_type(project_type) + if not pt: + result.append((str(project_type or ""), [])) + continue + if pt not in templates: + templates[pt] = load_baseline_rows_for_project_type( + sql_root, + pt, + lang_id=lang_id, + lang_folder=lang_folder, + ) + template = templates[pt] + if not template: + result.append((pt, [])) + continue + rows = rows_for_project_type(template, pt) + result.append( + ( + pt, + _statements_from_rows( + rows, on_conflict=on_conflict, batch_size=batch_size, + ), + ) + ) + return result + + +_fingerprint_cache: dict[str, str] = {} + + +def invalidate_baseline_fingerprint_cache(sql_root: str | None = None) -> None: + """Drop cached baseline fingerprints (all, or for one sql_root).""" + if sql_root is None: + _fingerprint_cache.clear() + else: + _fingerprint_cache.pop(sql_root, None) + + +def compute_baseline_fingerprint(sql_root: str) -> str: + """Fingerprint of bundled en_US baseline SQL files (content + mtime).""" + cached = _fingerprint_cache.get(sql_root) + if cached is not None: + return cached + + digest = hashlib.sha256() + for pt in sorted(TRANSLATABLE_PROJECT_TYPES): + table_files = seed_table_files_for_project_type(pt, sql_root) + if not table_files: + continue + digest.update(pt.encode("utf-8")) + i18n_dir = baseline_i18n_dir(sql_root, pt) + if not i18n_dir: + continue + for baseline_file in table_files: + path = os.path.join(i18n_dir, f"{baseline_file}.sql") + digest.update(baseline_file.encode("utf-8")) + digest.update(str(os.path.getmtime(path)).encode("utf-8")) + with open(path, "rb") as handle: + for chunk in iter(lambda: handle.read(65536), b""): + digest.update(chunk) + fingerprint = digest.hexdigest() + _fingerprint_cache[sql_root] = fingerprint + return fingerprint + + +def baseline_needs_reseed(sql_root: str, stored_fingerprint: str | None) -> bool: + if not stored_fingerprint: + return True + return compute_baseline_fingerprint(sql_root) != stored_fingerprint + + +def parse_stored_seeded_project_types(addparam: Any) -> set[str]: + """Read seeded project types from multilang.sys_version.addparam.""" + if not addparam: + return set() + try: + data = json.loads(addparam) if isinstance(addparam, str) else addparam + except (TypeError, ValueError): + return set() + if not isinstance(data, dict): + return set() + raw = data.get("seeded_project_types") + if raw is None: + # Backward compatible with older addparam payloads. + raw = data.get("seeded_schemas") or [] + if not isinstance(raw, list): + return set() + return {str(name).strip().lower() for name in raw if name} + + +def fetch_seeded_project_types_from_multilang( + fetcher: Callable[[str, Optional[list]], Optional[list[tuple]]], +) -> set[str]: + """Return project types that currently have rows in multilang seed tables.""" + if not MULTILANG_UI_TABLES: + return set() + parts = [ + f"SELECT project_type FROM multilang.{table} " + "WHERE project_type IS NOT NULL AND BTRIM(project_type) <> ''" + for table in MULTILANG_UI_TABLES + ] + sql = ( + "SELECT DISTINCT lower(btrim(project_type)) FROM (" + + " UNION ALL ".join(parts) + + ") AS seeded" + ) + rows = fetcher(sql, None) + if not rows: + return set() + return {str(row[0]).strip().lower() for row in rows if row and row[0]} + + +def delete_project_type_seed_sql(project_types: Iterable[str]) -> list[str]: + """Build DELETE statements for removed project types.""" + statements: list[str] = [] + for project_type in project_types: + esc = str(project_type).replace("'", "''").strip().lower() + if not esc: + continue + for table in MULTILANG_UI_TABLES: + statements.append( + f"DELETE FROM multilang.{table} WHERE project_type = '{esc}';" + ) + return statements + + +def _locale_display_name(lang_id: str, folder: str) -> str | None: + """Return display name from bundled config.sqlite locales table, if available.""" + try: + import sqlite3 + + plugin_dir = os.path.abspath(os.path.join(os.path.dirname(__file__), os.pardir, os.pardir)) + db_path = os.path.join(plugin_dir, "resources", "gis", "config.sqlite") + if not os.path.isfile(db_path): + return None + with sqlite3.connect(db_path) as conn: + row = conn.execute( + "SELECT name FROM locales WHERE locale = ? OR lower(locale) = ? LIMIT 1", + (folder, lang_id), + ).fetchone() + if row and row[0]: + return str(row[0]) + except Exception: + return None + return None + + +def ensure_cat_language_sql(lang: str, idval: str | None = None) -> str: + """INSERT ON CONFLICT DO NOTHING for multilang.cat_language.""" + lang_id = normalize_language_id(lang) + if idval is not None: + complete_name = idval + else: + folder = normalize_language_folder(lang) + complete_name = _locale_display_name(lang_id, folder) or folder + esc_id = lang_id.replace("'", "''") + esc_val = str(complete_name).replace("'", "''") + return ( + f"INSERT INTO multilang.cat_language (id, idval) " + f"VALUES ('{esc_id}', '{esc_val}') " + "ON CONFLICT (id) DO NOTHING;" + ) + + +def build_change_lang_sql( + schema_name: str, + language: str, + *, + multilang_exists: bool, + project_type: str | None = None, + sql_schema_name: str | None = None, +) -> str: + """Build SQL to update project language and optional multilang user preference. + + When ``multilang_exists`` is False, only ``sys_version.language`` is updated. + Preference rows store both schema_name and project_type. + """ + lang = str(language or "").replace("'", "''") + schema_sql = (sql_schema_name or str(schema_name or "")).strip() + schema_value = str(schema_name or "").replace('"', "").replace("'", "''").strip() + pt = normalize_project_type(project_type) or "" + statements = [f"UPDATE {schema_sql}.sys_version SET language = '{lang}';"] + if multilang_exists and schema_value and pt: + lang_id = normalize_language_id(language).replace("'", "''") + esc_pt = pt.replace("'", "''") + statements.append(ensure_cat_language_sql(language)) + statements.append( + "INSERT INTO multilang.cat_user_lang " + "(schema_name, project_type, username, lang) " + f"VALUES ('{schema_value}', '{esc_pt}', current_user, '{lang_id}') " + "ON CONFLICT (schema_name, username) DO UPDATE " + "SET lang = EXCLUDED.lang, " + "project_type = EXCLUDED.project_type, " + "updated_on = now(), updated_by = CURRENT_USER;" + ) + return "".join(statements) + + +def delete_language_seed_sql(lang: str, *, drop_catalog: bool = True) -> list[str]: + """Build DELETE statements for one language across multilang seed tables.""" + lang_id = normalize_language_id(lang) + esc = lang_id.replace("'", "''") + statements: list[str] = [] + for table in MULTILANG_UI_TABLES: + statements.append(f"DELETE FROM multilang.{table} WHERE lang = '{esc}';") + if drop_catalog: + statements.append(f"DELETE FROM multilang.cat_language WHERE id = '{esc}';") + return statements + + +def fetch_seeded_language_ids( + fetcher: Callable[[str, Optional[list]], Optional[list[tuple]]], +) -> set[str]: + """Return language ids present in multilang.cat_language.""" + rows = fetcher("SELECT id FROM multilang.cat_language", None) + if not rows: + return set() + return {normalize_language_id(str(row[0])) for row in rows if row and row[0]} + + +def language_baselines_exist(sql_root: str, lang: str) -> bool: + """True when at least one project type has bundled SQL for this language folder.""" + lang_folder = normalize_language_folder(lang) + return any( + project_type_has_baseline(sql_root, pt, lang=lang_folder) + for pt in TRANSLATABLE_PROJECT_TYPES + ) + + +def seeded_project_types_out_of_sync(current: set[str], stored: set[str]) -> bool: + """True when project-type sets differ from the last multilang seed.""" + return {str(x).lower() for x in (current or ())} != {str(x).lower() for x in (stored or ())} + + +def translatable_project_types_with_baseline(sql_root: str) -> list[str]: + """Return sorted project types that have bundled baseline SQL.""" + return sorted( + pt + for pt in TRANSLATABLE_PROJECT_TYPES + if project_type_has_baseline(sql_root, pt) + ) \ No newline at end of file diff --git a/core/admin/i18n_hot_update.py b/core/admin/i18n_hot_update.py index ace151d1e7..5a15d88aa4 100644 --- a/core/admin/i18n_hot_update.py +++ b/core/admin/i18n_hot_update.py @@ -9,11 +9,11 @@ import re from functools import partial -from qgis.PyQt.QtCore import Qt +from qgis.PyQt.QtCore import Qt, QTimer from qgis.PyQt.QtGui import QStandardItem, QStandardItemModel from qgis.PyQt.QtWidgets import ( QListWidget, QCompleter, QLineEdit, QVBoxLayout, QWidget, - QHeaderView, QSizePolicy, QGroupBox, QScrollArea, + QHeaderView, QSizePolicy, QScrollArea, ) from ..ui.ui_manager import GwAdminI18NHotUpdateUi @@ -21,7 +21,10 @@ from qgis.PyQt.sip import isdeleted from ...libs import lib_vars, tools_qt, tools_db, tools_os from . import _admin_catalog as admin_catalog -from .i18n_languages import GwI18NManageLanguagesDialog, _I18N_SCHEMAS +from .i18n_language_service import I18N_SCHEMAS +from .i18n_languages import GwI18NManageLanguagesDialog +from .i18n_multilang_languages import GwI18NMultilangLanguagesDialog +from .i18n_baseline_seed import build_change_lang_sql, normalize_language_folder _SCHEMA_COLUMNS = ("Schema", "Kind", "Version", "Language", "Created", "Last update") @@ -46,6 +49,8 @@ "dbconfig_form_fields_feat.sql", "dbconfig_form_fields_json.sql", }) +_HOT_UPDATE_TAB_INDEX = 0 +_MULTILANG_TAB_INDEX = 1 class GwAdminI18NHotUpdate(): @@ -61,6 +66,8 @@ def __init__(self, admin_btn): self.dlg_qm = None self._scroll_area = None self._scroll_content = None + self._tab_heights: dict[int, int] = {} + self._last_tab_index: int | None = None self.dev_commit = None def init_dialog(self): @@ -80,20 +87,29 @@ def init_dialog(self): self._setup_schema_table() self._set_signals() self._setup_tables_filter() - self._populate_language_combo() + self._populate_language_combo(mode="hot_update") self._refresh_schema_table() - self._apply_dialog_height() + self._populate_language_combo(mode="multilang") + self._last_tab_index = self.dlg_qm.tab_update_type.currentIndex() self.admin._manage_schemas_update_system_info = self._update_system_info self.dlg_qm.finished.connect(self._clear_admin_callbacks) tools_gw.open_dialog(self.dlg_qm, dlg_name='admin_i18n_hot_update') + # Fit after show/layout — same as tab change — so sizeHint includes the filter. + QTimer.singleShot(0, self._apply_dialog_height) def _set_signals(self): self.dlg_qm.btn_update.clicked.connect(partial(self._run_update)) self.dlg_qm.btn_close.clicked.connect(partial(tools_gw.close_dialog, self.dlg_qm)) - self.dlg_qm.btn_manage_language.clicked.connect(partial(self._open_manage_language)) + self.dlg_qm.btn_manage_language_hot_update.clicked.connect(partial(self._open_manage_language_hot_update)) + self.dlg_qm.btn_manage_language_multilang.clicked.connect(partial(self._open_manage_language_multilang)) self.dlg_qm.btn_refresh.clicked.connect(partial(self._refresh_schema_table)) self.dlg_qm.cmb_connection.currentIndexChanged.connect(partial(self._on_connection_changed)) - self.dlg_qm.cmb_language.currentIndexChanged.connect(partial(self._save_language_selection)) + self.dlg_qm.cmb_language_hot_update.currentIndexChanged.connect(partial(self._save_language_selection, + self.dlg_qm.cmb_language_hot_update)) + self.dlg_qm.cmb_language_multilang.currentIndexChanged.connect(partial(self._save_language_selection, + self.dlg_qm.cmb_language_multilang)) + self.dlg_qm.tab_update_type.currentChanged.connect(partial(self._on_tab_changed)) + self.dlg_qm.btn_apply.clicked.connect(partial(self._apply_multilang)) def _setup_status_label(self) -> None: self.dlg_qm.lbl_info.setWordWrap(False) @@ -142,6 +158,28 @@ def _format_system_info(self) -> str: def _update_system_info(self) -> None: self.dlg_qm.txt_system_info.setPlainText(self._format_system_info()) + def _multilang_schema_exists(self) -> bool: + if not tools_db.dao: + return False + return admin_catalog.schema_exists("multilang") + + def _update_multilang_tab_visibility(self) -> None: + """Show Multilang tab only when the multilang schema exists on the connection.""" + tab_widget = self.dlg_qm.tab_update_type + multilang_exists = self._multilang_schema_exists() + + tab_widget.blockSignals(True) + try: + tab_widget.setTabVisible(_MULTILANG_TAB_INDEX, multilang_exists) + tab_widget.tabBar().setVisible(multilang_exists) + if not multilang_exists and tab_widget.currentIndex() != _HOT_UPDATE_TAB_INDEX: + tab_widget.setCurrentIndex(_HOT_UPDATE_TAB_INDEX) + self._last_tab_index = _HOT_UPDATE_TAB_INDEX + finally: + tab_widget.blockSignals(False) + + self._change_action_buttons_visibility() + def _on_connection_changed(self) -> None: connection_name = tools_qt.get_text( self.dlg_qm, self.dlg_qm.cmb_connection, return_string_null=False, @@ -197,23 +235,149 @@ def _ensure_dialog_scroll(self) -> None: self._scroll_area = scroll_area self._scroll_content = content - def _apply_dialog_height(self) -> None: - margin_top = 14 - margin_bottom = 38 - margin_between = 10 + def _on_tab_changed(self, index: int) -> None: + if self._last_tab_index is not None: + self._tab_heights[self._last_tab_index] = self.dlg_qm.height() + self._last_tab_index = index + self._change_action_buttons_visibility() + if index == _MULTILANG_TAB_INDEX: + self._refresh_lbl_multilang_language() + QTimer.singleShot(0, partial(self._apply_dialog_height, prefer_cached=True)) + + def _apply_tab_heights(self, tab_index: int | None = None) -> None: + """Make QTabWidget height follow the active tab content only.""" + tab_widget = self.dlg_qm.tab_update_type + if tab_index is None: + tab_index = tab_widget.currentIndex() + for index in range(tab_widget.count()): + page = tab_widget.widget(index) + if index == tab_index: + page.setSizePolicy( + QSizePolicy.Policy.Preferred, QSizePolicy.Policy.Preferred, + ) + else: + page.setSizePolicy( + QSizePolicy.Policy.Ignored, QSizePolicy.Policy.Ignored, + ) + page.updateGeometry() + tab_widget.updateGeometry() + + def _tab_content_height(self, tab_index: int | None = None) -> int: + tab_widget = self.dlg_qm.tab_update_type + if tab_index is None: + tab_index = tab_widget.currentIndex() + page = tab_widget.widget(tab_index) + self._apply_tab_heights(tab_index) + tab_bar_h = 0 + if tab_widget.tabBar().isVisible(): + tab_bar_h = tab_widget.tabBar().sizeHint().height() + return tab_bar_h + page.sizeHint().height() + + def _content_preferred_height(self, tab_index: int | None = None) -> int: + layout = self.dlg_qm.verticalLayout + spacing = layout.spacing() + return ( + self.dlg_qm.grb_connection.sizeHint().height() + + spacing + + self.dlg_qm.grb_schemas.sizeHint().height() + + spacing + + self._tab_content_height(tab_index) + ) - content_height = margin_top - for i, widget in enumerate(self.dlg_qm.findChildren(QGroupBox)): - content_height += widget.sizeHint().height() - if isinstance(widget, QGroupBox): - content_height += margin_between + def _fit_dialog_geometry(self, *, prefer_cached: bool = False) -> None: + """Resize dialog to fit content; optionally restore a tab's remembered height.""" + layout = self.dlg_qm.verticalLayout + margins = layout.contentsMargins() + footer_h = self.dlg_qm.lyt_buttons.sizeHint().height() + current = self.dlg_qm.tab_update_type.currentIndex() + + computed = ( + self._content_preferred_height(current) + + footer_h + + margins.top() + + margins.bottom() + + layout.spacing() + ) + computed = max(computed, self.dlg_qm.minimumHeight()) + + cached = self._tab_heights.get(current) + if prefer_cached and cached is not None: + height = cached + else: + height = computed + self._tab_heights[current] = height + + tab_h = self._tab_content_height(current) + tab_widget = self.dlg_qm.tab_update_type + tab_widget.setSizePolicy(QSizePolicy.Policy.Preferred, QSizePolicy.Policy.Fixed) + tab_widget.setFixedHeight(tab_h) + + width = self.dlg_qm.width() + self.dlg_qm.setMaximumSize(16777215, 16777215) + self.dlg_qm.resize(width, height) + self.dlg_qm.setMaximumHeight(computed) + + def _apply_dialog_height(self, *, prefer_cached: bool = False) -> None: + self._ensure_dialog_scroll() + self._fit_dialog_geometry(prefer_cached=prefer_cached) - dialog_height = content_height + margin_bottom - dialog_width = self.dlg_qm.width() - self.dlg_qm.resize(dialog_width, dialog_height) - self.dlg_qm.setMaximumHeight(dialog_height) + def _change_action_buttons_visibility(self) -> None: + tab_widget = self.dlg_qm.tab_update_type + on_multilang_tab = ( + tab_widget.currentIndex() == _MULTILANG_TAB_INDEX + and tab_widget.isTabVisible(_MULTILANG_TAB_INDEX) + ) + self.dlg_qm.btn_apply.setVisible(on_multilang_tab) + self.dlg_qm.btn_update.setVisible(not on_multilang_tab) - self._ensure_dialog_scroll() + def _refresh_lbl_multilang_language(self) -> None: + language = self._fetch_multilang_language() + msg = "Multilang language currently used: {0}." + msg_params = (language.upper(),) + if language: + tools_qt.set_widget_text(self.dlg_qm, 'lbl_multilang_language', tools_qt.tr(msg, list_params=msg_params)) + else: + tools_qt.set_widget_text(self.dlg_qm, 'lbl_multilang_language', 'Select a schema to see the Multilang language currently used.') + + def _select_language_from_table(self, schema_name: str = "") -> str: + """Return the Language column from the selected schema table row.""" + selection = self.dlg_qm.tbl_schemas.selectionModel() + if selection is not None: + indexes = selection.selectedRows() + if indexes: + item = self._schema_model.item(indexes[0].row(), _COL_LANGUAGE) + if item and item.text(): + return str(item.text()) + if schema_name: + return self._fetch_schema_language(schema_name) + return "" + + def _fetch_multilang_language(self) -> str: + if not tools_db.dao: + return "" + schema_name = self._selected_schema_name() + + # Get the default language from the schema table + status, cursor = tools_gw.create_sqlite_conn("config") + default_language = self._select_language_from_table(schema_name) + sql = f"""SELECT name FROM locales WHERE locale = '{default_language}';""" + cursor.execute(sql) + row = cursor.fetchone() + default_language = str(row[0]) if row and row[0] else '' + + # Get the multilang language from the cat_user_lang table + cursor = tools_db.dao.get_cursor() + sql = f"""SELECT idval + FROM multilang.cat_language + WHERE id = ( + SELECT lang + FROM multilang.cat_user_lang + WHERE schema_name = '{schema_name}' + AND username = CURRENT_USER + );""" + cursor.execute(sql) + row = cursor.fetchone() + return str(row[0]) if row and row[0] else default_language def _setup_schema_table(self) -> None: self.dlg_qm.tbl_schemas.setModel(self._schema_model) @@ -262,13 +426,16 @@ def _apply_schema_table_height(self) -> None: def _setup_tables_filter(self) -> None: widget = QListWidget() + list_height = 60 widget.setObjectName('list_widget') - widget.setMaximumHeight(28) + widget.setFixedHeight(list_height) widget.setSizePolicy(QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Fixed) completer = QCompleter() type_ahead = QLineEdit() - type_ahead.setPlaceholderText(tools_qt.tr("Type to search...")) + msg = "Type to search..." + type_ahead.setPlaceholderText(tools_qt.tr(msg)) + type_ahead.setSizePolicy(QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Fixed) model = QStandardItemModel() completer.activated.connect( @@ -281,40 +448,63 @@ def _setup_tables_filter(self) -> None: widget.itemDoubleClicked.connect(partial(tools_gw.delete_item_on_doubleclick, widget)) widget.model().rowsInserted.connect(partial(self.update_selected_table_dic)) - layout = QVBoxLayout() - layout.setContentsMargins(0, 0, 0, 0) - layout.setSpacing(2) - layout.addWidget(type_ahead) - layout.addWidget(widget) - - container = QWidget() - container.setLayout(layout) - filter_layout = self.dlg_qm.wgt_tables_filter.layout() + filter_widget = self.dlg_qm.wgt_tables_filter + # Clear any designer min/max height so line edit + list are not clipped. + filter_widget.setMinimumHeight(0) + filter_widget.setMaximumHeight(16777215) + filter_widget.setSizePolicy( + QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Fixed, + ) + filter_layout = filter_widget.layout() if filter_layout is None: - filter_layout = QVBoxLayout(self.dlg_qm.wgt_tables_filter) + filter_layout = QVBoxLayout(filter_widget) filter_layout.setContentsMargins(0, 0, 0, 0) - filter_layout.addWidget(container) - - def _populate_language_combo(self) -> None: - self.dlg_qm.cmb_language.clear() + filter_layout.setSpacing(2) + filter_layout.addWidget(type_ahead) + filter_layout.addWidget(widget) + needed_h = ( + type_ahead.sizeHint().height() + + filter_layout.spacing() + + list_height + ) + filter_widget.setFixedHeight(needed_h) + filter_widget.updateGeometry() + + def _populate_language_combo(self, *, mode: str) -> None: + if mode == "multilang": + cmb_language = self.dlg_qm.cmb_language_multilang + where_clause = "active_multilang = 1" + insert_default = True + else: + cmb_language = self.dlg_qm.cmb_language_hot_update + where_clause = "active = 1" + insert_default = False + + cmb_language.clear() status, cursor = tools_gw.create_sqlite_conn("config") if not status or cursor is None: - tools_qt.set_widget_text(self.dlg_qm, 'lbl_info', "Config database file not found") + msg = "Config database file not found" + tools_qt.set_widget_text(self.dlg_qm, 'lbl_info', msg) return - cursor.execute("SELECT locale, name FROM locales WHERE active = 1 ORDER BY name") + cursor.execute( + f"SELECT locale, name FROM locales WHERE {where_clause} ORDER BY name" + ) rows = [[locale, name] for locale, name in cursor.fetchall()] if not rows: - tools_qt.set_widget_text(self.dlg_qm, 'lbl_info', "No active locales configured") + msg = "No active locales configured" + tools_qt.set_widget_text(self.dlg_qm, 'lbl_info', msg) return - tools_qt.fill_combo_values(self.dlg_qm.cmb_language, rows) + if insert_default: + rows.insert(0, ("Default", "Default")) + tools_qt.fill_combo_values(cmb_language, rows) language = tools_gw.get_config_parser( 'i18n_generator', 'qm_lang_language', "user", "session", False, ) if language: - tools_qt.set_combo_value(self.dlg_qm.cmb_language, language, 0, add_new=False) - - def _save_language_selection(self, *_args) -> None: - language = tools_qt.get_combo_value(self.dlg_qm, self.dlg_qm.cmb_language, 0) + tools_qt.set_combo_value(cmb_language, language, 0, add_new=False) + + def _save_language_selection(self, cmb_language, *_args) -> None: + language = tools_qt.get_combo_value(self.dlg_qm, cmb_language, 0) if language: tools_gw.set_config_parser( 'i18n_generator', 'qm_lang_language', f"{language}", @@ -360,6 +550,7 @@ def _refresh_schema_table(self) -> None: selection.blockSignals(False) self.dlg_qm.tbl_schemas.setSortingEnabled(True) self._apply_schema_table_height() + self._update_multilang_tab_visibility() self._apply_dialog_height() if previous_schema: self._select_schema_row(previous_schema) @@ -419,11 +610,25 @@ def _on_schema_selection_changed(self, *_args) -> None: if not row: return kind = str(row.get("kind") or "").lower() - if kind in self.dbtables_dic or kind in _I18N_SCHEMAS: + if kind in self.dbtables_dic or kind in I18N_SCHEMAS: self._ensure_dbtables_dic(kind) self._tables_project_type = kind - def _open_manage_language(self) -> None: + index = self.dlg_qm.tab_update_type.currentIndex() + if index == _MULTILANG_TAB_INDEX: + self._refresh_lbl_multilang_language() + + def _open_manage_language_multilang(self) -> None: + dlg = getattr(self, 'dlg_multilang_languages', None) + if dlg is not None and not isdeleted(dlg) and dlg.isVisible(): + tools_gw.focus_open_dialog(dlg) + return + + dlg = GwI18NMultilangLanguagesDialog(self) + dlg.init_dialog() + self.dlg_multilang_languages = dlg + + def _open_manage_language_hot_update(self) -> None: dlg = getattr(self, 'dlg_i18n_languages', None) if dlg is not None and not isdeleted(dlg) and dlg.isVisible(): tools_gw.focus_open_dialog(dlg) @@ -439,6 +644,79 @@ def _selected_schema_row(self) -> dict | None: return None return admin_catalog.find_inventory_row(self._inventory_rows, schema=schema_name) + def _apply_multilang(self): + if not self._multilang_schema_exists(): + msg = "Multilang schema is not available on this connection." + tools_qt.show_info_box(tools_qt.tr(msg)) + return + + row = self._selected_schema_row() + if not row: + msg = "Select a schema" + tools_qt.show_info_box(msg) + return + + self._save_language_selection(self.dlg_qm.cmb_language_multilang) + language = tools_qt.get_combo_value(self.dlg_qm, self.dlg_qm.cmb_language_multilang, 0) + if not language: + msg = "Select a language" + tools_qt.show_info_box(msg) + return + + is_default = str(language).strip().lower() == "default" + + kind = str(row.get("kind") or "").upper() + schema_name = str(row.get("schema") or "") + if kind not in _TRANSLATABLE_KINDS: + msg = "{0}: unsupported type {1}" + msg_params = (row.get("schema") or "", kind or "?") + tools_qt.show_info_box(msg, msg_params=msg_params) + return + + msg = "Apply Multilang translation ({0}) to schema ({1})?" + title = "Update Multilang translation?" + msg_params = (language, schema_name) + if not tools_qt.show_question(msg, title, msg_params=msg_params): + return + + schema_value = schema_name.replace("'", "''") + project_type = str(row.get("kind") or "").strip().lower() + if is_default: + query = ( + "DELETE FROM multilang.cat_user_lang " + f"WHERE schema_name = '{schema_value}' AND username = CURRENT_USER;" + ) + else: + from .i18n_baseline_seed import ensure_cat_language_sql, normalize_language_id + + lang_id = normalize_language_id(language).replace("'", "''") + pt_value = project_type.replace("'", "''") + query = ( + ensure_cat_language_sql(language) + + "INSERT INTO multilang.cat_user_lang " + "(schema_name, project_type, username, lang) " + f"VALUES ('{schema_value}', '{pt_value}', CURRENT_USER,'{lang_id}') " + "ON CONFLICT (schema_name, username) DO UPDATE " + "SET lang = EXCLUDED.lang, " + "project_type = EXCLUDED.project_type, " + "updated_on = now(), updated_by = CURRENT_USER;" + ) + + try: + cursor = tools_db.dao.get_cursor() + cursor.execute(query) + tools_db.dao.commit() + msg = "{0}: Multilang language preference updated to {1}." + msg_params = (schema_name, language) + except Exception as e: + tools_db.dao.rollback() + msg = "{0}: Failed to update Multilang language preference: {1}" + msg_params = (schema_name, str(e)) + finally: + tools_qt.set_widget_text(self.dlg_qm, 'lbl_info', msg, msg_params=msg_params) + tools_qt.show_info_box(msg, msg_params=msg_params) + self._refresh_schema_table() + def _run_update(self): """Apply locally downloaded i18n SQL files to the selected schema.""" @@ -448,8 +726,8 @@ def _run_update(self): tools_qt.show_info_box(msg) return - self._save_language_selection() - self.language = tools_qt.get_combo_value(self.dlg_qm, self.dlg_qm.cmb_language, 0) + self._save_language_selection(self.dlg_qm.cmb_language_hot_update) + self.language = tools_qt.get_combo_value(self.dlg_qm, self.dlg_qm.cmb_language_hot_update, 0) if not self.language: msg = "Select a language" tools_qt.show_info_box(msg) @@ -484,7 +762,7 @@ def _run_update(self): try: status_cfg_msg, schema_errors = self._apply_local_sql_files() if status_cfg_msg is True: - self._change_lang() + self._change_lang(False) msg = "{0}: Database translation successful to {1}." msg_params = (schema_name, self.language) elif status_cfg_msg is False: @@ -494,8 +772,8 @@ def _run_update(self): msg = "{0}: Database translation canceled." msg_params = (schema_name,) if schema_errors: - msg = f"{tools_qt.tr(msg, list_params=msg_params)} Errors: {', '.join(schema_errors)}" - msg_params = None + msg_params = (tools_qt.tr(msg, list_params=msg_params), ', '.join(schema_errors)) + msg = "{0}: Errors: {1}" finally: self.dlg_qm.setEnabled(True) @@ -527,18 +805,14 @@ def make_list_multiple_option(self, completer, model, widget, list_widget): completer, model, widget, sorted(display_list, key=lambda x: x["idval"]), ) - @staticmethod - def _folder_locale(locale: str) -> str: - return locale.replace("-", "_") - def _dbmodel_dir(self) -> str: return os.path.join(lib_vars.plugin_dir, 'dbmodel') def _local_i18n_dir(self, kind: str, locale: str) -> str: - schema_path = _I18N_SCHEMAS.get(kind) + schema_path = I18N_SCHEMAS.get(kind) if not schema_path: return "" - folder = self._folder_locale(locale) + folder = normalize_language_folder(locale) return os.path.join(self._dbmodel_dir(), schema_path, folder) def _local_language_files_exist(self, locale: str, kind: str) -> bool: @@ -547,10 +821,6 @@ def _local_language_files_exist(self, locale: str, kind: str) -> bool: return False return any(name.endswith('.sql') for name in os.listdir(folder)) - def _sql_sources_for_kind(self, kind: str) -> list[tuple[str, str]]: - """Return (i18n_kind, target_schema) pairs to execute for a project kind.""" - return [(kind, self.schema)] - def _discover_dbtables(self, kind: str, locale: str) -> list[str]: i18n_dir = self._local_i18n_dir(kind, locale) if not i18n_dir or not os.path.isdir(i18n_dir): @@ -564,7 +834,7 @@ def _discover_dbtables(self, kind: str, locale: str) -> list[str]: def _ensure_dbtables_dic(self, kind: str) -> None: if kind in self.dbtables_dic: return - locale = tools_qt.get_combo_value(self.dlg_qm, self.dlg_qm.cmb_language, 0) or "en_US" + locale = tools_qt.get_combo_value(self.dlg_qm, self.dlg_qm.cmb_language_hot_update, 0) or "en_US" tables = self._discover_dbtables(kind, locale) if tables: self.dbtables_dic[kind] = { @@ -629,28 +899,27 @@ def _apply_local_sql_files(self): return False, [folder or self.project_type] messages = [] - for source_kind, target_schema in self._sql_sources_for_kind(self.project_type): - i18n_dir = self._local_i18n_dir(source_kind, self.language) - if not i18n_dir or not os.path.isdir(i18n_dir): - messages.append(i18n_dir or source_kind) - continue + i18n_dir = self._local_i18n_dir(self.project_type, self.language) + if not i18n_dir or not os.path.isdir(i18n_dir): + messages.append(i18n_dir or self.project_type) + return False, messages - for dbtable in dbtables: - sql_path = os.path.join(i18n_dir, f"{dbtable}.sql") - if not os.path.isfile(sql_path): - continue + for dbtable in dbtables: + sql_path = os.path.join(i18n_dir, f"{dbtable}.sql") + if not os.path.isfile(sql_path): + continue - tools_qt.set_widget_text( - self.dlg_qm, 'lbl_info', - "Updating {0}...", - msg_params=(f"{target_schema}/{dbtable}",), - ) - ok, error = self._execute_local_sql_file(sql_path, target_schema) - if not ok: - detail = error or os.path.basename(sql_path) - messages.append(f"{dbtable}.sql: {detail}") - if not tools_os.set_boolean(self.dev_commit, False): - break + msg = "Updating {0}..." + msg_params = (f"{self.schema}/{dbtable}",) + tools_qt.set_widget_text(self.dlg_qm, 'lbl_info', msg, msg_params=msg_params) + ok, error = self._execute_local_sql_file(sql_path, self.schema) + if not ok: + detail = error or os.path.basename(sql_path) + msg = "{0}.sql: {1}" + msg_params = (dbtable, detail) + messages.append(tools_qt.tr(msg, list_params=[msg_params])) + if not tools_os.set_boolean(self.dev_commit, False): + break if messages: return False, messages @@ -694,15 +963,24 @@ def _strip_tab_data_rows(sql: str) -> str: cleaned = re.sub(r",(\s*)\)", r"\1)", cleaned) return cleaned - def _change_lang(self) -> None: - lang = self.language.replace("'", "''") - schema = self._sql_schema_name(self.schema) - query = ( - f"UPDATE {schema}.sys_version SET language = '{lang}';" - f"INSERT INTO {schema}.config_param_user (parameter, value, cur_user) " - f"VALUES ('utils_language_ui', NULL,current_user) " - f"ON CONFLICT (parameter, cur_user) DO UPDATE " - f"SET value = EXCLUDED.value;" + def _change_lang(self, multilang_exists: bool | None = None) -> None: + + if multilang_exists is None: + multilang_exists = bool(tools_db.check_schema("multilang")) + + project_type = None + row = self._selected_schema_row() + if row: + project_type = str(row.get("kind") or "").strip().lower() or None + if not project_type: + project_type = str(getattr(self, "project_type", "") or "").strip().lower() or None + + query = build_change_lang_sql( + self.schema, + self.language, + multilang_exists=multilang_exists, + project_type=project_type, + sql_schema_name=self._sql_schema_name(self.schema), ) try: self.cursor_dest.execute(query) diff --git a/core/admin/i18n_language_service.py b/core/admin/i18n_language_service.py new file mode 100644 index 0000000000..719794b1dc --- /dev/null +++ b/core/admin/i18n_language_service.py @@ -0,0 +1,747 @@ +""" +UI-independent language package resolution, download, and installed-state tracking. + +Used by the Manage Languages dialog and by automatic post-connection provisioning. +""" + +from __future__ import annotations + +import json +import os +import re +import shutil +import tempfile +import urllib.error +import urllib.request +import zipfile +from dataclasses import dataclass, field +from pathlib import Path +from typing import Any, Callable, Iterable, Optional + +from ...libs import tools_qt +from .i18n_baseline_seed import ( + TRANSLATABLE_PROJECT_TYPES, + normalize_language_folder, + normalize_language_id, +) + +TRANSLATIONS_REPO_URL = "https://github.com/giswater/translations/raw/main" +TRANSLATIONS_GITHUB_TREE_URL = ( + "https://api.github.com/repos/Giswater/translations/git/trees/main?recursive=1" +) +_VERSION_FOLDER_RE = re.compile(r"^(\d+)/(\d+)/(\d+)$") + +I18N_SCHEMAS = { + "ws": "schemas/main/ws/final_pass/i18n", + "ud": "schemas/main/ud/final_pass/i18n", + "am": "schemas/addon/am/final_pass/i18n", + "cm": "schemas/addon/cm/final_pass/i18n", + "python": "i18n", +} +TS_NAME = "giswater" + +# Locales that do not require downloaded translation packages. +_NO_DOWNLOAD_LOCALES = frozenset({"en_us", "no_tr"}) + +RowFetcher = Callable[[str, Optional[list]], Optional[list[tuple]]] + +_available_versions_cache: list[str] | None = None + + +@dataclass +class LocaleRequirement: + """One locale needed for a connected database, with its highest required version.""" + + locale: str + version: str + sources: list[str] = field(default_factory=list) + + +@dataclass +class ProvisionResult: + """Aggregate result of ensuring language packages for a connection.""" + + downloaded: list[str] = field(default_factory=list) + skipped: list[str] = field(default_factory=list) + failed: list[tuple[str, str]] = field(default_factory=list) + requirements: list[LocaleRequirement] = field(default_factory=list) + + @property + def ok(self) -> bool: + return not self.failed + + @property + def needed_work(self) -> bool: + return bool(self.downloaded or self.failed) + + +def is_no_translation_locale(locale: str | None) -> bool: + """True for built-in locales that never need downloaded translation files.""" + if not locale: + return False + return normalize_language_id(locale) in _NO_DOWNLOAD_LOCALES + + +def parse_semver(version: str | None) -> tuple[int, int, int] | None: + if not version: + return None + text = str(version).strip().lstrip("v") + if text.lower() == "latest": + return None + parts = text.split(".") + if len(parts) != 3 or not all(part.isdigit() for part in parts): + return None + return tuple(int(part) for part in parts) # type: ignore[return-value] + + +def format_version(version: tuple[int, int, int]) -> str: + return ".".join(str(part) for part in version) + + +def version_to_path(version: str) -> str: + parsed = parse_semver(version) + if parsed is None: + return "latest" + return "/".join(str(part) for part in parsed) + + +def version_path_to_label(path: str) -> str: + if path == "latest": + return "latest" + return path.replace("/", ".") + + +def compare_versions(left: str | None, right: str | None) -> int: + """Return -1/0/1 for left < / == / > right. Non-semver 'latest' is treated as highest.""" + if (left or "").lower() == "latest" and (right or "").lower() == "latest": + return 0 + if (left or "").lower() == "latest": + return 1 + if (right or "").lower() == "latest": + return -1 + left_key = parse_semver(left) + right_key = parse_semver(right) + if left_key is None and right_key is None: + return 0 + if left_key is None: + return -1 + if right_key is None: + return 1 + if left_key < right_key: + return -1 + if left_key > right_key: + return 1 + return 0 + + +def max_version(versions: Iterable[str | None]) -> str | None: + best: str | None = None + for version in versions: + if not version: + continue + if best is None or compare_versions(version, best) > 0: + best = str(version) + return best + + +def _fetch_json(endpoint: str) -> dict | list | None: + request = urllib.request.Request(endpoint, method="GET") + request.add_header("Accept", "application/json") + try: + with urllib.request.urlopen(request, timeout=30) as response: + payload = json.loads(response.read().decode()) + except (urllib.error.URLError, urllib.error.HTTPError, OSError, json.JSONDecodeError): + return None + return payload + + +def _parse_versions_payload(payload: dict | list | None) -> list[str]: + if isinstance(payload, list): + versions = [str(item) for item in payload if parse_semver(str(item))] + elif isinstance(payload, dict): + versions = [ + str(item) + for item in payload.get("versions", []) + if parse_semver(str(item)) + ] + else: + return [] + return sort_versions(versions) + + +def sort_versions(versions: list[str]) -> list[str]: + parsed = [ + (parse_semver(version), version) + for version in versions + if parse_semver(version) is not None + ] + parsed.sort(key=lambda item: item[0]) + return [version for _key, version in parsed] + + +def fetch_available_versions() -> list[str]: + endpoint = f"{TRANSLATIONS_REPO_URL.rstrip('/')}/versions.json" + versions = _parse_versions_payload(_fetch_json(endpoint)) + if versions: + return versions + + payload = _fetch_json(TRANSLATIONS_GITHUB_TREE_URL) + if not isinstance(payload, dict): + return [] + + discovered: set[str] = set() + for entry in payload.get("tree", []): + if entry.get("type") != "tree": + continue + match = _VERSION_FOLDER_RE.match(str(entry.get("path", ""))) + if not match: + continue + discovered.add(".".join(match.groups())) + return sort_versions(sorted(discovered)) + + +def get_available_versions(*, refresh: bool = False) -> list[str]: + global _available_versions_cache + if refresh or _available_versions_cache is None: + _available_versions_cache = fetch_available_versions() + return _available_versions_cache + + +def resolve_translation_version_path( + user_version: str | None, + available_versions: list[str] | None = None, +) -> str: + """Pick the translations folder (``major/minor/patch`` or ``latest``).""" + versions = available_versions if available_versions is not None else get_available_versions() + user = parse_semver(user_version) + + if user is None or not versions: + if user_version: + return version_to_path(user_version) + return "latest" + + user_label = format_version(user) + parsed_versions = [ + (parse_semver(version), version) + for version in versions + if parse_semver(version) is not None + ] + parsed_versions.sort(key=lambda item: item[0]) + if not parsed_versions: + return version_to_path(user_version or "") + + available_labels = [version for _key, version in parsed_versions] + if user_label in available_labels: + return version_to_path(user_label) + + highest = parsed_versions[-1][0] + if user > highest: + return "latest" + + for version_key, version_label in parsed_versions: + if version_key >= user: + return version_to_path(version_label) + + return "latest" + + +def translation_version_label( + user_version: str | None = None, + *, + use_latest: bool = False, + available_versions: list[str] | None = None, +) -> str: + if use_latest: + return "latest" + version = user_version + if version is None: + from ...libs import tools_qgis + version, _ = tools_qgis.get_plugin_version() + path = resolve_translation_version_path(version, available_versions) + return version_path_to_label(path) + + +def plugin_dir() -> Path: + from ...libs import lib_vars + return Path(lib_vars.plugin_dir).resolve() + + +def dbmodel_dir() -> str: + from ...libs import lib_vars + return os.path.join(lib_vars.plugin_dir, "dbmodel") + + +def language_files_exist( + locale: str, + *, + cleanup_incomplete: bool = True, +) -> bool: + """True when local .ts and schema i18n SQL folders exist for the locale.""" + if locale.lower() == "en_us": + return True + + from ...libs import lib_vars + + folder = normalize_language_folder(locale) + ts_path = os.path.join(lib_vars.plugin_dir, "i18n", f"{TS_NAME}_{folder}.ts") + if not os.path.isfile(ts_path): + return False + for schema_key, schema_path in I18N_SCHEMAS.items(): + if schema_key == "python": + continue + path = os.path.join(dbmodel_dir(), schema_path, folder) + if not os.path.isdir(path) or not any(name.endswith(".sql") for name in os.listdir(path)): + if cleanup_incomplete: + delete_language_files(locale) + return False + return True + + +def language_package_paths(locale: str) -> tuple[Path, ...]: + """Return every on-disk artifact installed for a downloaded locale.""" + folder = normalize_language_folder(locale) + root = plugin_dir() + paths = [ + root / "i18n" / f"{TS_NAME}_{folder}.ts", + root / "i18n" / f"{TS_NAME}_{folder}.qm", + ] + paths.extend( + root / "dbmodel" / schema_path / folder + for schema_key, schema_path in I18N_SCHEMAS.items() + if schema_key != "python" + ) + return tuple(paths) + + +def delete_language_files(locale: str) -> tuple[bool, str | None]: + removed = False + try: + for path in language_package_paths(locale): + if path.is_dir(): + shutil.rmtree(path) + removed = True + elif path.is_file(): + path.unlink() + removed = True + remaining = [str(path) for path in language_package_paths(locale) if path.exists()] + if remaining: + msg = "could not remove: {0}" + msg_params = (', '.join(remaining),) + return False, tools_qt.tr(msg, msg_params=msg_params) + if not removed: + return False, "no local language folders found" + return True, None + except OSError as exc: + return False, str(exc) + + +def translation_zip_url( + locale: str, + *, + user_version: str | None = None, + use_latest: bool = False, + available_versions: list[str] | None = None, +) -> str: + filename = f"translations_{normalize_language_id(locale)}.zip" + base = TRANSLATIONS_REPO_URL.rstrip("/") + if use_latest: + version_path = "latest" + else: + version = user_version + if version is None: + from ...libs import tools_qgis + version, _ = tools_qgis.get_plugin_version() + version_path = resolve_translation_version_path(version, available_versions) + return f"{base}/{version_path}/{filename}" + + +def fetch_language_zip( + locale: str, + *, + user_version: str | None = None, + use_latest: bool = False, + available_versions: list[str] | None = None, +) -> tuple[bytes | None, str | None]: + url = translation_zip_url( + locale, + user_version=user_version, + use_latest=use_latest, + available_versions=available_versions, + ) + request = urllib.request.Request(url, method="GET") + request.add_header("Accept", "application/zip, application/octet-stream, */*") + try: + with urllib.request.urlopen(request, timeout=120) as response: + body = response.read() + if not body.startswith(b"PK"): + msg = "Response from {0} is not a ZIP archive" + msg_params = (url,) + return None, tools_qt.tr(msg, msg_params=msg_params) + return body, None + except urllib.error.HTTPError as exc: + if exc.code == 404: + msg = "Not found: {0}" + msg_params = (url,) + return None, tools_qt.tr(msg, msg_params=msg_params) + detail = exc.read().decode(errors="replace") + return None, f"HTTP {exc.code}: {detail}" + except (urllib.error.URLError, OSError) as exc: + return None, str(exc) + + +def extract_language_zip(zip_data: bytes) -> tuple[bool, str | None]: + target_root = plugin_dir() + try: + with tempfile.TemporaryDirectory() as tmpdir: + zip_path = Path(tmpdir) / "translations.zip" + zip_path.write_bytes(zip_data) + with zipfile.ZipFile(zip_path) as archive: + for member in archive.namelist(): + if member.endswith("/"): + continue + target = (target_root / member).resolve() + if not str(target).startswith(str(target_root)): + msg = "Unsafe path in ZIP archive: {0}" + msg_params = (member,) + return False, tools_qt.tr(msg, msg_params=msg_params) + archive.extractall(target_root) + except (zipfile.BadZipFile, OSError) as exc: + return False, str(exc) + + manifest_path = target_root / "manifest.json" + if manifest_path.exists(): + try: + manifest_path.unlink() + except OSError as exc: + msg = "Could not delete manifest.json: {0}" + msg_params = (str(exc),) + return False, tools_qt.tr(msg, msg_params=msg_params) + return True, None + + +def download_language_files( + locale: str, + *, + user_version: str | None = None, + use_latest: bool = False, + available_versions: list[str] | None = None, +) -> tuple[bool, str | None, str | None]: + """Download and extract language files. Returns (ok, failed_schema, error).""" + zip_data, error = fetch_language_zip( + locale, + user_version=user_version, + use_latest=use_latest, + available_versions=available_versions, + ) + if error or not zip_data: + msg = "Empty response" + return False, "zip", error or tools_qt.tr(msg) + ok, error = extract_language_zip(zip_data) + if not ok: + msg = "Could not extract language files" + return False, "zip", error or tools_qt.tr(msg) + return True, None, None + + +def get_installed_locale_meta(locale: str) -> tuple[bool, str | None]: + """Return (active, version) from the config SQLite ``locales`` table.""" + from ..utils import tools_gw + + status, cursor = tools_gw.create_sqlite_conn("config") + if not status or cursor is None: + return False, None + cursor.execute( + "SELECT active, version FROM locales WHERE locale = ? " + "ORDER BY id LIMIT 1", + (normalize_language_folder(locale),), + ) + row = cursor.fetchone() + if not row: + # Try lowercase id form used by some rows. + cursor.execute( + "SELECT active, version FROM locales WHERE lower(locale) = ? " + "ORDER BY id LIMIT 1", + (normalize_language_id(locale),), + ) + row = cursor.fetchone() + if not row: + return False, None + return bool(row[0]), (str(row[1]) if row[1] else None) + + +def set_locale_active( + locale: str, + active: bool, + version: str | None = None, + *, + name: str | None = None, +) -> bool: + from ..utils import tools_gw + + status, cursor = tools_gw.create_sqlite_conn("config") + if not status or cursor is None: + return False + folder = normalize_language_folder(locale) + cursor.execute("SELECT 1 FROM locales WHERE locale = ?", (folder,)) + if cursor.fetchone(): + if version is not None: + cursor.execute( + "UPDATE locales SET active = ?, version = ? WHERE locale = ?", + (1 if active else 0, version, folder), + ) + elif not active: + cursor.execute( + "UPDATE locales SET active = ?, version = NULL WHERE locale = ?", + (0, folder), + ) + else: + cursor.execute( + "UPDATE locales SET active = ? WHERE locale = ?", + (1, folder), + ) + else: + cursor.execute( + """INSERT INTO locales (locale, name, active, version, active_multilang) + VALUES (?, ?, ?, ?, 0) + ON CONFLICT (locale) DO UPDATE SET + name = excluded.name, + active = excluded.active, + version = excluded.version, + active_multilang = excluded.active_multilang""", + (folder, name or folder, 1 if active else 0, version), + ) + cursor.connection.commit() + return True + + +def locale_likely_needs_download(locale: str, required_version: str | None) -> bool: + """ + Lightweight check without contacting the translations repository. + + Used on the UI thread to decide whether to start a provision task. + """ + if locale.lower() == "en_us": + return False + if not language_files_exist(locale, cleanup_incomplete=False): + return True + _active, installed = get_installed_locale_meta(locale) + if not installed: + return True + return compare_versions(installed, required_version) < 0 + + +def locale_needs_download( + locale: str, + required_version: str | None, + *, + available_versions: list[str] | None = None, +) -> bool: + """True when local files are missing or the installed package is older than required.""" + if locale.lower() == "en_us": + return False + if not language_files_exist(locale): + return True + + _active, installed = get_installed_locale_meta(locale) + if not installed: + return True + + required_label = translation_version_label( + required_version, + available_versions=available_versions, + ) + if installed.lower() == required_label.lower(): + return False + # Shared package: keep when installed already satisfies the required DB version + # and the resolved repository label. + if ( + compare_versions(installed, required_version) >= 0 + and compare_versions(installed, required_label) >= 0 + ): + return False + return True + + +def collect_locale_requirements( + schema_rows: Iterable[dict[str, Any]], + multilang_languages: Iterable[str] | None = None, +) -> list[LocaleRequirement]: + """ + Build per-locale requirements from schema language/version rows. + + When multiple schemas need the same locale, the highest version wins. + Multilang operative languages inherit the highest version seen across schemas + (or the plugin version when no schema version is available). + """ + by_locale: dict[str, LocaleRequirement] = {} + + def _add(locale_raw: str | None, version: str | None, source: str) -> None: + if not locale_raw or is_no_translation_locale(locale_raw): + return + folder = normalize_language_folder(locale_raw) + if not folder: + return + key = normalize_language_id(folder) + existing = by_locale.get(key) + if existing is None: + by_locale[key] = LocaleRequirement( + locale=folder, + version=str(version or "") or "0.0.0", + sources=[source], + ) + return + if version and compare_versions(version, existing.version) > 0: + existing.version = str(version) + if source not in existing.sources: + existing.sources.append(source) + + for row in schema_rows or (): + kind = str(row.get("kind") or "").strip().lower() + if kind and kind not in TRANSLATABLE_PROJECT_TYPES: + continue + language = row.get("language") + if is_no_translation_locale(str(language) if language else None): + continue + version = row.get("version") or row.get("giswater") + schema = str(row.get("schema") or kind or "?") + _add(str(language) if language else None, str(version) if version else None, schema) + + highest_schema_version = max_version(req.version for req in by_locale.values()) + if highest_schema_version is None: + try: + from ...libs import tools_qgis + plugin_version, _ = tools_qgis.get_plugin_version() + highest_schema_version = plugin_version + except Exception: + highest_schema_version = "0.0.0" + + for lang in multilang_languages or (): + _add( + lang, + highest_schema_version, + "multilang", + ) + + return sorted(by_locale.values(), key=lambda item: item.locale.lower()) + + +def locales_to_download( + requirements: Iterable[LocaleRequirement], + *, + available_versions: list[str] | None = None, +) -> list[LocaleRequirement]: + return [ + req + for req in requirements + if locale_needs_download( + req.locale, + req.version, + available_versions=available_versions, + ) + ] + + +def provision_language_packages( + requirements: Iterable[LocaleRequirement], + *, + available_versions: list[str] | None = None, + progress_cb: Callable[[int, int, str], None] | None = None, +) -> ProvisionResult: + """ + Download missing/outdated locales for the highest required version each. + + Failures are collected; successful downloads update SQLite locale metadata. + """ + req_list = list(requirements) + result = ProvisionResult(requirements=req_list) + versions = available_versions if available_versions is not None else get_available_versions() + pending = locales_to_download(req_list, available_versions=versions) + total = len(pending) + + for index, req in enumerate(pending): + if progress_cb: + progress_cb(index, total, req.locale) + ok, _schema, error = download_language_files( + req.locale, + user_version=req.version, + available_versions=versions, + ) + if not ok: + msg = "Unknown error" + result.failed.append((req.locale, error or tools_qt.tr(msg))) + continue + label = translation_version_label(req.version, available_versions=versions) + if not set_locale_active(req.locale, True, version=label): + msg = "Could not update locale metadata" + result.failed.append((req.locale, tools_qt.tr(msg))) + continue + result.downloaded.append(req.locale) + + for req in req_list: + if req.locale in result.downloaded: + continue + if any(locale == req.locale for locale, _ in result.failed): + continue + result.skipped.append(req.locale) + + if progress_cb and total: + progress_cb(total, total, "") + return result + + +def fetch_languages() -> dict[str, str]: + """Fetch locale -> display name map from the translations repository.""" + endpoint = f"{TRANSLATIONS_REPO_URL.rstrip('/')}/latest/languages.json" + payload = _fetch_json(endpoint) + if not isinstance(payload, dict): + msg = "Unexpected languages payload from ({0})" + msg_params = (endpoint,) + raise ValueError(tools_qt.tr(msg, list_params=msg_params)) + return {str(locale): str(name) for locale, name in payload.items()} + + +def reconcile_downloaded_locales( + locales: dict[str, str], +) -> dict[str, tuple[str, str | None]] | None: + """Sync SQLite ``locales.active`` with on-disk packages; return installed map. + + Returns ``None`` when the config database is unavailable. + """ + from ..utils import tools_gw + + downloaded_locales: dict[str, tuple[str, str | None]] = {} + status, cursor = tools_gw.create_sqlite_conn("config") + if not status or cursor is None: + return None + + cursor.execute("SELECT locale, name, active, version FROM locales") + db_locales = { + locale: (name, active, version) + for locale, name, active, version in cursor.fetchall() + } + + for locale, name in locales.items(): + if language_files_exist(locale): + db_name, db_active, version = db_locales.get(locale, (name, 0, None)) + downloaded_locales[locale] = (db_name or name, version) + if locale in db_locales: + if not db_active: + cursor.execute("UPDATE locales SET active = 1 WHERE locale = ?", (locale,)) + else: + cursor.execute( + """INSERT INTO locales (locale, name, active, version, active_multilang) + VALUES (?, ?, 1, ?, 0) + ON CONFLICT (locale) DO UPDATE SET + name = excluded.name, + active = excluded.active, + version = excluded.version, + active_multilang = excluded.active_multilang""", + (locale, name, version), + ) + elif locale in db_locales and db_locales[locale][1]: + cursor.execute( + "UPDATE locales SET active = 0, version = NULL WHERE locale = ?", + (locale,), + ) + cursor.connection.commit() + return downloaded_locales diff --git a/core/admin/i18n_languages.py b/core/admin/i18n_languages.py index 6b65701896..f2d548f4c9 100644 --- a/core/admin/i18n_languages.py +++ b/core/admin/i18n_languages.py @@ -1,23 +1,14 @@ """ -This file is part of Giswater -The program is free software: you can redistribute it and/or modify it under the terms of the GNU -General Public License as published by the Free Software Foundation, either version 3 of the License, -or (at your option) any later version. +Local language-package management dialog and shared locale-table UI base. + +Also hosts ``GwDownloadLanguageTask``, used only by this dialog. """ # -*- coding: utf-8 -*- from functools import partial -import json -import os -import re -import shutil -import tempfile import urllib.error -import urllib.request -import zipfile -from pathlib import Path from qgis.core import QgsApplication -from qgis.PyQt.QtCore import QEvent, Qt +from qgis.PyQt.QtCore import QEvent, Qt, pyqtSignal from qgis.PyQt.QtGui import QStandardItem, QStandardItemModel from qgis.PyQt.QtWidgets import ( QHeaderView, QAbstractItemView, @@ -25,15 +16,10 @@ from ..ui.ui_manager import GwI18NManageLanguagesUi from ..utils import tools_gw -from ...libs import lib_vars, tools_qt, tools_qgis -from ..threads.i18n_download_task import GwDownloadLanguageTask - +from ...libs import lib_vars, tools_qt +from . import i18n_language_service as i18n_service +from ..threads.task import GwTask -TRANSLATIONS_REPO_URL = "https://github.com/giswater/translations/raw/main" -TRANSLATIONS_GITHUB_TREE_URL = ( - "https://api.github.com/repos/Giswater/translations/git/trees/main?recursive=1" -) -_VERSION_FOLDER_RE = re.compile(r"^(\d+)/(\d+)/(\d+)$") _LOCALE_COLUMNS = ("Active", "Locale", "Name") _COL_ACTIVE = 0 @@ -41,15 +27,56 @@ _COL_NAME = 2 _COL_VERSION = 3 -_I18N_SCHEMAS = {'ws': 'schemas/main/ws/final_pass/i18n', 'ud': 'schemas/main/ud/final_pass/i18n', - 'am': 'schemas/addon/am/final_pass/i18n', 'cm': 'schemas/addon/cm/final_pass/i18n', - 'python': 'i18n'} -_TS_NAME = 'giswater' +class GwDownloadLanguageTask(GwTask): + """Download one locale's plugin translation files off the network.""" + + task_finished = pyqtSignal(bool, str, str, str) # ok, locale, schema, error + + def __init__(self, locale: str, *, use_latest: bool = False): + super().__init__(f"Download language files for {locale}") + self.use_aux_conn = False + self.locale = locale + self.use_latest = use_latest + self.failed_schema = None + self.error = None + + def run(self) -> bool: + super().run() + try: + if self.isCanceled(): + return False + + self.setProgress(10) + ok, schema, error = i18n_service.download_language_files( + self.locale, + use_latest=self.use_latest, + available_versions=i18n_service.get_available_versions(), + ) + if not ok: + self.failed_schema = schema + self.error = error or "Could not download language files" + return False + + self.setProgress(100) + return True + except Exception as exc: + self.exception = exc + return False + + def finished(self, result: bool) -> None: + super().finished(result) + self.setProgress(100) + self.task_finished.emit( + bool(result), + self.locale, + self.failed_schema or "", + self.error or "", + ) -class GwI18NManageLanguagesDialog(GwI18NManageLanguagesUi): - _available_versions_cache: list[str] | None = None +class GwI18NLocalesTableBase(GwI18NManageLanguagesUi): + """Shared locale table, filter, selection and advanced-user helpers.""" def __init__(self, parent_manager, parent=None): super().__init__(parent_manager, parent=parent) @@ -57,7 +84,6 @@ def __init__(self, parent_manager, parent=None): self.possible_locales: list[tuple[str, str, bool, str | None]] = [] self._busy_locales = set() - # Add version column if advanced user and create the model columns = list(_LOCALE_COLUMNS) if self._is_advanced_user(): columns.append("Version") @@ -68,6 +94,122 @@ def __init__(self, parent_manager, parent=None): self._locales_model = QStandardItemModel(0, len(columns), self) self._locales_model.setHorizontalHeaderLabels(columns) + @staticmethod + def _is_advanced_user() -> bool: + allowed_levels = lib_vars.user_level.get('showadminadvanced') + if allowed_levels is None: + allowed_levels = tools_gw.get_config_parser( + 'user_level', 'showadminadvanced', "user", "init", False, + ) + lib_vars.user_level['showadminadvanced'] = allowed_levels + + user_level = lib_vars.user_level.get('level') + if user_level in (None, "None"): + user_level = tools_gw.get_config_parser('user_level', 'level', "user", "init", False) + lib_vars.user_level['level'] = user_level + + if not allowed_levels or user_level in (None, "None"): + return False + return str(user_level) in str(allowed_levels) + + def _selected_locale(self) -> str: + selection = self.tbl_locales.selectionModel() + if selection is None: + return "" + indexes = selection.selectedRows(_COL_LOCALE) + if not indexes: + return "" + item = self._locales_model.item(indexes[0].row(), _COL_LOCALE) + return item.text() if item else "" + + def _selected_language(self) -> str: + selection = self.tbl_locales.selectionModel() + if selection is None: + return "" + indexes = selection.selectedRows(_COL_NAME) + if not indexes: + return "" + item = self._locales_model.item(indexes[0].row(), _COL_NAME) + return item.text() if item else "" + + def _selected_locale_active(self) -> tuple[bool | None, str | None]: + locale = self._selected_locale() + if not locale: + return None, None + for loc, _name, active, _version in self.possible_locales: + if loc == locale: + return active, locale + return False, None + + def _setup_table(self) -> None: + self.tbl_locales.setModel(self._locales_model) + self.tbl_locales.setAlternatingRowColors(True) + self.tbl_locales.setSortingEnabled(True) + self.tbl_locales.setEditTriggers(QAbstractItemView.EditTrigger.NoEditTriggers) + self.tbl_locales.verticalHeader().setVisible(False) + + header = self.tbl_locales.horizontalHeader() + header.setStretchLastSection(False) + header.setSectionResizeMode(_COL_ACTIVE, QHeaderView.ResizeMode.ResizeToContents) + header.setSectionResizeMode(_COL_LOCALE, QHeaderView.ResizeMode.ResizeToContents) + header.setSectionResizeMode(_COL_NAME, QHeaderView.ResizeMode.Stretch) + if self._col_version is not None: + header.setSectionResizeMode(_COL_VERSION, QHeaderView.ResizeMode.ResizeToContents) + header.resizeSection(_COL_VERSION, 72) + header.setMinimumSectionSize(48) + self.tbl_locales.viewport().installEventFilter(self) + + def eventFilter(self, watched, event): + if watched is self.tbl_locales.viewport(): + if ( + event.type() == QEvent.Type.MouseButtonPress + and event.button() == Qt.MouseButton.LeftButton + ): + index = self.tbl_locales.indexAt(event.pos()) + if index.isValid(): + selection = self.tbl_locales.selectionModel() + if selection is not None and selection.isSelected(index): + selection.clearSelection() + return True + return super().eventFilter(watched, event) + + def _apply_filter(self, *_args) -> None: + needle = tools_qt.get_text(self, self.txt_filter, return_string_null=False).strip().lower() + self._locales_model.removeRows(0, self._locales_model.rowCount()) + item_flags = Qt.ItemFlag.ItemIsEnabled | Qt.ItemFlag.ItemIsSelectable + for locale, name, active, version in self.possible_locales: + if needle and needle not in locale.lower() and needle not in name.lower(): + continue + active_item = QStandardItem("✓" if active else "") + active_item.setTextAlignment(Qt.AlignmentFlag.AlignCenter) + active_item.setFlags(item_flags) + locale_item = QStandardItem(locale) + locale_item.setFlags(item_flags) + name_item = QStandardItem(name) + name_item.setFlags(item_flags) + if self._col_version is not None: + version_item = QStandardItem(version or "") + version_item.setFlags(item_flags) + self._locales_model.appendRow([active_item, locale_item, name_item, version_item]) + else: + self._locales_model.appendRow([active_item, locale_item, name_item]) + self._update_action_buttons() + + def _update_locale_state(self, locale: str, active: bool, version: str | None) -> None: + for index, (loc, name, _active, _prev_version) in enumerate(self.possible_locales): + if loc == locale: + keep_version = version if version is not None else _prev_version + self.possible_locales[index] = (loc, name, active, keep_version) + break + self._apply_filter() + + def _update_action_buttons(self) -> None: + raise NotImplementedError + + +class GwI18NManageLanguagesDialog(GwI18NLocalesTableBase): + """Manage downloaded plugin language packages (GitHub ZIP files).""" + def closeEvent(self, event): if getattr(self, "_busy_locales", False): event.ignore() @@ -76,7 +218,7 @@ def closeEvent(self, event): super().closeEvent(event) def init_dialog(self): - """ Constructor """ + """Constructor.""" tools_gw.load_settings(self) self._setup_table() self._setup_download_options() @@ -99,24 +241,6 @@ def _set_signals(self) -> None: if self._is_advanced_user(): self.chk_download_latest.stateChanged.connect(partial(self._save_download_options)) - @staticmethod - def _is_advanced_user() -> bool: - allowed_levels = lib_vars.user_level.get('showadminadvanced') - if allowed_levels is None: - allowed_levels = tools_gw.get_config_parser( - 'user_level', 'showadminadvanced', "user", "init", False, - ) - lib_vars.user_level['showadminadvanced'] = allowed_levels - - user_level = lib_vars.user_level.get('level') - if user_level in (None, "None"): - user_level = tools_gw.get_config_parser('user_level', 'level', "user", "init", False) - lib_vars.user_level['level'] = user_level - - if not allowed_levels or user_level in (None, "None"): - return False - return str(user_level) in str(allowed_levels) - def _setup_download_options(self) -> None: advanced = self._is_advanced_user() self.chk_download_latest.setVisible(advanced) @@ -144,47 +268,21 @@ def _use_latest_translation(self) -> bool: and tools_qt.is_checked(self, 'chk_download_latest') ) - def _selected_locale(self) -> str: - selection = self.tbl_locales.selectionModel() - if selection is None: - return "" - indexes = selection.selectedRows(_COL_LOCALE) - if not indexes: - return "" - item = self._locales_model.item(indexes[0].row(), _COL_LOCALE) - return item.text() if item else "" - - def _selected_language(self) -> str: - selection = self.tbl_locales.selectionModel() - if selection is None: - return "" - indexes = selection.selectedRows(_COL_NAME) - if not indexes: - return "" - item = self._locales_model.item(indexes[0].row(), _COL_NAME) - return item.text() if item else "" - - def _selected_locale_active(self) -> tuple[bool, str] | None: - locale = self._selected_locale() - if not locale: - return None, None - for loc, _name, active, _version in self.possible_locales: - if loc == locale: - return active, locale - return False, None - def _update_action_buttons(self) -> None: active, locale = self._selected_locale_active() language = self._selected_language() if active is None: - self.lbl_language.setText("Select a language to manage") + msg = "Select a language to manage" + self.lbl_language.setText(tools_qt.tr(msg)) self.btn_download.setVisible(False) self.btn_update.setVisible(False) self.btn_delete.setVisible(False) return - self.lbl_language.setText(f"Language: {language}") - + msg = "Language: {0}" + msg_params = (language,) + self.lbl_language.setText(tools_qt.tr(msg, list_params=msg_params)) + if locale.lower() == "en_us": self.btn_download.setVisible(False) self.btn_update.setVisible(True) @@ -202,20 +300,20 @@ def _on_download(self) -> None: tools_qt.show_info_box(msg) return self._action_download(locale) - + def _on_update(self) -> None: locale = self._selected_locale() if not locale: msg = "Select a locale" tools_qt.show_info_box(msg) return - - msg = f"Do you want to update local language files for ({locale})?" + + msg = "Do you want to update local language files for ({0})?" title = "Update language files?" msg_params = (locale,) if not tools_qt.show_question(msg, title, msg_params=msg_params): return - + msg = "Updating language files for ({0})..." msg_params = (locale,) self.lbl_downloading.setText(tools_qt.tr(msg, list_params=msg_params)) @@ -235,424 +333,53 @@ def _on_double_click(self) -> None: locale = self._selected_locale() if not locale: return - if not self._language_files_exist(locale): + if not i18n_service.language_files_exist(locale): self._on_download() - def _setup_table(self) -> None: - self.tbl_locales.setModel(self._locales_model) - self.tbl_locales.setAlternatingRowColors(True) - self.tbl_locales.setSortingEnabled(True) - self.tbl_locales.setEditTriggers(QAbstractItemView.EditTrigger.NoEditTriggers) - self.tbl_locales.verticalHeader().setVisible(False) - - header = self.tbl_locales.horizontalHeader() - header.setStretchLastSection(False) - header.setSectionResizeMode(_COL_ACTIVE, QHeaderView.ResizeMode.ResizeToContents) - header.setSectionResizeMode(_COL_LOCALE, QHeaderView.ResizeMode.ResizeToContents) - header.setSectionResizeMode(_COL_NAME, QHeaderView.ResizeMode.Stretch) - if self._col_version is not None: - header.setSectionResizeMode(_COL_VERSION, QHeaderView.ResizeMode.ResizeToContents) - header.resizeSection(_COL_VERSION, 72) - header.setMinimumSectionSize(48) - self.tbl_locales.viewport().installEventFilter(self) - - def eventFilter(self, watched, event): - if watched is self.tbl_locales.viewport(): - if ( - event.type() == QEvent.Type.MouseButtonPress - and event.button() == Qt.MouseButton.LeftButton - ): - index = self.tbl_locales.indexAt(event.pos()) - if index.isValid(): - selection = self.tbl_locales.selectionModel() - if selection is not None and selection.isSelected(index): - selection.clearSelection() - return True - return super().eventFilter(watched, event) - - @staticmethod - def fetch_languages() -> dict: - endpoint = f"{TRANSLATIONS_REPO_URL.rstrip('/')}/latest/languages.json" - request = urllib.request.Request(endpoint, method="GET") - request.add_header("Accept", "application/json") - - with urllib.request.urlopen(request, timeout=30) as response: - payload = json.loads(response.read().decode()) - if not isinstance(payload, dict): - raise ValueError(f"Unexpected languages payload from {endpoint}") - return payload - - def load_downloaded_locales(self, locales: dict[str, str]) -> dict[str, tuple[str, str | None]]: - downloaded_locales: dict[str, tuple[str, str | None]] = {} - status, cursor = tools_gw.create_sqlite_conn("config") - if not status or cursor is None: - msg = "Config database file not found" - tools_qt.show_info_box(msg) - return {} - - cursor.execute("SELECT locale, name, active, version FROM locales") - db_locales = { - locale: (name, active, version) - for locale, name, active, version in cursor.fetchall() - } - - for locale, name in locales.items(): - if self._language_files_exist(locale): - db_name, db_active, version = db_locales.get(locale, (name, 0, None)) - downloaded_locales[locale] = (db_name or name, version) - if locale in db_locales: - if not db_active: - cursor.execute("UPDATE locales SET active = 1 WHERE locale = ?", (locale,)) - else: - cursor.execute( - "INSERT INTO locales (locale, name, active, version) VALUES (?, ?, 1, ?)", - (locale, name, version), - ) - elif locale in db_locales and db_locales[locale][1]: - cursor.execute( - "UPDATE locales SET active = 0, version = NULL WHERE locale = ?", - (locale,), - ) - cursor.connection.commit() - return downloaded_locales - def load_locales(self) -> None: self.possible_locales = [] api_names: dict[str, str] = {} try: - languages = self.fetch_languages() + languages = i18n_service.fetch_languages() if isinstance(languages, dict): for locale, name in languages.items(): locale_parts = str(locale).split("_") - locale = locale_parts[0].lower() + "_" + locale_parts[1].upper() + if len(locale_parts) >= 2: + locale = locale_parts[0].lower() + "_" + locale_parts[1].upper() api_names[locale] = name - except (urllib.error.URLError, urllib.error.HTTPError, OSError, json.JSONDecodeError): + except (urllib.error.URLError, urllib.error.HTTPError, OSError, ValueError): pass - - downloaded_locales = self.load_downloaded_locales(api_names) - + + downloaded_locales = i18n_service.reconcile_downloaded_locales(api_names) + if downloaded_locales is None: + msg = "Config database file not found" + tools_qt.show_info_box(msg) + return + for locale, (name, version) in downloaded_locales.items(): self.possible_locales.append((locale, name, True, version)) - + for locale, name in api_names.items(): - if locale not in downloaded_locales.keys(): + if locale not in downloaded_locales: self.possible_locales.append((locale, name, False, None)) - def _apply_filter(self, *_args) -> None: - needle = tools_qt.get_text(self, self.txt_filter, return_string_null=False).strip().lower() - self._locales_model.removeRows(0, self._locales_model.rowCount()) - item_flags = Qt.ItemFlag.ItemIsEnabled | Qt.ItemFlag.ItemIsSelectable - for locale, name, active, version in self.possible_locales: - if needle and needle not in locale.lower() and needle not in name.lower(): - continue - active_item = QStandardItem("✓" if active else "") - active_item.setTextAlignment(Qt.AlignmentFlag.AlignCenter) - active_item.setFlags(item_flags) - locale_item = QStandardItem(locale) - locale_item.setFlags(item_flags) - name_item = QStandardItem(name) - name_item.setFlags(item_flags) - if self._col_version is not None: - version_item = QStandardItem(version or "") - version_item.setFlags(item_flags) - self._locales_model.appendRow([active_item, locale_item, name_item, version_item]) - else: - self._locales_model.appendRow([active_item, locale_item, name_item]) - self._update_action_buttons() - - @staticmethod - def _folder_locale(locale: str) -> str: - return locale.replace("-", "_") - - def _dbmodel_dir(self) -> str: - return os.path.join(lib_vars.plugin_dir, 'dbmodel') - - def _language_files_exist(self, locale: str) -> bool: - if locale.lower() == "en_us": - return True - - folder = self._folder_locale(locale) - ts_path = os.path.join(lib_vars.plugin_dir, 'i18n', f'{_TS_NAME}_{folder}.ts') - if not os.path.isfile(ts_path): - return False - for schema_key, schema_path in _I18N_SCHEMAS.items(): - if schema_key == 'python': - continue - path = os.path.join(self._dbmodel_dir(), schema_path, folder) - if not os.path.isdir(path) or not any(name.endswith('.sql') for name in os.listdir(path)): - self._delete_language_files(locale) - return False - return True - def _set_locale_active( self, locale: str, active: bool, version: str | None = None, ) -> bool: - status, cursor = tools_gw.create_sqlite_conn("config") - if not status or cursor is None: - tools_qt.show_info_box("Config database file not found") - return False - cursor.execute("SELECT 1 FROM locales WHERE locale = ?", (locale,)) - if cursor.fetchone(): - if version is not None: - cursor.execute( - "UPDATE locales SET active = ?, version = ? WHERE locale = ?", - (1 if active else 0, version, locale), - ) - elif not active: - cursor.execute( - "UPDATE locales SET active = ?, version = NULL WHERE locale = ?", - (0, locale), - ) - else: - cursor.execute( - "UPDATE locales SET active = ? WHERE locale = ?", - (1, locale), - ) - else: - name = locale - for loc, locale_name, _active, _version in self.possible_locales: - if loc == locale: - name = locale_name - break - cursor.execute( - "INSERT INTO locales (locale, name, active, version) VALUES (?, ?, ?, ?)", - (locale, name, 1 if active else 0, version), - ) - cursor.connection.commit() - return True - - def _update_locale_state(self, locale: str, active: bool, version: str | None) -> None: - for index, (loc, name, _active, _version) in enumerate(self.possible_locales): + name = locale + for loc, locale_name, _active, _version in self.possible_locales: if loc == locale: - self.possible_locales[index] = (loc, name, active, version) + name = locale_name break - self._apply_filter() - - @staticmethod - def _zip_lang_code(locale: str) -> str: - return locale.strip().lower().replace("-", "_") - - @staticmethod - def _parse_semver(version: str | None) -> tuple[int, int, int] | None: - if not version: - return None - text = str(version).strip().lstrip("v") - parts = text.split(".") - if len(parts) != 3 or not all(part.isdigit() for part in parts): - return None - return tuple(int(part) for part in parts) - - @classmethod - def _format_version(cls, version: tuple[int, int, int]) -> str: - return ".".join(str(part) for part in version) - - @classmethod - def _version_to_path(cls, version: str) -> str: - parsed = cls._parse_semver(version) - if parsed is None: - return "latest" - return "/".join(str(part) for part in parsed) - - @classmethod - def _fetch_json(cls, endpoint: str) -> dict | list | None: - request = urllib.request.Request(endpoint, method="GET") - request.add_header("Accept", "application/json") - try: - with urllib.request.urlopen(request, timeout=30) as response: - payload = json.loads(response.read().decode()) - except (urllib.error.URLError, urllib.error.HTTPError, OSError, json.JSONDecodeError): - return None - return payload - - @classmethod - def _parse_versions_payload(cls, payload: dict | list | None) -> list[str]: - if isinstance(payload, list): - versions = [str(item) for item in payload if cls._parse_semver(str(item))] - elif isinstance(payload, dict): - versions = [ - str(item) - for item in payload.get("versions", []) - if cls._parse_semver(str(item)) - ] - else: - return [] - return cls._sort_versions(versions) - - @classmethod - def _sort_versions(cls, versions: list[str]) -> list[str]: - parsed = [ - (cls._parse_semver(version), version) - for version in versions - if cls._parse_semver(version) is not None - ] - parsed.sort(key=lambda item: item[0]) - return [version for _key, version in parsed] - - @classmethod - def fetch_available_versions(cls) -> list[str]: - endpoint = f"{TRANSLATIONS_REPO_URL.rstrip('/')}/versions.json" - versions = cls._parse_versions_payload(cls._fetch_json(endpoint)) - if versions: - return versions - - payload = cls._fetch_json(TRANSLATIONS_GITHUB_TREE_URL) - if not isinstance(payload, dict): - return [] - - discovered: set[str] = set() - for entry in payload.get("tree", []): - if entry.get("type") != "tree": - continue - match = _VERSION_FOLDER_RE.match(str(entry.get("path", ""))) - if not match: - continue - discovered.add(".".join(match.groups())) - return cls._sort_versions(sorted(discovered)) - - @classmethod - def _get_available_versions(cls) -> list[str]: - if cls._available_versions_cache is None: - cls._available_versions_cache = cls.fetch_available_versions() - return cls._available_versions_cache - - @classmethod - def resolve_translation_version_path( - cls, - user_version: str | None, - available_versions: list[str] | None = None, - ) -> str: - """Pick the translations folder (``major/minor/patch`` or ``latest``).""" - versions = available_versions if available_versions is not None else cls._get_available_versions() - user = cls._parse_semver(user_version) - - if user is None or not versions: - if user_version: - return cls._version_to_path(user_version) - return "latest" - - user_label = cls._format_version(user) - parsed_versions = [ - (cls._parse_semver(version), version) - for version in versions - if cls._parse_semver(version) is not None - ] - parsed_versions.sort(key=lambda item: item[0]) - if not parsed_versions: - return cls._version_to_path(user_version or "") - - available_labels = [version for _key, version in parsed_versions] - if user_label in available_labels: - return cls._version_to_path(user_label) - - highest = parsed_versions[-1][0] - if user > highest: - return "latest" - - for version_key, version_label in parsed_versions: - if version_key >= user: - return cls._version_to_path(version_label) - - return "latest" - - def _translation_zip_url(self, locale: str) -> str: - filename = f"translations_{self._zip_lang_code(locale)}.zip" - base = TRANSLATIONS_REPO_URL.rstrip("/") - if self._use_latest_translation(): - version_path = "latest" - else: - plugin_version, _message = tools_qgis.get_plugin_version() - version_path = self.resolve_translation_version_path(plugin_version) - return f"{base}/{version_path}/{filename}" - - def _fetch_language_zip(self, locale: str) -> tuple[bytes | None, str | None]: - url = self._translation_zip_url(locale) - request = urllib.request.Request(url, method="GET") - request.add_header("Accept", "application/zip, application/octet-stream, */*") - try: - with urllib.request.urlopen(request, timeout=120) as response: - body = response.read() - if not body.startswith(b"PK"): - return None, f"Response from {url} is not a ZIP archive" - return body, None - except urllib.error.HTTPError as exc: - if exc.code == 404: - return None, f"Not found: {url}" - detail = exc.read().decode(errors="replace") - return None, f"HTTP {exc.code}: {detail}" - except (urllib.error.URLError, OSError) as exc: - return None, str(exc) - - def _extract_language_zip(self, locale: str, zip_data: bytes) -> tuple[bool, str | None]: - plugin_dir = Path(lib_vars.plugin_dir).resolve() - - try: - with tempfile.TemporaryDirectory() as tmpdir: - zip_path = Path(tmpdir) / "translations.zip" - zip_path.write_bytes(zip_data) - with zipfile.ZipFile(zip_path) as archive: - for member in archive.namelist(): - if member.endswith("/"): - continue - target = (plugin_dir / member).resolve() - if not str(target).startswith(str(plugin_dir)): - return False, f"Unsafe path in ZIP archive: {member}" - archive.extractall(plugin_dir) - - except (zipfile.BadZipFile, OSError) as exc: - return False, str(exc) - - manifest_path = plugin_dir / 'manifest.json' - if manifest_path.exists(): - try: - manifest_path.unlink() - except Exception as exc: - return False, f"Could not delete manifest.json: {exc}" - - return True, None - - def download_language_files(self, locale: str) -> tuple[bool, str | None, str | None]: - zip_data, error = self._fetch_language_zip(locale) - if error or not zip_data: - return False, "zip", error or "empty response" - ok, error = self._extract_language_zip(locale, zip_data) + ok = i18n_service.set_locale_active(locale, active, version=version, name=name) if not ok: - return False, "zip", error or "Could not extract language files" - return True, None, None - - def _translation_version_label(self) -> str: - if self._use_latest_translation(): - return "latest" - plugin_version, _ = tools_qgis.get_plugin_version() - path = self.resolve_translation_version_path(plugin_version) - if path == "latest": - return "latest" - return path.replace("/", ".") - - def _delete_language_files(self, locale: str) -> tuple[bool, str | None]: - removed = False - folder = self._folder_locale(locale) - try: - for suffix in ('.ts', '.qm'): - ts_path = os.path.join(lib_vars.plugin_dir, 'i18n', f'{_TS_NAME}_{folder}{suffix}') - if os.path.isfile(ts_path): - os.remove(ts_path) - removed = True - for schema_key, schema_path in _I18N_SCHEMAS.items(): - if schema_key == 'python': - continue - path = os.path.join(self._dbmodel_dir(), schema_path, folder) - if os.path.isdir(path): - shutil.rmtree(path) - removed = True - if not removed: - return False, "no local language folders found" - return True, None - except OSError as exc: - return False, str(exc) + msg = "Config database file not found" + tools_qt.show_info_box(msg) + return ok def _run_locale_action(self, locale: str, action) -> None: if locale in self._busy_locales: @@ -676,60 +403,59 @@ def _action_download(self, locale: str, force: bool = False) -> None: self._busy_locales.add(locale) self.setEnabled(False) - self.lbl_downloading.setText(tools_qt.tr("Downloading language files for ({0})...", list_params=(locale,))) + msg = "Downloading language files for ({0})..." + msg_params = (locale,) + self.lbl_downloading.setText(tools_qt.tr(msg, list_params=msg_params)) - task = GwDownloadLanguageTask(self, locale) + task = GwDownloadLanguageTask(locale, use_latest=self._use_latest_translation()) task.task_finished.connect(partial(self._on_download_finished, force)) self._download_task = task QgsApplication.taskManager().addTask(task) def _action_delete(self, locale: str, force: bool = False) -> None: def _delete() -> None: - if not self._language_files_exist(locale): - tools_qt.show_info_box( - "No language files found for ({0}).", - msg_params=(locale,), - ) - return - msg = f"Delete local language files for ({locale})?" - title = "Delete language files" + msg = "Delete local language files for ({0})?" msg_params = (locale,) + title = "Delete language files" if not force and not tools_qt.show_question(msg, title, msg_params=msg_params): return - ok, error = self._delete_language_files(locale) + ok, error = i18n_service.delete_language_files(locale) if not ok: - msg = "Could not delete language files ({0}): {1}", + msg = "Could not delete language files ({0}): {1}" msg_params = (locale, error or "unknown error") tools_qt.show_info_box(msg, msg_params=msg_params) return - + if not force: if not self._set_locale_active(locale, False): return self._update_locale_state(locale, active=False, version=None) - self._manager._populate_language_combo() + self._manager._populate_language_combo(mode="hot_update") msg = "Language files deleted and locale deactivated ({0})." msg_params = (locale,) tools_qt.show_info_box(msg, msg_params=msg_params) self._run_locale_action(locale, _delete) - + def _on_download_finished(self, force, ok, locale, schema, error): self.lbl_downloading.setText("") self._busy_locales.discard(locale) self.setEnabled(True) if not ok: - msg = "Could not download language files ({0}, {1}): {2}", + msg = "Could not download language files ({0}, {1}): {2}" msg_params = (locale, schema, error or "unknown error") tools_qt.show_info_box(msg, msg_params=msg_params) return - version = self._translation_version_label() + version = i18n_service.translation_version_label( + use_latest=self._use_latest_translation(), + available_versions=i18n_service.get_available_versions(), + ) if not self._set_locale_active(locale, True, version=version): return self._update_locale_state(locale, active=True, version=version) - self._manager._populate_language_combo() + self._manager._populate_language_combo(mode="hot_update") if not force: msg = "Language files downloaded and locale activated ({0})." msg_params = (locale,) diff --git a/core/admin/i18n_multilang_languages.py b/core/admin/i18n_multilang_languages.py new file mode 100644 index 0000000000..3d93780207 --- /dev/null +++ b/core/admin/i18n_multilang_languages.py @@ -0,0 +1,393 @@ +""" +Manage Multilang schema languages dialog. + +Lists plugin-active locales and seeds/deletes translations in the multilang schema. +""" +# -*- coding: utf-8 -*- +from functools import partial +import os + +from qgis.core import QgsApplication + +from ..utils import tools_gw +from ...giswater_admin.engine import BuildParams +from ...libs import lib_vars, tools_db, tools_qt +from ..threads.multilang_schema_task import GwMultilangSchemaTask +from .i18n_baseline_seed import ( + fetch_seeded_language_ids, + language_baselines_exist, + normalize_language_folder, + normalize_language_id, +) +from .i18n_languages import GwI18NLocalesTableBase + + +class GwI18NMultilangLanguagesDialog(GwI18NLocalesTableBase): + """Seed/update/delete multilang DB translations for installed locales.""" + + def __init__(self, parent_manager, parent=None): + super().__init__(parent_manager, parent=parent) + self._pending_update = False + + def closeEvent(self, event): + if getattr(self, "_busy_locales", None): + event.ignore() + return + super().closeEvent(event) + + def init_dialog(self): + """Constructor.""" + tools_gw.load_settings(self) + self.chk_download_latest.setVisible(False) + self._setup_table() + self.load_locales() + self._apply_filter() + self._set_signals() + self._update_action_buttons() + tools_gw.open_dialog(self, dlg_name='admin_i18n_multilang_languages') + + def _set_signals(self) -> None: + self.txt_filter.textChanged.connect(partial(self._apply_filter)) + selection = self.tbl_locales.selectionModel() + if selection is not None: + selection.selectionChanged.connect(partial(self._update_action_buttons)) + self.btn_close.clicked.connect(partial(tools_gw.close_dialog, self)) + self.btn_delete.clicked.connect(partial(self._on_delete)) + self.btn_download.clicked.connect(partial(self._on_download)) + self.btn_update.clicked.connect(partial(self._on_update)) + self.tbl_locales.doubleClicked.connect(partial(self._on_double_click)) + + def _sql_root(self) -> str: + admin = getattr(self._manager, "admin", None) + sql_dir = getattr(admin, "sql_dir", None) if admin is not None else None + if sql_dir: + return str(sql_dir) + return os.path.join(lib_vars.plugin_dir, "dbmodel") + + def _update_action_buttons(self) -> None: + active, locale = self._selected_locale_active() + language = self._selected_language() + if active is None: + self.lbl_language.setText("Select a language to manage") + self.btn_download.setVisible(False) + self.btn_update.setVisible(False) + self.btn_delete.setVisible(False) + return + + self.lbl_language.setText(f"Language: {language}") + + if locale.lower() == "en_us": + self.btn_download.setVisible(False) + self.btn_update.setVisible(True) + self.btn_delete.setVisible(False) + return + + self.btn_download.setVisible(not active) + self.btn_update.setVisible(active) + self.btn_delete.setVisible(active) + + def _refresh_parent_multilang_combo(self) -> None: + refresh = getattr(self._manager, "_populate_language_combo", None) + if refresh: + refresh(mode="multilang") + + def _on_download(self) -> None: + locale = self._selected_locale() + if not locale: + msg = "Select a locale" + tools_qt.show_info_box(msg) + return + self._action_seed(locale) + + def _on_update(self) -> None: + locale = self._selected_locale() + if not locale: + msg = "Select a locale" + tools_qt.show_info_box(msg) + return + + msg = "Do you want to update multilang translations for ({0})?" + title = "Update multilang translations?" + if not tools_qt.show_question(msg, title, msg_params=(locale,)): + return + + self.lbl_downloading.setText( + tools_qt.tr("Updating multilang translations for ({0})...", list_params=(locale,)) + ) + self._action_seed(locale, force=True, is_update=True) + + def _on_delete(self) -> None: + locale = self._selected_locale() + if not locale: + msg = "Select a locale" + tools_qt.show_info_box(msg) + return + self._action_delete(locale) + + def _on_double_click(self) -> None: + locale = self._selected_locale() + if not locale: + return + active, _ = self._selected_locale_active() + if not active and locale.lower() != "en_us": + self._on_download() + + def _seeded_language_ids(self) -> set[str] | None: + """Return seeded lang ids from multilang.cat_language, or None if unavailable.""" + try: + if not tools_db.check_schema("multilang"): + return None + except Exception: + return None + + def _fetcher(sql: str, params=None): + return tools_db.get_rows(sql) + + try: + return fetch_seeded_language_ids(_fetcher) + except Exception: + return None + + def load_locales(self) -> None: + """List only languages already downloaded for the plugin (locales.active = 1).""" + self.possible_locales = [] + + status, cursor = tools_gw.create_sqlite_conn("config") + if not status or cursor is None: + msg = "Config database file not found" + tools_qt.show_info_box(msg) + return + + cursor.execute( + "SELECT locale, name, active_multilang, version FROM locales " + "WHERE id IN (" + " SELECT MIN(id) FROM locales " + " WHERE active = 1 OR lower(locale) = 'en_us' " + " GROUP BY locale" + ") ORDER BY name" + ) + db_rows = cursor.fetchall() + sql_root = self._sql_root() + seeded_ids = self._seeded_language_ids() + active_sync: list[tuple[int, str]] = [] + + for locale, name, active_multilang, version in db_rows: + # Bundled en_US is always available; other locales need local baseline SQL. + if locale.lower() != "en_us" and not language_baselines_exist(sql_root, locale): + continue + + display_name = name or locale + lang_id = normalize_language_id(locale) + if seeded_ids is None: + active = bool(active_multilang) + else: + active = lang_id in seeded_ids or locale.lower() == "en_us" + if bool(active_multilang) != active: + active_sync.append((1 if active else 0, locale)) + if locale.lower() == "en_us": + active = True + self.possible_locales.append((locale, display_name, active, version)) + + # Ensure en_US is listed even if missing from sqlite. + if not any(loc.lower() == "en_us" for loc, *_ in self.possible_locales): + self.possible_locales.insert(0, ("en_US", "English (United States)", True, None)) + + if active_sync: + cursor.executemany( + "UPDATE locales SET active_multilang = ? WHERE locale = ?", + active_sync, + ) + cursor.connection.commit() + + def _set_locale_active( + self, + locale: str, + active: bool, + version: str | None = None, + ) -> bool: + status, cursor = tools_gw.create_sqlite_conn("config") + if not status or cursor is None: + msg = "Config database file not found" + tools_qt.show_info_box(msg) + return False + cursor.execute("SELECT 1 FROM locales WHERE locale = ?", (locale,)) + if cursor.fetchone(): + cursor.execute( + "UPDATE locales SET active_multilang = ? WHERE locale = ?", + (1 if active else 0, locale), + ) + else: + name = locale + for loc, locale_name, _active, _version in self.possible_locales: + if loc == locale: + name = locale_name + break + cursor.execute( + "INSERT INTO locales (locale, name, active, version, active_multilang) " + "VALUES (?, ?, 0, NULL, ?) " + "ON CONFLICT (locale) DO UPDATE SET " + "name = excluded.name, active = excluded.active, " + "version = excluded.version, active_multilang = excluded.active_multilang", + (locale, name, 1 if active else 0), + ) + cursor.connection.commit() + return True + + def _update_locale_state(self, locale: str, active: bool, version: str | None) -> None: + for index, (loc, name, _active, _prev_version) in enumerate(self.possible_locales): + if loc == locale: + keep_version = version if version is not None else _prev_version + if not active: + keep_version = _prev_version + self.possible_locales[index] = (loc, name, active, keep_version) + break + self._apply_filter() + + def _action_seed( + self, + locale: str, + *, + force: bool = False, + is_update: bool = False, + ) -> None: + if locale in self._busy_locales: + return + + if not force and not is_update: + msg = "Do you want to seed multilang translations for ({0})?" + title = "Seed multilang translations?" + if not tools_qt.show_question(msg, title, msg_params=(locale,)): + return + + sql_root = self._sql_root() + if not language_baselines_exist(sql_root, locale): + folder = normalize_language_folder(locale) + msg = "No local i18n baseline SQL found for ({0}). Download plugin language files first." + msg_params = (folder,) + tools_qt.show_info_box(msg, msg_params=msg_params) + return + + self._busy_locales.add(locale) + self.setEnabled(False) + if is_update: + msg = "Updating multilang translations for ({0})..." + else: + msg = "Seeding multilang translations for ({0})..." + self.lbl_downloading.setText(tools_qt.tr(msg, list_params=(locale,))) + self._pending_update = is_update + + admin = getattr(self._manager, "admin", None) + params = BuildParams( + schema_name="multilang", + locale=normalize_language_folder(locale), + sql_root=sql_root, + plugin_version=str(getattr(admin, "plugin_version", "0.0.0") or "0.0.0"), + srid=str(getattr(admin, "project_epsg", None) or "25831"), + ) + if is_update: + msg = "Update multilang translations for ({0})" + else: + msg = "Seed multilang translations for ({0})" + desc = tools_qt.tr(msg, list_params=(locale,)) + task = GwMultilangSchemaTask( + admin, + params, + description=desc, + language_action="seed", + locale=locale, + ) + task.task_finished.connect(partial(self._on_seed_finished, force)) + self._language_task = task + QgsApplication.taskManager().addTask(task) + QgsApplication.taskManager().triggerTask(task) + + def _action_delete(self, locale: str, force: bool = False) -> None: + if locale in self._busy_locales: + return + if locale.lower() == "en_us": + msg = "The base language (en_US) cannot be deleted." + tools_qt.show_info_box(msg) + return + + msg = "Delete multilang translations for ({0})?" + title = "Delete multilang translations" + if not force and not tools_qt.show_question(msg, title, msg_params=(locale,)): + return + + self._busy_locales.add(locale) + self.setEnabled(False) + msg = "Delete multilang translations for ({0})?" + msg_params = (locale,) + self.lbl_downloading.setText( + tools_qt.tr(msg, list_params=msg_params) + ) + self._pending_update = False + + admin = getattr(self._manager, "admin", None) + params = BuildParams( + schema_name="multilang", + locale=normalize_language_folder(locale), + sql_root=self._sql_root(), + plugin_version=str(getattr(admin, "plugin_version", "0.0.0") or "0.0.0"), + srid=str(getattr(admin, "project_epsg", None) or "25831"), + ) + msg = "Delete multilang translations for ({0})?" + msg_params = (locale,) + desc = tools_qt.tr(msg, list_params=msg_params) + task = GwMultilangSchemaTask( + admin, + params, + description=desc, + language_action="delete", + locale=locale, + ) + task.task_finished.connect(partial(self._on_delete_finished, force)) + self._language_task = task + QgsApplication.taskManager().addTask(task) + QgsApplication.taskManager().triggerTask(task) + + def _on_seed_finished(self, force, ok, locale, error): + self.lbl_downloading.setText("") + self._busy_locales.discard(locale) + self.setEnabled(True) + was_update = self._pending_update + self._pending_update = False + + if not ok: + msg = "Could not seed multilang translations ({0}): {1}" + msg_params = (locale, error or "unknown error") + tools_qt.show_info_box(msg, msg_params=msg_params) + return + + if not self._set_locale_active(locale, True): + return + self._update_locale_state(locale, active=True, version=None) + self._refresh_parent_multilang_combo() + if not force: + msg = "Multilang translations seeded and locale activated ({0})." + msg_params = (locale,) + tools_qt.show_info_box(msg, msg_params=msg_params) + elif was_update: + msg = "Multilang translations updated ({0})." + msg_params = (locale,) + tools_qt.show_info_box(msg, msg_params=msg_params) + + def _on_delete_finished(self, force, ok, locale, error): + self.lbl_downloading.setText("") + self._busy_locales.discard(locale) + self.setEnabled(True) + + if not ok: + msg = "Could not delete multilang translations ({0}): {1}" + msg_params = (locale, error or "unknown error") + tools_qt.show_info_box(msg, msg_params=msg_params) + return + + if not self._set_locale_active(locale, False): + return + self._update_locale_state(locale, active=False, version=None) + self._refresh_parent_multilang_combo() + if not force: + msg = "Multilang translations deleted and locale deactivated ({0})." + msg_params = (locale,) + tools_qt.show_info_box(msg, msg_params=msg_params) diff --git a/core/admin/i18n_provision.py b/core/admin/i18n_provision.py new file mode 100644 index 0000000000..23d4d352a4 --- /dev/null +++ b/core/admin/i18n_provision.py @@ -0,0 +1,152 @@ +""" +Coordinator that ensures language packages after a Giswater database connection. + +Shows a non-dismissible progress dialog while downloads run; failures warn +without blocking project load. +""" + +from __future__ import annotations + +from qgis.core import QgsApplication +from qgis.PyQt.QtCore import Qt +from qgis.PyQt.QtWidgets import QProgressDialog + +from ...libs import tools_log, tools_qgis, tools_qt +from ..threads.i18n_provision_task import GwI18nProvisionTask +from .i18n_language_service import LocaleRequirement, ProvisionResult + +_PROVISION_MESSAGE = ( + "We are downloading the necessary language files. Please do not close QGIS." +) + +# Keep a module-level reference so GC does not cancel the task mid-flight. +_active_task: GwI18nProvisionTask | None = None +_active_dialog: QProgressDialog | None = None +_provision_started_for: set[str] = set() + + +def _connection_key() -> str: + from ...libs import tools_db, lib_vars + from qgis.PyQt.QtCore import QSettings + + creds = getattr(tools_db, "dao_db_credentials", None) or {} + host = str(creds.get("host") or "") + port = str(creds.get("port") or "") + db = str(creds.get("db") or "") + schema = str(getattr(lib_vars, "schema_name", "") or "") + try: + selected = str(QSettings().value("PostgreSQL/connections/selected") or "") + except Exception: + selected = "" + return f"{selected}|{host}:{port}/{db}:{schema}" + + +def _close_progress_dialog() -> None: + global _active_dialog + dlg = _active_dialog + _active_dialog = None + if dlg is None: + return + try: + dlg.close() + dlg.deleteLater() + except Exception: + pass + + +def _show_progress_dialog() -> QProgressDialog: + global _active_dialog + _close_progress_dialog() + message = tools_qt.tr(_PROVISION_MESSAGE) + dlg = QProgressDialog(message, None, 0, 0) + dlg.setWindowTitle(tools_qt.tr("Language files")) + dlg.setCancelButton(None) + dlg.setMinimumDuration(0) + dlg.setWindowModality(Qt.WindowModality.ApplicationModal) + dlg.setWindowFlags( + dlg.windowFlags() + | Qt.WindowType.WindowStaysOnTopHint + | Qt.WindowType.CustomizeWindowHint + ) + # Hide the close button where the platform allows it. + dlg.setWindowFlag(Qt.WindowType.WindowCloseButtonHint, False) + dlg.show() + _active_dialog = dlg + return dlg + + +def _on_provision_finished(result: ProvisionResult) -> None: + global _active_task + _close_progress_dialog() + _active_task = None + + if not result.failed: + return + + details = "; ".join(f"{locale}: {error}" for locale, error in result.failed) + msg = "Automatic language provisioning failed: {0}" + msg_params = (details or "unknown error",) + tools_log.log_warning(msg, msg_params=msg_params) + + msg = "Could not download some language files. The project will continue to load. {0}" + msg_params = (details or "unknown error",) + tools_qgis.show_warning(msg, msg_params=msg_params, duration=20) + + +def ensure_language_packages_after_connection( + *, + force: bool = False, + show_progress: bool = True, +) -> GwI18nProvisionTask | None: + """ + Start a background task that downloads missing language packages. + + Safe to call after a successful DB connection. Returns the task when work + may be needed, or None when skipped (already running / already done). + """ + global _active_task + + if _active_task is not None: + return _active_task + + key = _connection_key() + if not force and key in _provision_started_for: + return None + + requirements: list[LocaleRequirement] = [] + pending: list[LocaleRequirement] = [] + try: + from . import _admin_catalog as admin_catalog + from .i18n_language_service import ( + collect_locale_requirements, + locale_likely_needs_download, + ) + + schema_rows = admin_catalog.fetch_schema_translation_info() + multilang_langs = admin_catalog.fetch_multilang_operative_languages() + requirements = collect_locale_requirements(schema_rows, multilang_langs) + pending = [ + req + for req in requirements + if locale_likely_needs_download(req.locale, req.version) + ] + except Exception as exc: + msg = "Language provision pre-check failed: {0}" + msg_params = (exc,) + tools_log.log_warning(msg, msg_params=msg_params) + return None + + if not pending: + _provision_started_for.add(key) + return None + + _provision_started_for.add(key) + + if show_progress: + _show_progress_dialog() + + task = GwI18nProvisionTask(requirements=requirements, pending=pending) + task.task_finished.connect(_on_provision_finished) + _active_task = task + QgsApplication.taskManager().addTask(task) + return task diff --git a/core/admin/manage_schemas_dlg.py b/core/admin/manage_schemas_dlg.py index f297779163..179291b1c8 100644 --- a/core/admin/manage_schemas_dlg.py +++ b/core/admin/manage_schemas_dlg.py @@ -9,11 +9,16 @@ from qgis.PyQt.QtCore import QEvent, Qt from qgis.PyQt.QtGui import QStandardItem, QStandardItemModel from qgis.core import QgsApplication -from qgis.PyQt.QtWidgets import QHeaderView, QSizePolicy +from qgis.PyQt.QtWidgets import ( + QHeaderView, QSizePolicy, QScrollArea, QWidget, QVBoxLayout, +) from ..ui.ui_manager import GwAdminManageSchemasUi from ...libs import tools_qt from . import _admin_catalog as admin_catalog +from .i18n_multilang_languages import GwI18NMultilangLanguagesDialog +from qgis.PyQt.sip import isdeleted +from ..utils import tools_gw _NETWORK_COLUMNS = ( "Schema", "Kind", "Version", "Profile", "Linked", "Created", "Last update", @@ -22,8 +27,19 @@ _COL_LINKED = 4 _COL_CREATED = 5 _COL_UPDATED = 6 -_FIXED_WIDTH = 980 -_FIXED_HEIGHT = 840 +_MAX_VISIBLE_NETWORK_ROWS = 4 +_FIXED_WIDTH = 1120 +_SATELLITE_GROUPS = ( + "grb_utils", "grb_cibs", "grb_am", "grb_cm", "grb_i18n", "grb_audit", +) +_SATELLITE_INFO_LABELS = ( + "lbl_utils_info", + "lbl_cibs_info", + "lbl_am_info", + "lbl_cm_info", + "lbl_audit_info", + "lbl_i18n_info", +) class GwManageSchemasDialog(GwAdminManageSchemasUi): @@ -35,7 +51,8 @@ def __init__(self, admin_btn, parent=None): self._selected_network_parent = "" self._network_model = QStandardItemModel(0, len(_NETWORK_COLUMNS), self) self._network_model.setHorizontalHeaderLabels(list(_NETWORK_COLUMNS)) - self._satellites_height = 0 + self._scroll_area = None + self._scroll_content = None self.messageBar().hide() self._setup_layout() @@ -44,34 +61,32 @@ def __init__(self, admin_btn, parent=None): self._setup_satellite_labels() self._setup_cm_actions() self._refresh_inventory() - self._lock_satellites_height() self._connect_signals() def _setup_satellite_labels(self) -> None: - for attr in ( - "lbl_utils_info", - "lbl_cibs_info", - "lbl_am_info", - "lbl_cm_info", - "lbl_audit_info", - "lbl_i18n_info", - ): + for attr in _SATELLITE_INFO_LABELS: label = getattr(self, attr, None) if label is not None: label.setWordWrap(True) label.setMinimumWidth(0) + # Reserve two text lines so panels match AM/CM when dates wrap. + label.setMinimumHeight(label.fontMetrics().lineSpacing() * 2) label.setSizePolicy( QSizePolicy.Policy.Preferred, QSizePolicy.Policy.Minimum, ) - for grb_attr in ( - "grb_utils", "grb_cibs", "grb_am", "grb_cm", "grb_i18n", "grb_audit", - ): + for grb_attr in _SATELLITE_GROUPS: group = getattr(self, grb_attr, None) - layout = group.layout() if group is not None else None + if group is None: + continue + group.setSizePolicy( + QSizePolicy.Policy.Preferred, QSizePolicy.Policy.Preferred, + ) + layout = group.layout() if layout is not None: layout.setContentsMargins(8, 10, 8, 6) if layout.count() >= 3: + # Spacer expands so equal-height boxes keep actions bottom-aligned. layout.setStretch(0, 0) layout.setStretch(1, 1) layout.setStretch(2, 0) @@ -82,33 +97,127 @@ def _setup_cm_actions(self) -> None: def _setup_layout(self) -> None: self.verticalLayout.setStretch(0, 0) - self.verticalLayout.setStretch(1, 1) + self.verticalLayout.setStretch(1, 0) self.verticalLayout.setStretch(2, 0) self.verticalLayout.setStretch(3, 0) - self.layout_network_root.setStretch(1, 1) + self.layout_network_root.setStretch(1, 0) self.layout_satellites.setColumnStretch(0, 1) self.layout_satellites.setColumnStretch(1, 1) - self.wgt_satellites.setSizePolicy( - QSizePolicy.Policy.Expanding, - QSizePolicy.Policy.Fixed, + self.layout_satellites.setRowStretch(0, 1) + self.layout_satellites.setRowStretch(1, 1) + self.layout_satellites.setRowStretch(2, 1) + self.grb_connection.setSizePolicy( + QSizePolicy.Policy.Preferred, QSizePolicy.Policy.Fixed, + ) + self.grb_network.setSizePolicy( + QSizePolicy.Policy.Preferred, QSizePolicy.Policy.Fixed, ) - def apply_fixed_geometry(self) -> None: - """Restore fixed size after load_settings may have resized the dialog.""" - self.setSizeGripEnabled(False) - self._lock_satellites_height() - self.setFixedSize(_FIXED_WIDTH, _FIXED_HEIGHT) - - def _lock_satellites_height(self) -> None: - """Pin satellite panel height once so refresh/label updates do not resize the dialog.""" - if self._satellites_height > 0: - self.wgt_satellites.setFixedHeight(self._satellites_height) + def _equalize_satellite_panel_sizes(self) -> None: + """Force all satellite group boxes to the tallest panel height (AM/CM).""" + groups = [ + group for attr in _SATELLITE_GROUPS + if (group := getattr(self, attr, None)) is not None + ] + if not groups: + return + for group in groups: + group.setMinimumHeight(0) + self.layout_satellites.activate() + target_height = max(group.sizeHint().height() for group in groups) + for group in groups: + group.setMinimumHeight(target_height) + + def apply_scroll_geometry(self) -> None: + """Cap table rows and size the dialog to content (no extra empty space).""" + self._apply_network_table_height() + self._equalize_satellite_panel_sizes() + self._ensure_dialog_scroll() + self._fit_dialog_geometry() + + def _ensure_dialog_scroll(self) -> None: + if self._scroll_area is not None: return - self.wgt_satellites.adjustSize() - content_h = self.wgt_satellites.sizeHint().height() - if content_h > 0: - self._satellites_height = content_h - self.wgt_satellites.setFixedHeight(self._satellites_height) + + main_layout = self.verticalLayout + scroll_area = QScrollArea(self) + scroll_area.setWidgetResizable(True) + scroll_area.setFrameShape(QScrollArea.Shape.NoFrame) + scroll_area.setHorizontalScrollBarPolicy(Qt.ScrollBarPolicy.ScrollBarAlwaysOff) + scroll_area.setVerticalScrollBarPolicy(Qt.ScrollBarPolicy.ScrollBarAsNeeded) + scroll_area.setSizePolicy(QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Expanding) + + content = QWidget() + content_layout = QVBoxLayout(content) + content_layout.setContentsMargins(0, 0, 0, 0) + content_layout.setSpacing(main_layout.spacing()) + + # Keep footer buttons outside the scroll area. + while main_layout.count() > 1: + item = main_layout.takeAt(0) + if item.widget(): + content_layout.addWidget(item.widget()) + elif item.layout(): + content_layout.addLayout(item.layout()) + elif item.spacerItem(): + content_layout.addItem(item.spacerItem()) + + scroll_area.setWidget(content) + main_layout.insertWidget(0, scroll_area, 1) + + self._scroll_area = scroll_area + self._scroll_content = content + + def _content_preferred_height(self) -> int: + """Preferred height to show all content without empty stretch space.""" + spacing = self.verticalLayout.spacing() + return ( + self.grb_connection.sizeHint().height() + + spacing + + self.grb_network.sizeHint().height() + + spacing + + self.layout_satellites.sizeHint().height() + ) + + def _fit_dialog_geometry(self) -> None: + """Fix width; set height/max height to the tight content size.""" + margins = self.verticalLayout.contentsMargins() + footer_h = self.lyt_buttons.sizeHint().height() + height = ( + self._content_preferred_height() + + footer_h + + margins.top() + + margins.bottom() + + self.verticalLayout.spacing() + ) + height = max(height, self.minimumHeight()) + width = _FIXED_WIDTH + + # Allow temporary growth while applying the fitted size. + self.setMaximumSize(16777215, 16777215) + self.setMinimumWidth(width) + self.resize(width, height) + self.setFixedWidth(width) + self.setMaximumHeight(height) + + def _apply_network_table_height(self) -> None: + """Cap the network table to four visible rows; scroll when there are more.""" + table = self.tbl_network + row_h = table.verticalHeader().defaultSectionSize() + visible_rows = _MAX_VISIBLE_NETWORK_ROWS + if self._network_model.rowCount() > 0: + visible_rows = min(self._network_model.rowCount(), _MAX_VISIBLE_NETWORK_ROWS) + row_h = max(row_h, table.rowHeight(0)) + header_h = table.horizontalHeader().height() + if header_h <= 0: + header_h = table.fontMetrics().height() + 10 + frame = table.frameWidth() * 2 + height = header_h + row_h * visible_rows + frame + table.setFixedHeight(height) + table.setSizePolicy(QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Fixed) + self.grb_network.setSizePolicy( + QSizePolicy.Policy.Preferred, QSizePolicy.Policy.Fixed, + ) def _setup_connection(self) -> None: self.admin._populate_combo_connections() @@ -207,15 +316,16 @@ def _connect_signals(self) -> None: self.btn_cm_sample.clicked.connect(partial(self._load_cm_sample)) self.btn_cm_qgis.clicked.connect(partial(self._create_cm_qgis)) self.btn_delete_cm.clicked.connect(partial(self._delete_cm)) - self.btn_i18n_create.clicked.connect(partial(self.admin._create_i18n)) - self.btn_i18n_update.clicked.connect(partial(self.admin._update_i18n)) - self.btn_i18n_delete.clicked.connect(partial(self.admin._delete_other_schema, 'multilang')) + self.btn_i18n_create.clicked.connect(partial(self._create_i18n)) + self.btn_i18n_update.clicked.connect(partial(self._update_i18n)) + self.btn_i18n_delete.clicked.connect(partial(self._delete_i18n)) self.btn_create_audit.clicked.connect(partial(self._create_audit)) self.btn_update_audit.clicked.connect(partial(self.admin._update_audit)) self.btn_activate_audit.clicked.connect(partial(self._activate_audit)) self.btn_reload_audit_triggers.clicked.connect(partial(self._reload_audit_triggers)) self.btn_delete_audit.clicked.connect(partial(self.admin._delete_other_schema, 'audit')) - self.btn_close.clicked.connect(self.close) + self.btn_languages.clicked.connect(partial(self._open_multilang_languages)) + self.btn_close.clicked.connect(partial(tools_gw.close_dialog, self)) selection = self.tbl_network.selectionModel() if selection is not None: selection.selectionChanged.connect(partial(self._on_network_selection_changed)) @@ -225,6 +335,9 @@ def _setup_network_table(self) -> None: self.tbl_network.setAlternatingRowColors(True) self.tbl_network.setSortingEnabled(True) self.tbl_network.verticalHeader().setVisible(False) + self.tbl_network.setVerticalScrollBarPolicy( + Qt.ScrollBarPolicy.ScrollBarAsNeeded, + ) header = self.tbl_network.horizontalHeader() header.setStretchLastSection(False) @@ -234,6 +347,7 @@ def _setup_network_table(self) -> None: header.setSectionResizeMode(_COL_LINKED, QHeaderView.ResizeMode.ResizeToContents) header.setMinimumSectionSize(48) self.tbl_network.viewport().installEventFilter(self) + self._apply_network_table_height() def eventFilter(self, watched, event): if watched is self.tbl_network.viewport(): @@ -259,6 +373,10 @@ def _refresh_inventory(self) -> None: previous_parent = self._selected_network_parent self.btn_refresh.setEnabled(False) try: + # Re-read baseline fingerprint so Update reflects file changes on disk. + from .i18n_baseline_seed import invalidate_baseline_fingerprint_cache + invalidate_baseline_fingerprint_cache(getattr(self.admin, "sql_dir", None)) + update_info = getattr(self.admin, "_manage_schemas_update_system_info", None) if update_info: update_info() @@ -270,6 +388,10 @@ def _refresh_inventory(self) -> None: self._update_action_state() finally: self.btn_refresh.setEnabled(True) + # Re-equalize after labels/actions change; refit once the dialog is scrolled. + self._equalize_satellite_panel_sizes() + if self._scroll_area is not None: + self._fit_dialog_geometry() def _populate_network_table(self) -> None: self.tbl_network.setSortingEnabled(False) @@ -300,6 +422,7 @@ def _populate_network_table(self) -> None: self.tbl_network.setSortingEnabled(True) if self._network_model.rowCount() > 0: self.tbl_network.resizeColumnToContents(_COL_LINKED) + self._apply_network_table_height() def _on_network_selection_changed(self, *_args) -> None: self._selected_network_parent = self._selected_parent() @@ -349,7 +472,7 @@ def _satellite_group_title( return f"{group_name} · {schema} · {version}" def _format_satellite_dates(self, row: dict | None) -> str: - if not row: + if not row or not str(row.get("version") or ""): return tools_qt.tr("Not installed") parts: list[str] = [] created = str(row.get("date_created") or "") @@ -358,7 +481,7 @@ def _format_satellite_dates(self, row: dict | None) -> str: parts.append(f"{tools_qt.tr('Created')}: {created}") if updated: parts.append(f"{tools_qt.tr('Last update')}: {updated}") - return " · ".join(parts) + return " · ".join(parts) if parts else tools_qt.tr("Not installed") def _update_satellite_panel( self, @@ -423,6 +546,18 @@ def _needs_update(self, version: str) -> bool: str(self.admin.plugin_version), ) + def _i18n_needs_update(self) -> bool: + """True when baseline files changed or seedable schemas are out of sync.""" + try: + if self.admin._multilang_baseline_changed(): + return True + if self.admin._multilang_schemas_out_of_sync(self._inventory_rows): + return True + except Exception: + # Prefer enabling Update so the user can recover from a broken check. + return True + return False + def _network_has_pending_updates(self, anchor: str) -> bool: if not anchor or self._parent_kind(anchor) not in ("WS", "UD"): return False @@ -511,10 +646,9 @@ def _update_action_state(self, *_args) -> None: self.btn_delete_cm.setEnabled(cm_exists) self.btn_i18n_create.setEnabled(not i18n_exists) - self.btn_i18n_update.setEnabled( - i18n_exists and self._needs_update(str((i18n_row or {}).get("version") or "")) - ) self.btn_i18n_delete.setEnabled(i18n_exists) + self.btn_languages.setEnabled(i18n_exists) + self.btn_i18n_update.setEnabled(i18n_exists and self._i18n_needs_update()) self.btn_create_audit.setEnabled(not audit_exists) self.btn_update_audit.setEnabled( @@ -535,14 +669,16 @@ def _update_action_state(self, *_args) -> None: def _delete_network_schema(self) -> None: parent = self._selected_parent() if not parent: - tools_qt.show_info_box("Select a WS or UD schema in the table.") + msg = "Select a WS or UD schema in the table." + tools_qt.show_info_box(msg) return self.admin._delete_schema(schema_name=parent) def _rename_network_schema(self) -> None: parent = self._selected_parent() if not parent: - tools_qt.show_info_box("Select a WS or UD schema in the table.") + msg = "Select a WS or UD schema in the table." + tools_qt.show_info_box(msg) return row = self._satellite_row(schema=parent) version = str((row or {}).get("version") or "") @@ -551,10 +687,12 @@ def _rename_network_schema(self) -> None: def _update_network(self) -> None: parent = self._selected_parent() if not parent: - tools_qt.show_info_box("Select a WS or UD schema in the table.") + msg = "Select a WS or UD schema in the table." + tools_qt.show_info_box(msg) return if self._parent_kind(parent) not in ("WS", "UD"): - tools_qt.show_info_box("Update network requires a WS or UD anchor.") + msg = "Update network requires a WS or UD anchor." + tools_qt.show_info_box(msg) return self.admin._update_network(anchor_schema=parent) @@ -567,7 +705,8 @@ def _create_am_sample(self) -> None: def _integrate_am(self) -> None: parent, parent_type = self._parent_context() if not parent or parent_type != "WS": - tools_qt.show_info_box("Select a WS anchor in the network table.") + msg = "Select a WS anchor in the network table." + tools_qt.show_info_box(msg) return self.admin._integrate_am_schema( profile="integrate", @@ -578,7 +717,8 @@ def _integrate_am(self) -> None: def _integrate_am_sample(self) -> None: parent, parent_type = self._parent_context() if not parent or parent_type != "WS": - tools_qt.show_info_box("Select a WS anchor in the network table.") + msg = "Select a WS anchor in the network table." + tools_qt.show_info_box(msg) return self.admin._integrate_am_schema( profile="integrate_sample", @@ -602,7 +742,8 @@ def _create_cm(self) -> None: def _integrate_cm(self) -> None: parent, parent_type = self._parent_context() if not parent: - tools_qt.show_info_box("Select a WS or UD anchor in the network table.") + msg = "Select a WS or UD anchor in the network table." + tools_qt.show_info_box(msg) return self.admin._integrate_cm( parent_schema=parent, @@ -612,7 +753,8 @@ def _integrate_cm(self) -> None: def _load_cm_sample(self) -> None: parent, parent_type = self._parent_context() if not parent: - tools_qt.show_info_box("Select a WS or UD anchor in the network table.") + msg = "Select a WS or UD anchor in the network table." + tools_qt.show_info_box(msg) return self.admin._load_cm_sample( parent_schema=parent, @@ -640,7 +782,8 @@ def _delete_cm(self) -> None: def _activate_audit(self) -> None: parent, parent_type = self._parent_context() if not parent: - tools_qt.show_info_box("Select a WS/UD anchor in the network table.") + msg = "Select a WS/UD anchor in the network table." + tools_qt.show_info_box(msg) return self.admin._activate_audit( 'audit', @@ -651,32 +794,83 @@ def _activate_audit(self) -> None: def _reload_audit_triggers(self) -> None: parent = self._selected_parent() if not parent: - tools_qt.show_info_box("Select a WS/UD anchor in the network table.") + msg = "Select a WS/UD anchor in the network table." + tools_qt.show_info_box(msg) return self.admin._reload_audit_triggers(schema_name=parent) def _integrate_utils(self): parent, parent_kind = self._parent_context() if not parent: - tools_qt.show_info_box("Select a WS or UD anchor in the network table.") + msg = "Select a WS or UD anchor in the network table." + tools_qt.show_info_box(msg) return if parent_kind == "WS": self.admin._adapt_utils_ws(ws_schema=parent) elif parent_kind == "UD": self.admin._adapt_utils_ud(ud_schema=parent) else: - tools_qt.show_info_box("Integrate utils requires a WS or UD anchor.") + msg = "Integrate utils requires a WS or UD anchor." + tools_qt.show_info_box(msg) def _integrate_cibs(self): parent = self._selected_parent() if not parent: - tools_qt.show_info_box("Select a network anchor to integrate cibs.") + msg = "Select a network anchor to integrate cibs." + tools_qt.show_info_box(msg) return self.admin._adapt_cibs(parent_schema=parent) def _adapt_cibs_copy(self): parent = self._selected_parent() if not parent: - tools_qt.show_info_box("Select a network anchor to copy cibs data.") + msg = "Select a network anchor to copy cibs data." + tools_qt.show_info_box(msg) return self.admin._copy_cibs_data(parent_schema=parent) + + def _create_i18n(self) -> None: + """Create multilang schema asynchronously and refresh when done.""" + self.setEnabled(False) + try: + if not self.admin._create_i18n(manage_schemas_dlg=self): + self.setEnabled(True) + except Exception: + self.setEnabled(True) + raise + + def _update_i18n(self) -> None: + """Update multilang schema and re-apply baseline translations.""" + self.setEnabled(False) + try: + self.admin._update_i18n(manage_schemas_dlg=self) + except Exception: + self.setEnabled(True) + raise + + def _delete_i18n(self) -> None: + """Delete multilang schema only and refresh inventory.""" + dlg = getattr(self, "dlg_multilang_languages", None) + if dlg is not None and not isdeleted(dlg): + try: + dlg.close() + except Exception: + pass + self.dlg_multilang_languages = None + self.admin._delete_other_schema("multilang") + + def _open_multilang_languages(self) -> None: + i18n_row = self._satellite_row(kind="MULTILANG") or self._satellite_row(schema="multilang") + if i18n_row is None: + msg = "Create the multilang schema before managing languages." + tools_qt.show_info_box(msg) + return + + dlg = getattr(self, 'dlg_multilang_languages', None) + if dlg is not None and not isdeleted(dlg) and dlg.isVisible(): + tools_gw.focus_open_dialog(dlg) + return + + dlg = GwI18NMultilangLanguagesDialog(self) + dlg.init_dialog() + self.dlg_multilang_languages = dlg diff --git a/core/admin/schema_i18n_update.py b/core/admin/schema_i18n_update.py deleted file mode 100644 index 1cf4210670..0000000000 --- a/core/admin/schema_i18n_update.py +++ /dev/null @@ -1,990 +0,0 @@ -""" -This file is part of Giswater -The program is free software: you can redistribute it and/or modify it under the terms of the GNU -General Public License as published by the Free Software Foundation, either version 3 of the License, -or (at your option) any later version. -""" -# -*- coding: utf-8 -*- -import re -import psycopg2 -import psycopg2.extras -from functools import partial -import datetime -import json -from collections import defaultdict - -from ..ui.ui_manager import GwSchemaI18NUpdateUi -from ..utils import tools_gw -from ...libs import lib_vars, tools_qt, tools_db, tools_log -from qgis.PyQt.QtWidgets import QApplication, QListWidget, QCompleter, QLineEdit, QVBoxLayout, QWidget, QLabel, QCheckBox -from qgis.PyQt.QtGui import QStandardItemModel - - -class GwSchemaI18NUpdate: - - def __init__(self): - self.plugin_dir = lib_vars.plugin_dir - self.schema_name = lib_vars.schema_name - self.project_type_selected = None - - def init_dialog(self): - """ Constructor """ - - self.dlg_qm = GwSchemaI18NUpdateUi(self) # Initialize the UI - tools_gw.load_settings(self.dlg_qm) - self._load_user_values() # keep values - self.dev_commit = tools_gw.get_config_parser('system', 'force_commit', "user", "init", prefix=True) - self._set_signals() # Set all the signals to wait for response - - self.dlg_qm.btn_translate.setEnabled(False) - - # Get the project_types (ws, ud) - self.tables_dic() - self.dlg_qm.cmb_projecttype.clear() - for shcema_type in self.dbtables_dic: - self.dlg_qm.cmb_projecttype.addItem(shcema_type) - self.check_box_use_selected_tables() - self.type_ahead() - tools_gw.open_dialog(self.dlg_qm, dlg_name='admin_update_translation') - - # region private functions - - def _set_signals(self): - # Mysteriously without the partial the function check_connection is not called - self.dlg_qm.btn_connection.clicked.connect(partial(self._check_connection, True)) - self.dlg_qm.btn_translate.clicked.connect(self.schema_i18n_update) - self.dlg_qm.btn_close.clicked.connect(partial(tools_gw.close_dialog, self.dlg_qm)) - self.dlg_qm.rejected.connect(self._save_user_values) - self.dlg_qm.rejected.connect(self._close_db) - self.dlg_qm.rejected.connect(self._close_db_dest) - - # Populate schema names - self.dlg_qm.cmb_projecttype.currentIndexChanged.connect(partial(self._populate_data_schema_name, self.dlg_qm.cmb_projecttype)) - - def _check_connection(self, set_languages): - """ Check connection to database """ - - self.dlg_qm.lbl_info.clear() - self._close_db() - # Connection with origin db - host_i18n = tools_qt.get_text(self.dlg_qm, self.dlg_qm.txt_host) - port_i18n = tools_qt.get_text(self.dlg_qm, self.dlg_qm.txt_port) - db_i18n = tools_qt.get_text(self.dlg_qm, self.dlg_qm.txt_db) - user_i18n = tools_qt.get_text(self.dlg_qm, self.dlg_qm.txt_user) - password_i18n = tools_qt.get_text(self.dlg_qm, self.dlg_qm.txt_pass) - status_i18n, e = self._init_db_i18n(host_i18n, port_i18n, db_i18n, user_i18n, password_i18n) - # Send messages - if 'password authentication failed' in str(self.last_error): - self.dlg_qm.btn_translate.setEnabled(False) - msg = "Incorrect user or password" - tools_qt.set_widget_text(self.dlg_qm, 'lbl_info', msg) - QApplication.processEvents() - return - elif host_i18n != '188.245.226.42' and port_i18n != '5432' and db_i18n != 'giswater' or not status_i18n or e: - self.dlg_qm.btn_translate.setEnabled(False) - tools_qt.set_widget_text(self.dlg_qm, 'lbl_info', self.last_error) - QApplication.processEvents() - return - - if set_languages: - self._populate_cmb_language() - - def _populate_cmb_language(self): - """ Populate combo with languages values """ - self.dlg_qm.cmb_language.clear() - self.dlg_qm.btn_translate.setEnabled(True) - host_org = tools_qt.get_text(self.dlg_qm, self.dlg_qm.txt_host) - msg = "Succesfully connected to {0}" - msg_params = (host_org,) - tools_qt.set_widget_text(self.dlg_qm, 'lbl_info', msg, msg_params) - sql = "SELECT id, idval FROM i18n.cat_language WHERE id != 'All'" - rows = self._get_rows(sql, self.cursor_i18n) - tools_qt.fill_combo_values(self.dlg_qm.cmb_language, rows) - language = tools_gw.get_config_parser('i18n_generator', 'qm_lang_language', "user", "session", False) - - tools_qt.set_combo_value(self.dlg_qm.cmb_language, language, 0, add_new=False) - - def _populate_data_schema_name(self, widget): - # Get filter - filter_ = tools_qt.get_text(self.dlg_qm, widget) - if filter_ in (None, 'null') and self.project_type_selected: - filter_ = self.project_type_selected - if filter_ is None: - return - # Populate Project data schema Name - sql = "SELECT schema_name FROM information_schema.schemata" - rows = tools_db.get_rows(sql, commit=self.dev_commit) - if rows is None: - return - - result_list = [] - for row in rows: - sql = (f"SELECT EXISTS (SELECT * FROM information_schema.tables " - f"WHERE table_schema = '{row[0]}' " - f"AND table_name = 'sys_version')") - exists = tools_db.get_row(sql) - if exists and str(exists[0]) == 'True': - sql = f"SELECT project_type FROM {row[0]}.sys_version" - result = tools_db.get_row(sql) - if result is not None and result[0] in [filter_.upper(), filter_.lower()]: - elem = [row[0], row[0]] - result_list.append(elem) - if not result_list: - if filter_ == "am": - result_list.append(["am", "am"]) - else: - self.dlg_qm.cmb_schema.clear() - return - - tools_qt.fill_combo_values(self.dlg_qm.cmb_schema, result_list) - - def _change_project_type(self, widget): - """ Take current project type changed """ - self.project_type_selected = tools_qt.get_text(self.dlg_qm, widget) - - # endregion - - # region Main program - - def schema_i18n_update(self): - """ Main program to run the the shcmea_i18n_update """ - - # Connect in case of repeated actions - self._check_connection(False) - self.cursor_dest = tools_db.dao.get_cursor() - self.conn_dest = tools_db.dao - # Initalize the language and the message (for errors,etc) - self.language = tools_qt.get_combo_value(self.dlg_qm, self.dlg_qm.cmb_language, 0) - self.lower_lang = self.language.lower() - self.add_tab_data = tools_qt.is_checked(self.dlg_qm, self.dlg_qm.chk_add_tab_data) - - # Run the updater of db_files and look at the result - status_cfg_msg, errors = self._copy_db_files() - msg = f'''{tools_qt.tr('In schema')} {self.project_type}:''' - if self.dlg_qm.findChild(QCheckBox, 'chk_use_selected_tables').isChecked(): - msg += f" {tools_qt.tr('(Using selected tables) ')}" - if status_cfg_msg is True: - msg += f'''{tools_qt.tr('Database translation successful to')} {self.lower_lang}.\n''' - self._commit_dest() - elif status_cfg_msg is False: - msg += f'''{tools_qt.tr('Database translation failed.')}\n''' - elif status_cfg_msg is None: - msg += f'''{tools_qt.tr('Database translation canceled.')}\n''' - - # Look for errors - if errors: - msg += f'''{tools_qt.tr('There have been errors translating:')} {', '.join(errors)}''' - - self._change_lang() - - # Close connections - self._close_db() - self._close_db_dest() - - self.dlg_qm.lbl_info.clear() - tools_qt.set_widget_text(self.dlg_qm, 'lbl_info', msg) - tools_qt.show_info_box(msg) - - def _copy_db_files(self): - """ Read the values of the database and update the ones in the project """ - - # On the database, the dialog_name column must match the name of the ui file (no extension). - # Also, open_dialog function must be called, passed as parameter dlg_name = 'ui_file_name_without_extension' - self.project_type = tools_qt.get_text(self.dlg_qm, self.dlg_qm.cmb_projecttype, 0) - self.schema = tools_qt.get_text(self.dlg_qm, self.dlg_qm.cmb_schema, 0) - messages = [] - - if self.project_type != "am": - sql_1 = f"UPDATE {self.schema}.config_param_system SET value = FALSE WHERE parameter = 'admin_config_control_trigger'" - self.cursor_dest.execute(sql_1) - self._commit_dest - - dbtables = self.dbtables_dic[self.project_type]['dbtables'] if not self.dlg_qm.findChild(QCheckBox, 'chk_use_selected_tables').isChecked() else self.selected_dbtables_dic[self.project_type]['dbtables'] - schema_i18n = "i18n" - for dbtable in dbtables: - dbtable = f"{schema_i18n}.{dbtable}" - dbtable_rows, dbtable_columns = self._get_table_values(dbtable) - if not dbtable_rows or dbtable_columns == []: - messages.append(dbtable) # Corregido - else: - if "json" in dbtable: - self._write_dbjson_values(dbtable_rows) - elif "dbstyle" in dbtable: - self._write_dbstyle_values(dbtable_rows) - else: - self._write_table_values(dbtable_rows, dbtable_columns, dbtable) - - if self.project_type != "am": - sql_2 = f"UPDATE {self.schema}.config_param_system SET value = TRUE WHERE parameter = 'admin_config_control_trigger'" - self.cursor_dest.execute(sql_2) - self._commit_dest() - - # Mostrar mensaje de error si hay errores - if messages: # Corregido: Verifica si hay elementos en la lista - msg = "Error translating: {0}" - msg_params = (', '.join(messages),) - tools_qt.set_widget_text(self.dlg_qm, 'lbl_info', msg, msg_params) - return False, messages - else: - return True, None - - # Get db_feature values - - # endregion - - # region Alter any table - def _get_table_values(self, table): - """ Get table values """ - - # Update the part the of the program in process - self.dlg_qm.lbl_info.clear() - msg = "Updating {0}..." - msg_params = (table,) - tools_qt.set_widget_text(self.dlg_qm, 'lbl_info', msg, msg_params) - QApplication.processEvents() - columns = [] - lang_columns = [] - order_by = None - - if 'dbconfig_form_fields' in table: - columns = ["source", "formname", "formtype", "tabname", "project_type", "context", "source_code", "lb_en_us", "tt_en_us"] - lang_columns = [f"lb_{self.lower_lang}", f"auto_lb_{self.lower_lang}", f"va_auto_lb_{self.lower_lang}", - f"tt_{self.lower_lang}", f"auto_tt_{self.lower_lang}", f"va_auto_tt_{self.lower_lang}"] - if 'feat' in table: - columns = [col.replace("formname", "feature_type") for col in columns] - elif 'json' in table: - columns = columns[:-1] - columns.extend(["hint", "text"]) - lang_columns = lang_columns[:3] - - elif 'dbparam_user' in table: - columns = ["source", "project_type", "context", "source_code", "lb_en_us", "tt_en_us"] - lang_columns = [f"lb_{self.lower_lang}", f"auto_lb_{self.lower_lang}", f"va_auto_lb_{self.lower_lang}", - f"tt_{self.lower_lang}", f"auto_tt_{self.lower_lang}", f"va_auto_tt_{self.lower_lang}"] - - elif 'dbconfig_param_system' in table: - columns = ["source", "project_type", "context", "source_code", "lb_en_us", "tt_en_us"] - lang_columns = [f"lb_{self.lower_lang}", f"auto_lb_{self.lower_lang}", f"va_auto_lb_{self.lower_lang}", - f"tt_{self.lower_lang}", f"auto_tt_{self.lower_lang}", f"va_auto_tt_{self.lower_lang}"] - - elif 'dbconfig_typevalue' in table: - columns = ["source", "formname", "project_type", "context", "source_code", "tt_en_us"] - lang_columns = [f"tt_{self.lower_lang}", f"auto_tt_{self.lower_lang}", f"va_auto_tt_{self.lower_lang}"] - - elif 'dbmessage' in table: - columns = ["source", "project_type", "context", "ms_en_us", "ht_en_us"] - lang_columns = [f"ms_{self.lower_lang}", f"auto_ms_{self.lower_lang}", f"va_auto_ms_{self.lower_lang}," - f"ht_{self.lower_lang}", f"auto_ht_{self.lower_lang}", f"va_auto_ht_{self.lower_lang}"] - - elif 'dbfprocess' in table: - columns = ["source", "project_type", "context", "ex_en_us", "in_en_us", "na_en_us"] - lang_columns = [f"ex_{self.lower_lang}", f"auto_ex_{self.lower_lang}", f"va_auto_ex_{self.lower_lang}," - f"in_{self.lower_lang}", f"auto_in_{self.lower_lang}", f"va_auto_in_{self.lower_lang}", - f"na_{self.lower_lang}", f"auto_na_{self.lower_lang}", f"va_auto_na_{self.lower_lang}"] - - elif 'dbconfig_csv' in table: - columns = ["source", "project_type", "context", "al_en_us", "ds_en_us"] - lang_columns = [f"al_{self.lower_lang}", f"auto_al_{self.lower_lang}", f"va_auto_al_{self.lower_lang}", - f"ds_{self.lower_lang}", f"auto_ds_{self.lower_lang}", f"va_auto_ds_{self.lower_lang}"] - - elif 'dbconfig_form_tabs' in table: - columns = ["formname", "source", "project_type", "context", "lb_en_us", "tt_en_us"] - lang_columns = [f"lb_{self.lower_lang}", f"auto_lb_{self.lower_lang}", f"va_auto_lb_{self.lower_lang}", - f"tt_{self.lower_lang}", f"auto_tt_{self.lower_lang}", f"va_auto_tt_{self.lower_lang}"] - - elif 'dbconfig_report' in table: - columns = ["source", "project_type", "context", "al_en_us", "ds_en_us"] - lang_columns = [f"al_{self.lower_lang}", f"auto_al_{self.lower_lang}", f"va_auto_al_{self.lower_lang}", - f"ds_{self.lower_lang}", f"auto_ds_{self.lower_lang}", f"va_auto_ds_{self.lower_lang}"] - - elif 'dbconfig_toolbox' in table: - columns = ["source", "project_type", "context", "al_en_us", "ob_en_us"] - lang_columns = [f"al_{self.lower_lang}", f"auto_al_{self.lower_lang}", f"va_auto_al_{self.lower_lang}", - f"ob_{self.lower_lang}", f"auto_ob_{self.lower_lang}", f"va_auto_ob_{self.lower_lang}"] - - elif 'dbfunction' in table: - columns = ["source", "project_type", "context", "ds_en_us"] - lang_columns = [f"ds_{self.lower_lang}", f"auto_ds_{self.lower_lang}", f"va_auto_ds_{self.lower_lang}"] - - elif 'dbtypevalue' in table: - columns = ["source", "project_type", "context", "typevalue", "vl_en_us", "ds_en_us"] - lang_columns = [f"vl_{self.lower_lang}", f"auto_vl_{self.lower_lang}", f"va_auto_vl_{self.lower_lang}", - f"ds_{self.lower_lang}", f"auto_ds_{self.lower_lang}", f"va_auto_ds_{self.lower_lang}"] - - elif 'dbconfig_form_tableview' in table: - columns = ["source", "columnname", "project_type", "context", "al_en_us"] - lang_columns = [f"al_{self.lower_lang}", f"auto_al_{self.lower_lang}", f"va_auto_al_{self.lower_lang}"] - - elif 'dbjson' in table: - columns = ["source", "project_type", "context", "hint", "text", "lb_en_us"] - lang_columns = [f"lb_{self.lower_lang}", f"auto_lb_{self.lower_lang}", f"va_auto_lb_{self.lower_lang}"] - - elif 'dbtable' in table: - columns = ["source", "project_type", "context", "al_en_us", "ds_en_us"] - lang_columns = [f"al_{self.lower_lang}", f"auto_al_{self.lower_lang}", f"va_auto_al_{self.lower_lang}", - f"ds_{self.lower_lang}", f"auto_ds_{self.lower_lang}", f"va_auto_ds_{self.lower_lang}"] - - elif 'dblabel' in table: - columns = ["source", "project_type", "context", "vl_en_us"] - lang_columns = [f"vl_{self.lower_lang}", f"auto_vl_{self.lower_lang}", f"va_auto_vl_{self.lower_lang}"] - - elif 'dbconfig_engine' in table: - columns = ["project_type", "context", "parameter", "method", "lb_en_us", "ds_en_us", "pl_en_us"] - lang_columns = [f"lb_{self.lower_lang}", f"auto_lb_{self.lower_lang}", f"va_auto_lb_{self.lower_lang}", - f"ds_{self.lower_lang}", f"auto_ds_{self.lower_lang}", f"va_auto_ds_{self.lower_lang}", - f"pl_{self.lower_lang}", f"auto_pl_{self.lower_lang}", f"va_auto_pl_{self.lower_lang}"] - - elif 'su_basic_tables' in table: - columns = ["project_type", "context", "source", "na_en_us", "ob_en_us"] - lang_columns = [f"na_{self.lower_lang}", f"auto_na_{self.lower_lang}", f"va_auto_na_{self.lower_lang}", - f"ob_{self.lower_lang}", f"auto_ob_{self.lower_lang}", f"va_auto_ob_{self.lower_lang}"] - - elif 'dbplan_price' in table: - columns = ["source", "project_type", "context", "ds_en_us", "tx_en_us", "pr_en_us"] - lang_columns = [f"ds_{self.lower_lang}", f"auto_ds_{self.lower_lang}", f"va_auto_ds_{self.lower_lang}", - f"tx_{self.lower_lang}", f"auto_tx_{self.lower_lang}", f"va_auto_tx_{self.lower_lang}", - f"pr_{self.lower_lang}", f"auto_pr_{self.lower_lang}", f"va_auto_pr_{self.lower_lang}"] - - elif 'dbconfig_visit_parameter' in table: - columns = ["source", "project_type", "context", "ds_en_us"] - lang_columns = [f"ds_{self.lower_lang}", f"auto_ds_{self.lower_lang}", f"va_auto_ds_{self.lower_lang}"] - - elif 'dbstyle' in table: - columns = ["source", "layername", "project_type", "context", "org_text", "hint", "lb_en_us"] - lang_columns = [f"lb_{self.lower_lang}", f"auto_lb_{self.lower_lang}", f"va_auto_lb_{self.lower_lang}"] - order_by = ["source_code", "layername", "source", "hint"] - # Make the query - sql = "" - if self.lower_lang == 'en_us': - sql = (f"SELECT {', '.join(columns)} " - f"FROM {table} ") - else: - sql = (f"SELECT {', '.join(columns)}, {', '.join(lang_columns)} " - f"FROM {table} ") - if not self.add_tab_data and 'config_form_fields' in table: - sql += "WHERE tabname != 'tab_data' " - if order_by: - sql += f"ORDER BY {', '.join(order_by)};" - else: - sql += "ORDER BY context;" - rows = self._get_rows(sql, self.cursor_i18n) - - # Return the corresponding information - if not rows: - return False, columns - return rows, columns - - def _write_table_values(self, rows, columns, table): - - schema_type = [self.project_type] - if self.project_type in ["ud", "ws"]: - schema_type.append("utils") - - forenames = [] - for column in columns: - if column[-5:] == "en_us": - forenames.append(column.split("_")[0]) - - for i, row in enumerate(rows): # (For row in rows) - if row['project_type'] in schema_type: # Chose wanted schema types (ws, ud, cm, am...) - - texts = [] - for forename in forenames: - value = row.get(f'{forename}_{self.lower_lang}') - - if not value and self.lower_lang != 'en_us': - value = row.get(f'auto_{forename}_{self.lower_lang}') - - if not value: - value = row.get(f'{forename}_en_us') - - if not value and forename == 'tt' and table in [ - "dbconfig_form_fields", "dbconfig_param_system", - "dbparam_user", "dbconfig_form_fields_feat"]: - value = row.get('lb_en_us') - - if not value: - texts.append('NULL') - else: - escaped_value = value.replace("'", "''") - texts.append(f"'{escaped_value}'") - - for j, text in enumerate(texts): - if "\n" in texts[j] and texts[j] is not None: - texts[j] = self._replace_invalid_characters(texts[j]) - - sql_text = "" - # Define the query depending on the table - if 'dbconfig_form_fields' in table: - if 'feat' in table: - feature_types = ['ARC', 'CONNEC', 'NODE', 'GULLY', 'LINK', 'ELEMENT'] - for feature_type in feature_types: - if row['feature_type'] == feature_type: - formname = row['feature_type'].lower() - sql_text = (f'UPDATE {self.schema}.{row["context"]} SET label = {texts[0]}, tooltip = {texts[1]} ' - f'WHERE formname LIKE \'%_{formname}%\' AND formtype = \'{row["formtype"]}\' AND tabname = \'{row["tabname"]}\' AND columnname = \'{row["source"]}\' ') - break - else: - sql_text = (f"UPDATE {self.schema}.{row['context']} SET label = {texts[0]}, tooltip = {texts[1]} " - f"WHERE formname = '{row['formname']}' AND formtype = '{row['formtype']}' AND tabname = '{row['tabname']}' AND columnname = '{row['source']}';\n") - - elif 'dbparam_user' in table: - sql_text = (f"UPDATE {self.schema}.{row['context']} SET label = {texts[0]}, descript = {texts[1]} " - f"WHERE id = '{row['source']}';\n") - - elif 'dbconfig_param_system' in table: - sql_text = (f"UPDATE {self.schema}.{row['context']} SET label = {texts[0]}, descript = {texts[1]} " - f"WHERE parameter = '{row['source']}';\n") - - elif 'dbconfig_typevalue' in table: - sql_text = (f"UPDATE {self.schema}.{row['context']} SET idval = {texts[0]} " - f"WHERE id = '{row['source']}' AND typevalue = '{row['formname']}';\n") - - elif 'dbmessage' in table: - sql_text = (f"UPDATE {self.schema}.{row['context']} SET error_message = {texts[0]}, hint_message = {texts[1]} " - f"WHERE id = '{row['source']}';\n") - - elif 'dbfprocess' in table: - sql_text = (f"UPDATE {self.schema}.{row['context']} SET except_msg = {texts[0]}, info_msg = {texts[1]}, fprocess_name = {texts[2]} " - f"WHERE fid = '{row['source']}';\n") - - elif 'dbconfig_csv' in table: - sql_text = (f"UPDATE {self.schema}.{row['context']} SET alias = {texts[0]}, descript = {texts[1]} " - f"WHERE fid = '{row['source']}';\n") - - elif 'dbconfig_form_tabs' in table: - sql_text = (f"UPDATE {self.schema}.{row['context']} SET label = {texts[0]}, tooltip = {texts[1]} " - f"WHERE formname = '{row['formname']}' AND tabname = '{row['source']}';\n") - - elif 'dbconfig_report' in table: - sql_text = (f"UPDATE {self.schema}.{row['context']} SET alias = {texts[0]}, descript = {texts[1]} " - f"WHERE id = '{row['source']}';\n") - - elif 'dbconfig_toolbox' in table: - sql_text = (f"UPDATE {self.schema}.{row['context']} SET alias = {texts[0]}, observ = {texts[1]} " - f"WHERE id = '{row['source']}';\n") - - elif 'dbfunction' in table: - sql_text = (f"UPDATE {self.schema}.{row['context']} SET descript = {texts[0]} " - f"WHERE id = '{row['source']}';\n") - - elif 'dbtypevalue' in table: - sql_text = (f"UPDATE {self.schema}.{row['context']} SET idval = {texts[0]}, descript = {texts[1]} " - f"WHERE id = '{row['source']}' AND typevalue = '{row['typevalue']}';\n") - - elif 'dbconfig_form_tableview' in table: - sql_text = (f"UPDATE {self.schema}.{row['context']} SET alias = {texts[0]} " - f"WHERE objectname = '{row['source']}' AND columnname = '{row['columnname']}';\n") - - elif 'dbtable' in table: - if self.project_type == "cm": - sql_text = (f"UPDATE {self.schema}.{row['context']} SET alias = {texts[0]}, descript = {texts[1]} " - f"WHERE id = '%_{row['source']}';\n") - else: - sql_text = (f"UPDATE {self.schema}.{row['context']} SET alias = {texts[0]}, descript = {texts[1]} " - f"WHERE id = '{row['source']}';\n") - - elif 'dblabel' in table: - sql_text = (f"UPDATE {self.schema}.{row['context']} SET idval = {texts[0]} " - f"WHERE id = '{row['source']}';\n") - - elif 'dbconfig_engine' in table: - sql_text = (f"UPDATE {self.schema}.{row['context']} SET label = {texts[0]}, descript = {texts[1]}, placeholder = {texts[2]} " - f"WHERE parameter = '{row['parameter']}' AND method = '{row['method']}';\n") - - elif 'su_basic_tables' in table: - if self.schema == "am": - sql_text = (f"UPDATE {self.schema}.{row['context']} SET idval = {texts[0]} " - f"WHERE id = '{row['source']}';\n") - - elif 'dbplan_price' in table: - sql_text = (f"UPDATE {self.schema}.{row['context']} SET descript = {texts[0]}, text = {texts[1]}, price = REPLACE({texts[2]}, ',', '.')::numeric " - f"WHERE id = '{row['source']}';\n") - - elif 'dbconfig_visit_parameter' in table: - sql_text = (f"UPDATE {self.schema}.{row['context']} SET descript = {texts[0]} " - f"WHERE id = '{row['source']}';\n") - - try: - self.cursor_dest.execute(sql_text) - self._commit_dest() - except Exception as e: - print(e) - tools_db.dao.rollback() - - def _write_dbjson_values(self, rows): - values_by_context = {} - project_type = [self.project_type, "utils"] if self.project_type in ["ws", "ud"] else [self.project_type] - - updates = {} - for row in rows: - if row['project_type'] not in project_type: - continue - text = json.dumps(row["text"]).replace("'", "''") - # Set key depending on context - if row["context"] == "config_form_fields": - key = (row["source"], row["context"], text, row["formname"], row["formtype"], row["tabname"]) - else: - key = (row["source"], row["context"], text) - updates.setdefault(key, []).append(row) - - for key, related_rows in updates.items(): - # Unpack key - source, context, original_text, *extra = key - # Correct column based on context - if context == "config_report": - column = "filterparam" - elif context == "config_toolbox": - column = "inputparams" - elif context == "config_form_fields": - column = "widgetcontrols" - else: - msg = "Unknown context: {0}, skipping." - msg_params = (context,) - tools_log.log_error(msg, msg_params=msg_params) - continue - - text_json = json.loads(original_text.replace("''", "'")) - # Translate fields - for row in related_rows: - key_hint = row["hint"].rsplit('_', 1)[0] - default_text = row.get("lb_en_us", "") - translated = ( - row.get(f"lb_{self.lower_lang}") or - row.get(f"auto_lb_{self.lower_lang}") or - default_text - ) - - text_json = self.replace_transaltions(text_json, default_text, key_hint, translated) - - # Encode new JSON safely - new_text = json.dumps(text_json, ensure_ascii=False).replace("'", "''") - - # Save the result grouped by context and column - if context not in values_by_context: - values_by_context[context] = [] - - values_by_context[context].append((source, related_rows[0], new_text, column)) - - # Now write to file - - for context, data in values_by_context.items(): - # Assume all entries in this context share same column - column = data[0][3] - sql_text = "" - - if context == "config_form_fields": - values_str = ",\n ".join([ - f"('{row['source']}', '{row['formname']}', '{row['formtype']}', '{row['tabname']}', '{txt}')" - for source, row, txt, col in data - ]) - sql_text = (f"UPDATE {context} AS t\nSET {column} = v.text::json\nFROM (\n\tVALUES\n\t{values_str}\n) AS v(columnname, formname, formtype, tabname, text)\nWHERE t.columnname = v.columnname AND t.formname = v.formname AND t.formtype = v.formtype AND t.tabname = v.tabname;\n\n") - print(sql_text) - else: - values_str = ",\n ".join([ - f"({source}, '{txt}')" - for source, row, txt, col in data - ]) - sql_text = (f"UPDATE {context} AS t\nSET {column} = v.text::json\nFROM (\n\tVALUES\n\t{values_str}\n) AS v(id, text)\nWHERE t.id = v.id;\n\n") - - try: - self.cursor_dest.execute(sql_text) - self._commit_dest() - except Exception as e: - print(e) - tools_db.dao.rollback() - - def _write_dbstyle_values(self, rows): - updates = defaultdict(list) - project_type = [self.project_type, "utils"] if self.project_type in ["ws", "ud"] else [self.project_type] - - for row in rows: - if row['project_type'] not in project_type: - continue - - key = (row["source"], row["layername"], row["context"], row["org_text"].replace("'", "''")) - updates[key].append(row) - - for key, related_rows in updates.items(): - source, layername, context, stylevalue = key - new_stylevalue = stylevalue - do_style_update = False - - for row in related_rows: - default_text = row.get("lb_en_us", "") - translated = ( - row.get(f"lb_{self.lower_lang}") or - row.get(f"auto_lb_{self.lower_lang}") or - default_text - ) - - if not default_text or not translated or default_text == translated: - continue - - # Replace exact label string: label="Original" -> label="Translated" - if translated != default_text: - escaped_default = default_text.replace("'", "''") - escaped_translated = translated.replace("'", "''") - old_str = f'label="{escaped_default}"' - new_str = f'label="{escaped_translated}"' - - # Simple string replacement is robust for this purpose - new_stylevalue = new_stylevalue.replace(old_str, new_str) - do_style_update = True - - if do_style_update: - values_str = ",\n\t".join([f"('{source}', '{layername}', '{new_stylevalue}')"]) - sql_text = f"UPDATE {self.schema}.{context} AS t\nSET stylevalue = v.stylevalue\nFROM (\n\tVALUES\n\t{values_str}\n) AS v(styleconfig_id, layername, stylevalue)\nWHERE t.styleconfig_id::text = v.styleconfig_id AND t.layername = v.layername;\n\n" - try: - self.cursor_dest.execute(sql_text) - self._commit_dest() - except Exception as e: - print(f"Error updating style: {e}") - tools_db.dao.rollback() - - # endregion - - # region Extra fucntions - def _change_lang(self): - query = f"UPDATE {self.schema}.sys_version SET language = '{self.language}'" - try: - self.cursor_dest.execute(query) - self._commit_dest() - except Exception as e: - tools_db.dao.rollback() - - def _save_user_values(self): - """ Save selected user values """ - - host = tools_qt.get_text(self.dlg_qm, self.dlg_qm.txt_host, return_string_null=False) - port = tools_qt.get_text(self.dlg_qm, self.dlg_qm.txt_port, return_string_null=False) - db = tools_qt.get_text(self.dlg_qm, self.dlg_qm.txt_db, return_string_null=False) - user = tools_qt.get_text(self.dlg_qm, self.dlg_qm.txt_user, return_string_null=False) - language = tools_qt.get_combo_value(self.dlg_qm, self.dlg_qm.cmb_language, 0) - py_msg = False - db_msg = False - tools_gw.set_config_parser('i18n_generator', 'qm_lang_host', f"{host}", "user", "session", prefix=False) - tools_gw.set_config_parser('i18n_generator', 'qm_lang_port', f"{port}", "user", "session", prefix=False) - tools_gw.set_config_parser('i18n_generator', 'qm_lang_db', f"{db}", "user", "session", prefix=False) - tools_gw.set_config_parser('i18n_generator', 'qm_lang_user', f"{user}", "user", "session", prefix=False) - tools_gw.set_config_parser('i18n_generator', 'qm_lang_language', f"{language}", "user", "session", prefix=False) - tools_gw.set_config_parser('i18n_generator', 'qm_lang_py_msg', f"{py_msg}", "user", "session", prefix=False) - tools_gw.set_config_parser('i18n_generator', 'qm_lang_db_msg', f"{db_msg}", "user", "session", prefix=False) - - def _load_user_values(self): - """ - Load last selected user values - :return: Dictionary with values - """ - - host = tools_gw.get_config_parser('i18n_generator', 'qm_lang_host', "user", "session", False) - port = tools_gw.get_config_parser('i18n_generator', 'qm_lang_port', "user", "session", False) - db = tools_gw.get_config_parser('i18n_generator', 'qm_lang_db', "user", "session", False) - user = tools_gw.get_config_parser('i18n_generator', 'qm_lang_user', "user", "session", False) - tools_gw.get_config_parser('i18n_generator', 'qm_lang_py_msg', "user", "session", False) - tools_gw.get_config_parser('i18n_generator', 'qm_lang_db_msg', "user", "session", False) - tools_qt.set_widget_text(self.dlg_qm, 'txt_host', host) - tools_qt.set_widget_text(self.dlg_qm, 'txt_port', port) - tools_qt.set_widget_text(self.dlg_qm, 'txt_db', db) - tools_qt.set_widget_text(self.dlg_qm, 'txt_user', user) - - def _init_db_i18n(self, host, port, db, user, password): - """Initializes database connection""" - e = '' - try: - self.conn_i18n = psycopg2.connect(database=db, user=user, port=port, password=password, host=host) - self.cursor_i18n = self.conn_i18n.cursor(cursor_factory=psycopg2.extras.DictCursor) - return True, e - except psycopg2.DatabaseError as e: - self.last_error = e - return False, e - - def _close_db(self): - """ Close database connection """ - - try: - if self.cursor_i18n: - self.cursor_i18n.close() - if self.conn_i18n: - self.conn_i18n.close() - del self.cursor_i18n - del self.conn_i18n - except Exception as e: - self.last_error = e - - def _close_db_dest(self): - """ Close database connection """ - - try: - status = True - if self.cursor_dest: - self.cursor_dest.close() - del self.cursor_dest - except Exception as e: - self.last_error = e - status = False - - return status - - def _commit(self): - """ Commit current database transaction """ - self.conn_i18n.commit() - - def _commit_dest(self): - """ Commit current database transaction """ - tools_db.dao.commit() - - def _rollback(self): - """ Rollback current database transaction """ - self.conn_i18n.rollback() - - def _get_rows(self, sql, cursor, commit=True): - """ Get multiple rows from selected query """ - - self.last_error = None - rows = None - try: - cursor.execute(sql) - rows = cursor.fetchall() - if commit: - self._commit() - except Exception as e: - self.last_error = e - if commit: - self._rollback() - finally: - return rows - - def _replace_invalid_characters(self, param): - """ - This function replaces the characters that break JSON messages - (", new line, etc.) - :param param: The text to fix (String) - """ - param = param.replace("\"", "''") - param = param.replace("\r", "") - param = param.replace("\n", " ") - - return param - - def _replace_invalid_quotation_marks(self, param): - """ - This function replaces the characters that break JSON messages - (') - :param param: The text to fix (String) - """ - param = re.sub(r"(? bool: - super().run() - try: - if self.isCanceled(): - return False - - self.setProgress(10) - ok, schema, error = self.dialog.download_language_files(self.locale) - if not ok: - self.failed_schema = schema - self.error = error or "Could not download language files" - return False - - self.setProgress(100) - return True - except Exception as exc: - self.exception = exc - return False - - def finished(self, result: bool) -> None: - super().finished(result) - self.setProgress(100) - self.task_finished.emit( - bool(result), - self.locale, - self.failed_schema or "", - self.error or "", - ) diff --git a/core/threads/i18n_provision_task.py b/core/threads/i18n_provision_task.py new file mode 100644 index 0000000000..3890d2a68a --- /dev/null +++ b/core/threads/i18n_provision_task.py @@ -0,0 +1,84 @@ +""" +Background task that provisions missing language packages for a DB connection. +""" + +from __future__ import annotations + +from qgis.PyQt.QtCore import pyqtSignal + +from .task import GwTask +from ..admin.i18n_language_service import ( + LocaleRequirement, + ProvisionResult, + get_available_versions, + locales_to_download, + provision_language_packages, +) + + +class GwI18nProvisionTask(GwTask): + """Download missing packages for pre-collected locale requirements.""" + + task_finished = pyqtSignal(object) # ProvisionResult + + def __init__( + self, + description: str = "Provision language files", + *, + requirements: list[LocaleRequirement] | None = None, + pending: list[LocaleRequirement] | None = None, + ): + super().__init__(description) + self.use_aux_conn = False + self.result = ProvisionResult() + self._error: str | None = None + self._requirements = list(requirements or ()) + self._pending = list(pending or ()) + + def run(self) -> bool: + super().run() + try: + if self.isCanceled(): + return False + + self.setProgress(5) + requirements = self._requirements + self.result.requirements = requirements + if self.isCanceled(): + return False + + versions = get_available_versions() + candidates = self._pending or requirements + pending = locales_to_download(candidates, available_versions=versions) + + if not pending: + self.result.skipped = [req.locale for req in requirements] + self.setProgress(100) + return True + + def _progress(index: int, total: int, _locale: str) -> None: + if total <= 0: + self.setProgress(100) + return + # Reserve 5–95% for downloads. + self.setProgress(5 + int(90 * index / total)) + + self.result = provision_language_packages( + pending, + available_versions=versions, + progress_cb=_progress, + ) + self.result.requirements = requirements + self.setProgress(100) + return self.result.ok + except Exception as exc: + self.exception = exc + self._error = str(exc) + if not self.result.failed: + self.result.failed.append(("*", self._error)) + return False + + def finished(self, result: bool) -> None: + super().finished(result) + self.setProgress(100) + self.task_finished.emit(self.result) diff --git a/core/threads/multilang_schema_task.py b/core/threads/multilang_schema_task.py new file mode 100644 index 0000000000..f198a2f97a --- /dev/null +++ b/core/threads/multilang_schema_task.py @@ -0,0 +1,489 @@ +""" +Asynchronous task: create multilang schema and seed baseline rows, +or seed/delete translation rows for a single language without +recreating the schema. +""" + +from __future__ import annotations + +import json +from typing import Any, Callable, Literal + +from qgis.PyQt.QtCore import pyqtSignal + +from ...giswater_admin.adapters.psycopg2_adapter import Psycopg2Adapter +from ...giswater_admin.engine import ( + BuildParams, + BuildResult, + CancelToken, + Manifest, + SchemaBuilder, +) +from ...giswater_admin.log_format import ( + LogStyle, + format_build_header, + format_done, + format_failure, + format_file, + format_progress_status, +) +from ...libs import lib_vars, tools_log +from ..admin._admin_catalog import make_psycopg2_fetcher +from ..admin.i18n_baseline_seed import ( + SEED_LANGUAGE_FOLDER, + SEED_LANGUAGE_ID, + TRANSLATABLE_PROJECT_TYPES, + compute_baseline_fingerprint, + delete_language_seed_sql, + delete_project_type_seed_sql, + ensure_cat_language_sql, + fetch_seeded_project_types_from_multilang, + invalidate_baseline_fingerprint_cache, + language_baselines_exist, + normalize_language_folder, + normalize_language_id, + seed_sql_for_project_types, + translatable_project_types_with_baseline, +) +from .schema_builder_task import load_kind_manifest +from .task import GwTask + +LanguageAction = Literal["seed", "delete"] + + +class GwMultilangSchemaTask(GwTask): + """Build multilang schema, then populate translation tables from baselines. + + When ``language_action`` is set, skips SchemaBuilder and only seeds + or deletes rows for the given ``locale``. + """ + + task_finished = pyqtSignal(bool, str, str) # ok, locale, error + + def __init__( + self, + admin: Any, + params: BuildParams, + *, + description: str = "Create multilang schema", + timer: Any = None, + on_done: Callable[[BuildResult], None] | None = None, + manage_schemas_dlg: Any = None, + language_action: LanguageAction | None = None, + locale: str | None = None, + ) -> None: + self.language_action = language_action + self._language_only = language_action is not None + + if self._language_only: + lang_folder = normalize_language_folder(locale) + if description == "Create multilang schema": + if language_action == "delete": + description = f"Delete multilang translations for {lang_folder}" + else: + description = f"Seed multilang translations for {lang_folder}" + super().__init__(description) + self.admin = admin + self.params = params + self.timer = timer + self.on_done = on_done + self.manage_schemas_dlg = manage_schemas_dlg + self.locale = locale or "" + self.lang_id = normalize_language_id(locale) if self._language_only else SEED_LANGUAGE_ID + self.lang_folder = ( + normalize_language_folder(locale) if self._language_only else SEED_LANGUAGE_FOLDER + ) + self.error: str | None = None + + if params.cancel_token is None: + params.cancel_token = CancelToken() + + self.manifest: Manifest | None = None + if not self._language_only: + self.manifest = load_kind_manifest(admin.plugin_dir, "multilang") + self.result: BuildResult | None = None + self.seeded_project_types: list[str] = [] + self._last_progress_label = "" + self._log_style = LogStyle( + sql_root=params.sql_root or "", + show_timing_ms=False, + ) + self._adapter: Psycopg2Adapter | None = None + + def _set_task_error(self, message: str) -> None: + text = str(message or "").strip() or "Multilang schema task failed." + self.error = text + lib_vars.session_vars["last_error"] = text + lib_vars.session_vars["last_error_msg"] = text + tools_log.log_warning("Multilang schema task", parameter=text) + + def _execute_sql(self, sql: str) -> bool: + if self._adapter is None: + self._set_task_error("Database connection is not available.") + return False + if not self._adapter.execute(sql): + self._set_task_error(self._adapter.last_error() or "SQL execution failed.") + return False + return True + + def run(self) -> bool: + super().run() + lib_vars.session_vars["last_error"] = None + lib_vars.session_vars["last_error_msg"] = None + self.error = None + + if self.aux_conn is None or isinstance(self.aux_conn, dict): + self._set_task_error("Could not open database connection for multilang task.") + return False + + self._adapter = Psycopg2Adapter(self.aux_conn) + + try: + if self.language_action == "delete": + return self._run_delete_language() + if self._language_only: + return self._run_seed_language_only() + return self._run_create_schema() + except Exception as exc: # noqa: BLE001 + self.exception = exc + self._set_task_error(str(exc)) + if self._adapter is not None: + self._adapter.rollback() + return False + + def _clear_language_rows(self, *, drop_catalog: bool) -> bool: + for sql in delete_language_seed_sql(self.locale or self.lang_id, drop_catalog=drop_catalog): + if self.isCanceled(): + return False + if not self._execute_sql(sql): + return False + return True + + def _run_delete_language(self) -> bool: + """Delete all multilang rows (and cat_language) for one locale.""" + self.setProgress(10) + if not self._clear_language_rows(drop_catalog=True): + if self._adapter is not None: + self._adapter.rollback() + return False + if self._adapter is not None: + self._adapter.commit() + self.setProgress(100) + tools_log.log_info( + f"Multilang language delete completed for {self.lang_id}." + ) + return True + + def _run_seed_language_only(self) -> bool: + """Insert/update baseline rows for one locale; do not create/upgrade schema.""" + sql_root = self.params.sql_root or "" + if not language_baselines_exist(sql_root, self.locale or self.lang_folder): + self._set_task_error( + f"No local i18n baseline SQL found for ({self.lang_folder}). " + "Download plugin language files first." + ) + return False + + if not self._execute_sql(ensure_cat_language_sql(self.locale or self.lang_id)): + if self._adapter is not None: + self._adapter.rollback() + return False + + target_types = self._translatable_project_types(sql_root) + if not target_types: + tools_log.log_info( + "Multilang seed: no project types with bundled baselines detected; " + f"only cat_language ensured for {self.lang_id}." + ) + if self._adapter is not None: + self._adapter.commit() + return True + + if not self._seed_project_types(target_types, lang=self.lang_id, progress_base=0): + if self._adapter is not None: + self._adapter.rollback() + return False + + if self._adapter is not None: + self._adapter.commit() + return True + + def _run_create_schema(self) -> bool: + sql_root = self.params.sql_root or "" + tools_log.log_info( + format_build_header( + self.manifest.kind, + self.params.schema_name, + self.params.profile, + self.params.plugin_version, + style=self._log_style, + ) + ) + + builder = SchemaBuilder( + self._adapter, + self.manifest, + self.params, + progress_cb=self._progress_cb_build, + commit_each_file=bool(getattr(self.admin, "dev_commit", False)), + ) + try: + self.result = builder.run() + except Exception as exc: # noqa: BLE001 + self.exception = exc + self._set_task_error(str(exc)) + tools_log.log_info("Multilang SchemaBuilder exception", parameter=str(exc)) + return False + + if self.result.cancelled or not self.result.ok: + self._record_failure() + if self._adapter is not None: + self._adapter.rollback() + return False + + target_types = self._translatable_project_types(sql_root) + if not target_types: + tools_log.log_info( + "Multilang seed: no project types with bundled baselines detected; " + "skipping import." + ) + self._finalize_addparam([]) + return True + + if not self._ensure_cat_language(): + return False + + fetcher = make_psycopg2_fetcher(self.aux_conn) + if not self._remove_orphaned_project_type_rows(fetcher, set(target_types)): + if self._adapter is not None: + self._adapter.rollback() + return False + + if not self._seed_project_types(target_types, lang=SEED_LANGUAGE_ID, progress_base=80): + if self._adapter is not None: + self._adapter.rollback() + return False + + if not self._finalize_addparam(target_types): + if self._adapter is not None: + self._adapter.rollback() + return False + + if self._adapter is not None: + self._adapter.commit() + return True + + def _seed_project_types( + self, + target_types: list[str], + *, + lang: str, + progress_base: int = 80, + ) -> bool: + """Insert baseline SQL once per project type.""" + seeded: list[str] = [] + total = len(target_types) + per_type = seed_sql_for_project_types( + self.params.sql_root or "", + target_types, + lang=lang, + ) + for idx, (project_type, statements) in enumerate(per_type, start=1): + if self.isCanceled(): + self.params.cancel_token.cancel() + return False + self._progress_cb_seed(idx, total, project_type, progress_base=progress_base) + if not statements: + tools_log.log_info( + f"Multilang seed: no baseline SQL for project_type={project_type} " + f"(lang={lang}); skipping." + ) + else: + for sql in statements: + if self.isCanceled(): + return False + if not self._execute_sql(sql): + if self._adapter is not None: + err = self._adapter.last_error() or "seed SQL failed" + self._set_task_error( + f"Multilang seed failed for project_type " + f"{project_type}: {err}" + ) + return False + seeded.append(project_type) + self.seeded_project_types = seeded + return True + + def _translatable_project_types(self, sql_root: str) -> list[str]: + """All supported project types with local baselines (ignore inventory).""" + types = translatable_project_types_with_baseline(sql_root) + if types: + return types + # Fall back to declared kinds even when folders are missing (logged as skip). + return sorted(TRANSLATABLE_PROJECT_TYPES) + + def _remove_orphaned_project_type_rows( + self, + fetcher, + current_project_types: set[str], + ) -> bool: + stored = fetch_seeded_project_types_from_multilang(fetcher) + removed = sorted(stored - {str(x).lower() for x in current_project_types}) + if not removed: + return True + tools_log.log_info( + "Multilang seed: removing baseline rows for unsupported project types", + parameter=", ".join(removed), + ) + for sql in delete_project_type_seed_sql(removed): + if self.isCanceled(): + return False + if not self._execute_sql(sql): + self._set_task_error( + self._adapter.last_error() if self._adapter else + "Failed to delete multilang rows for removed project types." + ) + return False + return True + + def _ensure_cat_language(self) -> bool: + return self._execute_sql(ensure_cat_language_sql(SEED_LANGUAGE_ID)) + + def _finalize_addparam(self, seeded_project_types: list[str]) -> bool: + sql_root = self.params.sql_root or "" + invalidate_baseline_fingerprint_cache(sql_root) + payload = json.dumps({ + "seeded_project_types": seeded_project_types, + "seed_language": SEED_LANGUAGE_FOLDER, + "seed_baseline_fingerprint": compute_baseline_fingerprint(sql_root), + }).replace("'", "''") + sql = ( + "UPDATE multilang.sys_version " + f"SET addparam = COALESCE(addparam, '{{}}'::jsonb) || '{payload}'::jsonb " + "WHERE id = (SELECT id FROM multilang.sys_version ORDER BY id DESC LIMIT 1);" + ) + return self._execute_sql(sql) + + def _record_failure(self) -> None: + if self.result is None: + if self._adapter is not None and self._adapter.last_error(): + self._set_task_error(self._adapter.last_error()) + return + failure = self.result.first_failure() + if failure is None: + if self._adapter is not None and self._adapter.last_error(): + self._set_task_error(self._adapter.last_error()) + return + err = ( + (self._adapter.last_error() if self._adapter is not None else "") + or lib_vars.session_vars.get("last_error") + or failure.error + or "" + ) + lib_vars.session_vars["last_error"] = err + msg = format_failure( + failure.path, + str(failure.error or err), + sql_root=self._log_style.sql_root, + sql=getattr(failure, "sql", "") or "", + statement_position=getattr(failure, "statement_position", 0) or 0, + ) + if err and not lib_vars.session_vars.get("last_error_msg"): + lib_vars.session_vars["last_error_msg"] = msg + self.error = str(err or msg) + tools_log.log_warning("Multilang schema build failed", parameter=msg) + + def _progress_cb_build( + self, + seen: int, + total: int, + label: str, + fx: Any = None, + ) -> None: + self._last_progress_label = label + if label == "done": + tools_log.log_info(format_done(seen, total, style=self._log_style)) + elif not label.startswith("phase:"): + tools_log.log_info(format_file(seen, total, label, style=self._log_style)) + + if hasattr(self.admin, "schema_build_progress_hint"): + self.admin.schema_build_progress_hint = format_progress_status( + seen, + total, + label, + sql_root=self._log_style.sql_root, + ) + + if total > 0: + pct = int(round((seen / total) * 80)) + if hasattr(self.admin, "progress_ratio"): + pct = int(pct * float(self.admin.progress_ratio or 1.0)) + if hasattr(self.admin, "current_sql_file"): + self.admin.current_sql_file = seen + if hasattr(self.admin, "total_sql_files"): + self.admin.total_sql_files = total + if hasattr(self.admin, "progress_value"): + self.admin.progress_value = pct + self.setProgress(pct) + + if self.isCanceled(): + self.params.cancel_token.cancel() + + def _progress_cb_seed( + self, + seen: int, + total: int, + project_type: str, + *, + progress_base: int = 80, + ) -> None: + label = f"seed:{project_type}" + self._last_progress_label = label + if hasattr(self.admin, "schema_build_progress_hint"): + self.admin.schema_build_progress_hint = ( + f"Seeding {project_type} ({seen}/{total})" + ) + span = max(100 - progress_base, 1) + pct = progress_base + int(round((seen / max(total, 1)) * span)) + if hasattr(self.admin, "progress_value"): + self.admin.progress_value = pct + self.setProgress(pct) + + def finished(self, result: bool) -> None: + super().finished(result) + if self.timer is not None: + try: + self.timer.stop() + except Exception: # noqa: BLE001 + pass + self.setProgress(100) + + dlg = self.manage_schemas_dlg + if dlg is not None: + try: + dlg.setEnabled(True) + except Exception: # noqa: BLE001 + pass + + if self.on_done is not None and self.result is not None: + if not result and self.result.ok: + self.admin.error_count = getattr(self.admin, "error_count", 0) + 1 + if not lib_vars.session_vars.get("last_error_msg"): + self._set_task_error( + self._adapter.last_error() if self._adapter else + "Multilang schema task failed during baseline seed." + ) + try: + self.on_done(self.result) + except Exception as exc: # noqa: BLE001 + tools_log.log_info("Multilang on_done callback raised", parameter=str(exc)) + + locale_out = self.locale if self._language_only else "" + self.task_finished.emit(bool(result), locale_out, self.error or "") + + def cancel(self) -> None: + try: + self.params.cancel_token.cancel() + except Exception: # noqa: BLE001 + pass + super().cancel() diff --git a/core/ui/admin/admin_i18n_hot_update.ui b/core/ui/admin/admin_i18n_hot_update.ui index 5657bfb7cf..026afb306b 100644 --- a/core/ui/admin/admin_i18n_hot_update.ui +++ b/core/ui/admin/admin_i18n_hot_update.ui @@ -7,7 +7,7 @@ 0 0 980 - 720 + 762 @@ -93,32 +93,6 @@ - - - - Language: - - - - - - - 1 - 0 - - - - - - - - Manage language - - - - - - @@ -185,62 +159,173 @@ - - - Parameters + + + + 0 + 0 + - - - - - Translate tab_data - - - true - - - - - - - Use selected tables only - - - - - - - Tables filter: - - - - - - - - 0 - 0 - - - - - 0 - 52 - - - - - 16777215 - 52 - - - - - + + 0 + + + false + + + + Hot Update + + + + + + Language: + + + + + + + 1 + 0 + + + + + + + + Manage language + + + + + + + + + + Parameters + + + + + + Translate tab_data + + + true + + + + + + + Use selected tables only + + + + + + + Tables filter: + + + + + + + + 0 + 0 + + + + + 0 + 52 + + + + + 16777215 + 52 + + + + + + + + + + + + Multilang + + + + + + + 0 + 0 + + + + Language + + + + + + Manage Languages + + + + + + + + 0 + 0 + + + + + + + + + + + + + + + + + + + + + 1 + 0 + + + + + + + false + + + @@ -255,32 +340,23 @@ - + - Close + Update - - + + - Update + Close - - - - - 1 - 0 - - + + - - - - false + Apply diff --git a/core/ui/admin/admin_manage_schemas.ui b/core/ui/admin/admin_manage_schemas.ui index 7f73cdddd4..bab7959218 100644 --- a/core/ui/admin/admin_manage_schemas.ui +++ b/core/ui/admin/admin_manage_schemas.ui @@ -6,29 +6,26 @@ 0 0 - 980 + 1120 840 - 980 - 840 + 1120 + 520 - - - 980 - 840 - - - - false - Manage schemas + + true + + + 8 + 12 @@ -41,9 +38,6 @@ 12 - - 8 - @@ -105,9 +99,9 @@ - + 0 - 1 + 0 @@ -199,29 +193,32 @@ - + 0 - 1 + 0 0 - 100 + 0 + + Qt::ScrollBarAsNeeded + QAbstractItemView::NoEditTriggers true - - QAbstractItemView::SelectRows - QAbstractItemView::SingleSelection + + QAbstractItemView::SelectRows + true @@ -237,140 +234,205 @@ - - - - 0 - 0 - + + + 8 - - - 8 + + + + + 0 + 1 + - - 8 + + AM - - - - Utils - - + + + 4 + + + + + Not installed + + + true + + + + + + + Qt::Vertical + + + + 0 + 0 + + + + + + - 4 + 6 - - - true + + + Qt::Horizontal + + + + 0 + 0 + + + + + + + + + 80 + 0 + - Not installed + Create - - - Qt::Vertical + + + + 80 + 0 + - + + Create am schema with sample leaks data + + + + Sample + + + + + + - 0 + 80 0 - + + Wire am into the selected WS network schema + + + Integrate + + - - - 6 - - - - - Qt::Horizontal - - - - 0 - 0 - - - - - - - - - 80 - 0 - - - - Create - - - - - - - - 80 - 0 - - - - Update - - - - - - - - 80 - 0 - - - - Link utils to the selected network schema - - - Integrate - - - - + + + + 80 + 0 + + + + Integrate am and seed config from parent WS catalogs + + + Int. + Sample + + - - - - - - - Cibs - - - - 4 - - - - true + + + + 80 + 0 + - Not installed + Update - + + + + 80 + 0 + + + + Delete + + + + + + + + + + + + + 0 + 1 + + + + Utils + + + + 4 + + + + + Not installed + + + true + + + + + + + Qt::Vertical + + + + 0 + 0 + + + + + + + + 6 + + + - Qt::Vertical + Qt::Horizontal @@ -381,106 +443,99 @@ - - - 6 - - - - - Qt::Horizontal - - - - 0 - 0 - - - - - - - - - 80 - 0 - - - - Create - - - - - - - - 80 - 0 - - - - Update - - - - - - - - 80 - 0 - - - - Link cibs to the selected network schema - - - Integrate - - - - - - - - 80 - 0 - - - - Copy data - - - - + + + + 80 + 0 + + + + Create + + - - - - - - - AM - - - - 4 - - - - true + + + + 80 + 0 + - Not installed + Update - + + + + 80 + 0 + + + + Link utils to the selected network schema + + + Integrate + + + + + + + + + + + + + 0 + 1 + + + + CM + + + + 4 + + + + + Not installed + + + true + + + + + + + Qt::Vertical + + + + 0 + 0 + + + + + + + + 6 + + + - Qt::Vertical + Qt::Horizontal @@ -491,138 +546,144 @@ - - - 6 - - - - - Qt::Horizontal - - - - 0 - 0 - - - - - - - - - 80 - 0 - - - - Create - - - - - - - - 80 - 0 - - - - Create am schema with sample leaks data - - - + Sample - - - - - - - - 80 - 0 - - - - Wire am into the selected WS network schema - - - Integrate - - - - - - - - 80 - 0 - - - - Integrate am and seed config from parent WS catalogs - - - Int. + Sample - - - - - - - - 80 - 0 - - - - Update - - - - - - - - 80 - 0 - - - - Delete - - - - + + + + 80 + 0 + + + + Create + + + + + + + + 80 + 0 + + + + Update + + + + + + + + 80 + 0 + + + + Link CM to the selected network schema + + + Integrate + + - - - - - - - CM - - - - 4 - - - - true + + + + 80 + 0 + + + + Load CM example data for the selected network schema - Not installed + Sample - + + + + 80 + 0 + + + + Delete + + + + + + + + 28 + 28 + + + + Create pschema qgis file + + + + + + + + + + + + + + + + 0 + 1 + + + + Cibs + + + + 4 + + + + + Not installed + + + true + + + + + + + Qt::Vertical + + + + 0 + 0 + + + + + + + + 6 + + + - Qt::Vertical + Qt::Horizontal @@ -633,138 +694,112 @@ - - - 6 - - - - - Qt::Horizontal - - - - 0 - 0 - - - - - - - - - 80 - 0 - - - - Create - - - - - - - - 80 - 0 - - - - Update - - - - - - - - 80 - 0 - - - - Link CM to the selected network schema - - - Integrate - - - - - - - - 80 - 0 - - - - Load CM example data for the selected network schema - - - Sample - - - - - - - - 80 - 0 - - - - Delete - - - - - - - - 28 - 28 - - - - Create pschema qgis file - - - - - - - + + + + 80 + 0 + + + + Create + + + + + + + + 80 + 0 + + + + Update + + + + + + + + 80 + 0 + + + + Link cibs to the selected network schema + + + Integrate + + - - - - - - - Multilang - - - - 4 - - - - true + + + + 80 + 0 + - Not installed + Copy data + + + + + + + + + + 0 + 1 + + + + Audit + + + + 4 + + + + + Not installed + + + true + + + + + + + Qt::Vertical + + + + 0 + 0 + + + + + + + + 6 + - + - Qt::Vertical + Qt::Horizontal @@ -775,90 +810,128 @@ - - - 6 - - - - - Qt::Horizontal - - - - 0 - 0 - - - - - - - - - 80 - 0 - - - - Create - - - - - - - - 80 - 0 - - - - Update - - - - - - - - 80 - 0 - - - - Delete - - - - + + + + 80 + 0 + + + + Create + + + + + + + + 80 + 0 + + + + Update + + - - - - - - - Audit - - - - 4 - - - - true + + + + 80 + 0 + - Not installed + Delete - + + + + 80 + 0 + + + + Generate a copy of network layers from the anchor schema into audit + + + Activate + + + + + + + + 80 + 0 + + + + Refresh audit triggers on the anchor schema + + + Triggers + + + + + + + + + + + + + 0 + 1 + + + + Multilang + + + + 4 + + + + + Not installed + + + true + + + + + + + Qt::Vertical + + + + 0 + 0 + + + + + + + + 6 + + + - Qt::Vertical + Qt::Horizontal @@ -869,112 +942,68 @@ - - - 6 - - - - - Qt::Horizontal - - - - 0 - 0 - - - - - - - - - 80 - 0 - - - - Create - - - - - - - - 80 - 0 - - - - Update - - - - - - - - 80 - 0 - - - - Delete - - - - - - - - 80 - 0 - - - - Generate a copy of network layers from the anchor schema into audit - - - Activate - - - - - - - - 80 - 0 - - - - Refresh audit triggers on the anchor schema - - - Triggers - - - - + + + + 80 + 0 + + + + Create + + + + + + + Languages + + + + + + + + 80 + 0 + + + + Update + + + + + + + + 80 + 0 + + + + Delete + + - - - - + + + + + - - + + - + Qt::Horizontal @@ -987,7 +1016,7 @@ - + diff --git a/core/utils/tools_gw.py b/core/utils/tools_gw.py index 4d12b6985c..6e49768d87 100644 --- a/core/utils/tools_gw.py +++ b/core/utils/tools_gw.py @@ -26,7 +26,7 @@ from functools import partial from datetime import datetime -from qgis.PyQt.QtCore import Qt, QStringListModel, QVariant, QDate, QSettings, QLocale, QRegularExpression, \ +from qgis.PyQt.QtCore import Qt, QStringListModel, QVariant, QDate, QRegularExpression, \ QItemSelectionModel, QTimer from qgis.PyQt.QtGui import QCursor, QPixmap, QColor, QStandardItemModel, QIcon, QStandardItem, \ QIntValidator, QDoubleValidator, QRegularExpressionValidator, QPalette @@ -675,7 +675,7 @@ def create_body(form='', feature='', filter_fields='', extras=None, list_feature info_types = {'full': 1} plugin_version, message = tools_qgis.get_plugin_version() info_type = info_types.get(lib_vars.project_vars['info_type']) - lang = QSettings().value('locale/globalLocale', QLocale().name()) + lang = tools_qgis.get_ui_language_locale() if body: body.setdefault('client', {"device": 4, "lang": lang, "version": f'"{plugin_version}"'}) diff --git a/dbmodel/schemas/addon/multilang/base/base.sql b/dbmodel/schemas/addon/multilang/base/base.sql index 5f862957c7..5b84ae7043 100644 --- a/dbmodel/schemas/addon/multilang/base/base.sql +++ b/dbmodel/schemas/addon/multilang/base/base.sql @@ -21,48 +21,15 @@ CREATE TABLE sys_version ( ); CREATE TABLE cat_language ( - id text NOT NULL, - idval text NULL, + id text NOT NULL, + idval text NULL, CONSTRAINT cat_language_idval_key UNIQUE (idval), CONSTRAINT cat_language_pkey PRIMARY KEY (id) ); - -CREATE TABLE dbconfig_csv ( - id serial4 NOT NULL, - schema_name text NOT NULL, - context text NOT NULL, - "source" text NOT NULL, - lang text NOT NULL DEFAULT 'en_us', - al text NULL, - ds text NULL, - updated_by text DEFAULT CURRENT_USER NULL, - updated_on timestamptz DEFAULT now() NULL, - CONSTRAINT dbconfig_csv_id_uniq UNIQUE (id), - CONSTRAINT dbconfig_csv_pkey PRIMARY KEY ("source", schema_name, context, lang), - CONSTRAINT dbconfig_csv_lang_fkey FOREIGN KEY (lang) REFERENCES cat_language(id) -); - -CREATE TABLE dbconfig_engine ( - id serial4 NOT NULL, - schema_name text NOT NULL, - context text NOT NULL, - "parameter" text NOT NULL, - "method" text NOT NULL, - lang text NOT NULL DEFAULT 'en_us', - lb text NULL, - ds text NULL, - pl text NULL, - updated_by text DEFAULT CURRENT_USER NULL, - updated_on timestamptz DEFAULT now() NULL, - CONSTRAINT dbconfig_engine_id_uniq UNIQUE (id), - CONSTRAINT dbconfig_engine_pkey PRIMARY KEY (schema_name, context, "parameter", "method", lang), - CONSTRAINT dbconfig_engine_lang_fkey FOREIGN KEY (lang) REFERENCES cat_language(id) -); - -CREATE TABLE dbconfig_form_fields ( +CREATE TABLE config_form_fields ( id serial4 NOT NULL, - schema_name text NOT NULL, + project_type text NOT NULL, context text NOT NULL, formname text NOT NULL, formtype text NOT NULL, @@ -73,66 +40,32 @@ CREATE TABLE dbconfig_form_fields ( tt text NULL, updated_by text DEFAULT CURRENT_USER NULL, updated_on timestamptz DEFAULT now() NULL, - CONSTRAINT dbconfig_form_fields_id_uniq UNIQUE (id), - CONSTRAINT dbconfig_form_fields_pkey PRIMARY KEY (tabname, context, formname, formtype, schema_name, "source", lang), - CONSTRAINT dbconfig_form_fields_lang_fkey FOREIGN KEY (lang) REFERENCES cat_language(id) + CONSTRAINT config_form_fields_id_uniq UNIQUE (id), + CONSTRAINT config_form_fields_pkey PRIMARY KEY (tabname, context, formname, formtype, project_type, "source", lang), + CONSTRAINT config_form_fields_lang_fkey FOREIGN KEY (lang) REFERENCES cat_language(id) ); -CREATE TABLE dbconfig_form_fields_feat ( +CREATE TABLE config_form_fields_json ( id serial4 NOT NULL, - schema_name text NOT NULL, - context text NOT NULL, - feature_type text NOT NULL, - formtype text NOT NULL, - tabname text NOT NULL, - "source" text NOT NULL, - lang text NOT NULL DEFAULT 'en_us', - lb text NULL, - tt text NULL, - updated_by text DEFAULT CURRENT_USER NULL, - updated_on timestamptz DEFAULT now() NULL, - CONSTRAINT dbconfig_form_fields_feat_id_uniq UNIQUE (id), - CONSTRAINT dbconfig_form_fields_feat_pkey PRIMARY KEY (tabname, context, feature_type, formtype, schema_name, "source", lang), - CONSTRAINT dbconfig_form_fields_feat_lang_fkey FOREIGN KEY (lang) REFERENCES cat_language(id) -); - -CREATE TABLE dbconfig_form_fields_json ( - id serial4 NOT NULL, - schema_name text NOT NULL, + project_type text NOT NULL, context text NOT NULL, formname text NOT NULL, formtype text NOT NULL, tabname text NOT NULL, "source" text NOT NULL, - hint text NOT NULL, - "text" json NULL, - lang text NOT NULL DEFAULT 'en_us', - lb text NULL, - updated_by text DEFAULT CURRENT_USER NULL, - updated_on timestamptz DEFAULT now() NULL, - CONSTRAINT dbconfig_form_fields_json_id_uniq UNIQUE (id), - CONSTRAINT dbconfig_form_fields_json_pkey PRIMARY KEY (schema_name, context, hint, "source", formname, formtype, tabname, lang), - CONSTRAINT dbconfig_form_fields_json_lang_fkey FOREIGN KEY (lang) REFERENCES cat_language(id) -); - -CREATE TABLE dbconfig_form_tableview ( - id serial4 NOT NULL, - schema_name text NOT NULL, - context text NOT NULL, - columnname text NOT NULL, - "source" text NOT NULL, + hint text NOT NULL DEFAULT 'widgetcontrols', lang text NOT NULL DEFAULT 'en_us', - al text NULL, + "text" jsonb NULL, updated_by text DEFAULT CURRENT_USER NULL, updated_on timestamptz DEFAULT now() NULL, - CONSTRAINT dbconfig_form_tableview_id_uniq UNIQUE (id), - CONSTRAINT dbconfig_form_tableview_pkey PRIMARY KEY ("source", schema_name, context, columnname, lang), - CONSTRAINT dbconfig_form_tableview_lang_fkey FOREIGN KEY (lang) REFERENCES cat_language(id) + CONSTRAINT config_form_fields_json_id_uniq UNIQUE (id), + CONSTRAINT config_form_fields_json_pkey PRIMARY KEY (tabname, context, formname, formtype, project_type, "source", hint, lang), + CONSTRAINT config_form_fields_json_lang_fkey FOREIGN KEY (lang) REFERENCES cat_language(id) ); -CREATE TABLE dbconfig_form_tabs ( +CREATE TABLE config_form_tabs ( id serial4 NOT NULL, - schema_name text NOT NULL, + project_type text NOT NULL, context text NOT NULL, formname text NOT NULL, "source" text NOT NULL, @@ -141,14 +74,14 @@ CREATE TABLE dbconfig_form_tabs ( tt text NULL, updated_by text DEFAULT CURRENT_USER NULL, updated_on timestamptz DEFAULT now() NULL, - CONSTRAINT dbconfig_form_tabs_id_uniq UNIQUE (id), - CONSTRAINT dbconfig_form_tabs_pkey PRIMARY KEY (schema_name, context, formname, "source", lang), - CONSTRAINT dbconfig_form_tabs_lang_fkey FOREIGN KEY (lang) REFERENCES cat_language(id) + CONSTRAINT config_form_tabs_id_uniq UNIQUE (id), + CONSTRAINT config_form_tabs_pkey PRIMARY KEY (project_type, context, formname, "source", lang), + CONSTRAINT config_form_tabs_lang_fkey FOREIGN KEY (lang) REFERENCES cat_language(id) ); -CREATE TABLE dbconfig_param_system ( +CREATE TABLE config_param_system ( id serial4 NOT NULL, - schema_name text NOT NULL, + project_type text NOT NULL, context text NOT NULL, "source" text NOT NULL, lang text NOT NULL DEFAULT 'en_us', @@ -156,76 +89,14 @@ CREATE TABLE dbconfig_param_system ( tt text NULL, updated_by text DEFAULT CURRENT_USER NULL, updated_on timestamptz DEFAULT now() NULL, - CONSTRAINT dbconfig_param_system_id_uniq UNIQUE (id), - CONSTRAINT dbconfig_param_system_pkey PRIMARY KEY (schema_name, context, "source", lang), - CONSTRAINT dbconfig_param_system_lang_fkey FOREIGN KEY (lang) REFERENCES cat_language(id) -); - -CREATE TABLE dbconfig_report ( - id serial4 NOT NULL, - schema_name text NOT NULL, - context text NOT NULL, - "source" text NOT NULL, - lang text NOT NULL DEFAULT 'en_us', - al text NULL, - ds text NULL, - updated_by text DEFAULT CURRENT_USER NULL, - updated_on timestamptz DEFAULT now() NULL, - CONSTRAINT dbconfig_report_id_uniq UNIQUE (id), - CONSTRAINT dbconfig_report_pkey PRIMARY KEY (schema_name, context, "source", lang), - CONSTRAINT dbconfig_report_lang_fkey FOREIGN KEY (lang) REFERENCES cat_language(id) -); - -CREATE TABLE dbconfig_toolbox ( - id serial4 NOT NULL, - schema_name text NOT NULL, - context text NOT NULL, - "source" text NOT NULL, - lang text NOT NULL DEFAULT 'en_us', - al text NULL, - ob text NULL, - updated_by text DEFAULT CURRENT_USER NULL, - updated_on timestamptz DEFAULT now() NULL, - CONSTRAINT dbconfig_toolbox_id_uniq UNIQUE (id), - CONSTRAINT dbconfig_toolbox_pkey PRIMARY KEY (schema_name, context, "source", lang), - CONSTRAINT dbconfig_toolbox_lang_fkey FOREIGN KEY (lang) REFERENCES cat_language(id) -); - -CREATE TABLE dbconfig_typevalue ( - id serial4 NOT NULL, - schema_name text NOT NULL, - context text NOT NULL, - formname text NOT NULL, - "source" text NOT NULL, - lang text NOT NULL DEFAULT 'en_us', - tt text NULL, - updated_by text DEFAULT CURRENT_USER NULL, - updated_on timestamptz DEFAULT now() NULL, - CONSTRAINT dbconfig_typevalue_id_uniq UNIQUE (id), - CONSTRAINT dbconfig_typevalue_pkey PRIMARY KEY (schema_name, context, formname, "source", lang), - CONSTRAINT dbconfig_typevalue_lang_fkey FOREIGN KEY (lang) REFERENCES cat_language(id) -); - -CREATE TABLE dbconfig_visit_parameter ( - id serial4 NOT NULL, - schema_name text NOT NULL, - context text NOT NULL, - "source" text NOT NULL, - lang text NOT NULL DEFAULT 'en_us', - ds text NULL, - updated_by text DEFAULT CURRENT_USER NULL, - updated_on timestamptz DEFAULT now() NULL, - CONSTRAINT dbconfig_visit_parameter_pkey PRIMARY KEY (schema_name, context, "source", lang), - CONSTRAINT dbconfig_visit_parameter_lang_fkey FOREIGN KEY (lang) REFERENCES cat_language(id) + CONSTRAINT config_param_system_id_uniq UNIQUE (id), + CONSTRAINT config_param_system_pkey PRIMARY KEY (project_type, context, "source", lang), + CONSTRAINT config_param_system_lang_fkey FOREIGN KEY (lang) REFERENCES cat_language(id) ); -CREATE INDEX idx_dbconfig_form_fields_lang ON dbconfig_form_fields USING btree (lang); -CREATE INDEX idx_dbconfig_param_system_lang ON dbconfig_param_system USING btree (lang); - - -CREATE TABLE dbfprocess ( +CREATE TABLE sys_fprocess ( id serial4 NOT NULL, - schema_name text NOT NULL, + project_type text NOT NULL, context text NOT NULL, "source" text NOT NULL, lang text NOT NULL DEFAULT 'en_us', @@ -234,58 +105,28 @@ CREATE TABLE dbfprocess ( na text NULL, updated_by text DEFAULT CURRENT_USER NULL, updated_on timestamptz DEFAULT now() NULL, - CONSTRAINT dbfprocess_id_uniq UNIQUE (id), - CONSTRAINT dbfprocess_pkey PRIMARY KEY (schema_name, context, "source", lang), - CONSTRAINT dbfprocess_lang_fkey FOREIGN KEY (lang) REFERENCES cat_language(id) + CONSTRAINT sys_fprocess_id_uniq UNIQUE (id), + CONSTRAINT sys_fprocess_pkey PRIMARY KEY (project_type, context, "source", lang), + CONSTRAINT sys_fprocess_lang_fkey FOREIGN KEY (lang) REFERENCES cat_language(id) ); -CREATE TABLE dbfunction ( +CREATE TABLE sys_function ( id serial4 NOT NULL, - schema_name text NOT NULL, + project_type text NOT NULL, context text NOT NULL, "source" text NOT NULL, lang text NOT NULL DEFAULT 'en_us', ds text NULL, updated_by text DEFAULT CURRENT_USER NULL, updated_on timestamptz DEFAULT now() NULL, - CONSTRAINT dbfunction_id_uniq UNIQUE (id), - CONSTRAINT dbfunction_pkey PRIMARY KEY (schema_name, context, "source", lang), - CONSTRAINT dbfunction_lang_fkey FOREIGN KEY (lang) REFERENCES cat_language(id) -); - -CREATE TABLE dbjson ( - id serial4 NOT NULL, - schema_name text NOT NULL, - context text NOT NULL, - hint text NOT NULL, - "text" json NULL, - "source" text NOT NULL, - lang text NOT NULL DEFAULT 'en_us', - lb text NULL, - updated_by text DEFAULT CURRENT_USER NULL, - updated_on timestamptz DEFAULT now() NULL, - CONSTRAINT dbjson_id_uniq UNIQUE (id), - CONSTRAINT dbjson_pkey PRIMARY KEY (schema_name, context, hint, "source", lang), - CONSTRAINT dbjson_lang_fkey FOREIGN KEY (lang) REFERENCES cat_language(id) + CONSTRAINT sys_function_id_uniq UNIQUE (id), + CONSTRAINT sys_function_pkey PRIMARY KEY (project_type, context, "source", lang), + CONSTRAINT sys_function_lang_fkey FOREIGN KEY (lang) REFERENCES cat_language(id) ); -CREATE TABLE dblabel ( +CREATE TABLE sys_message ( id serial4 NOT NULL, - schema_name text NOT NULL, - context text NOT NULL, - "source" text NOT NULL, - lang text NOT NULL DEFAULT 'en_us', - vl text NULL, - updated_by text DEFAULT CURRENT_USER NULL, - updated_on timestamptz DEFAULT now() NULL, - CONSTRAINT dblabel_id_uniq UNIQUE (id), - CONSTRAINT dblabel_pkey PRIMARY KEY (schema_name, context, "source", lang), - CONSTRAINT dblabel_lang_fkey FOREIGN KEY (lang) REFERENCES cat_language(id) -); - -CREATE TABLE dbmessage ( - id serial4 NOT NULL, - schema_name text NOT NULL, + project_type text NOT NULL, context text NOT NULL, "source" text NOT NULL, lang text NOT NULL DEFAULT 'en_us', @@ -293,14 +134,14 @@ CREATE TABLE dbmessage ( ht text NULL, updated_by text DEFAULT CURRENT_USER NULL, updated_on timestamptz DEFAULT now() NULL, - CONSTRAINT dbmessage_id_uniq UNIQUE (id), - CONSTRAINT dbmessage_pkey PRIMARY KEY (schema_name, context, "source", lang), - CONSTRAINT dbmessage_lang_fkey FOREIGN KEY (lang) REFERENCES cat_language(id) + CONSTRAINT sys_message_id_uniq UNIQUE (id), + CONSTRAINT sys_message_pkey PRIMARY KEY (project_type, context, "source", lang), + CONSTRAINT sys_message_lang_fkey FOREIGN KEY (lang) REFERENCES cat_language(id) ); -CREATE TABLE dbparam_user ( +CREATE TABLE sys_param_user ( id serial4 NOT NULL, - schema_name text NOT NULL, + project_type text NOT NULL, context text NOT NULL, "source" text NOT NULL, lang text NOT NULL DEFAULT 'en_us', @@ -308,47 +149,14 @@ CREATE TABLE dbparam_user ( updated_on timestamptz DEFAULT now() NULL, lb text NULL, tt text NULL, - CONSTRAINT dbparam_user_id_uniq UNIQUE (id), - CONSTRAINT dbparam_user_pkey PRIMARY KEY (schema_name, context, "source", lang), - CONSTRAINT dbparam_user_lang_fkey FOREIGN KEY (lang) REFERENCES cat_language(id) + CONSTRAINT sys_param_user_id_uniq UNIQUE (id), + CONSTRAINT sys_param_user_pkey PRIMARY KEY (project_type, context, "source", lang), + CONSTRAINT sys_param_user_lang_fkey FOREIGN KEY (lang) REFERENCES cat_language(id) ); -CREATE TABLE dbplan_price ( +CREATE TABLE sys_table ( id serial4 NOT NULL, - schema_name text NOT NULL, - context text NOT NULL, - "source" text NOT NULL, - lang text NOT NULL DEFAULT 'en_us', - ds text NULL, - tx text NULL, - pr text NULL, - updated_by text DEFAULT CURRENT_USER NULL, - updated_on timestamptz DEFAULT now() NULL, - CONSTRAINT dbplan_price_id_uniq UNIQUE (id), - CONSTRAINT dbplan_price_pkey PRIMARY KEY (schema_name, context, "source", lang), - CONSTRAINT dbplan_price_lang_fkey FOREIGN KEY (lang) REFERENCES cat_language(id) -); - -CREATE TABLE dbstyle ( - id serial4 NOT NULL, - schema_name text NOT NULL, - context text NOT NULL, - layername text NOT NULL, - "source" text NOT NULL, - org_text text NOT NULL, - hint text NOT NULL, - lang text NOT NULL DEFAULT 'en_us', - lb text NULL, - updated_by text DEFAULT CURRENT_USER NULL, - updated_on timestamptz DEFAULT now() NULL, - CONSTRAINT dbstyle_id_uniq UNIQUE (id), - CONSTRAINT dbstyle_pkey PRIMARY KEY (schema_name, context, hint, layername, "source", lang), - CONSTRAINT dbstyle_lang_fkey FOREIGN KEY (lang) REFERENCES cat_language(id) -); - -CREATE TABLE dbtable ( - id serial4 NOT NULL, - schema_name text NOT NULL, + project_type text NOT NULL, context text NOT NULL, "source" text NOT NULL, lang text NOT NULL DEFAULT 'en_us', @@ -356,27 +164,29 @@ CREATE TABLE dbtable ( al text NULL, updated_by text DEFAULT CURRENT_USER NULL, updated_on timestamptz DEFAULT now() NULL, - CONSTRAINT dbtable_id_uniq UNIQUE (id), - CONSTRAINT dbtable_pkey PRIMARY KEY (schema_name, context, "source", lang), - CONSTRAINT dbtable_lang_fkey FOREIGN KEY (lang) REFERENCES cat_language(id) + CONSTRAINT sys_table_id_uniq UNIQUE (id), + CONSTRAINT sys_table_pkey PRIMARY KEY (project_type, context, "source", lang), + CONSTRAINT sys_table_lang_fkey FOREIGN KEY (lang) REFERENCES cat_language(id) ); -CREATE TABLE dbtypevalue ( +CREATE TABLE cat_user_lang ( id serial4 NOT NULL, schema_name text NOT NULL, - context text NOT NULL, - typevalue text NOT NULL, - "source" text NOT NULL, + project_type text NOT NULL, lang text NOT NULL DEFAULT 'en_us', - vl text NULL, - ds text NULL, + username text NOT NULL, updated_by text DEFAULT CURRENT_USER NULL, updated_on timestamptz DEFAULT now() NULL, - CONSTRAINT dbtypevalue_id_uniq UNIQUE (id), - CONSTRAINT dbtypevalue_pkey PRIMARY KEY (schema_name, context, typevalue, "source", lang), - CONSTRAINT dbtypevalue_lang_fkey FOREIGN KEY (lang) REFERENCES cat_language(id) + CONSTRAINT cat_user_lang_id_uniq UNIQUE (id), + CONSTRAINT cat_user_lang_pkey PRIMARY KEY (schema_name, username), + CONSTRAINT cat_user_lang_lang_fkey FOREIGN KEY (lang) REFERENCES cat_language(id) ); +CREATE INDEX idx_cat_user_lang_project_type ON cat_user_lang USING btree (project_type); + +CREATE INDEX idx_config_form_fields_lang ON config_form_fields USING btree (lang); +CREATE INDEX idx_config_form_fields_json_lang ON config_form_fields_json USING btree (lang); +CREATE INDEX idx_config_param_system_lang ON config_param_system USING btree (lang); GRANT ALL ON SCHEMA multilang TO role_basic; GRANT SELECT ON ALL TABLES IN SCHEMA multilang TO role_basic; diff --git a/dbmodel/schemas/addon/multilang/base/fct/gw_fct_get_multilang_language.sql b/dbmodel/schemas/addon/multilang/base/fct/gw_fct_get_multilang_language.sql new file mode 100644 index 0000000000..4024957d15 --- /dev/null +++ b/dbmodel/schemas/addon/multilang/base/fct/gw_fct_get_multilang_language.sql @@ -0,0 +1,67 @@ +/* +This file is part of Giswater +The program is free software: you can redistribute it and/or modify it under the terms of the GNU +General Public License as published by the Free Software Foundation, either version 3 of the License, +or (at your option) any later version. +*/ + +--FUNCTION CODE: 3566 + +DROP FUNCTION IF EXISTS SCHEMA_NAME.gw_fct_get_multilang_language(); +DROP FUNCTION IF EXISTS SCHEMA_NAME.gw_fct_get_multilang_language(text); +CREATE OR REPLACE FUNCTION SCHEMA_NAME.gw_fct_get_multilang_language(p_schema_name text) +RETURNS jsonb AS +$BODY$ +/* +Returns jsonb {"lang": "...", "project_type": "..."} from cat_user_lang for the +given network schema and current_user, or NULL when unset / invalid. + +Translations are keyed by project_type; language preference remains per schema. +*/ +DECLARE + v_lang text; + v_project_type text; + v_schema text; + v_prev_search_path text; +BEGIN + v_prev_search_path := current_setting('search_path'); + PERFORM set_config('search_path', 'multilang,public', true); + + v_schema := NULLIF(btrim(p_schema_name), ''); + IF v_schema IS NULL THEN + PERFORM set_config('search_path', v_prev_search_path, true); + RETURN NULL; + END IF; + + BEGIN + SELECT + lang, + project_type + INTO v_lang, v_project_type + FROM cat_user_lang + WHERE schema_name = v_schema + AND username = current_user; + EXCEPTION WHEN OTHERS THEN + PERFORM set_config('search_path', v_prev_search_path, true); + RETURN NULL; + END; + + IF v_lang IS NULL OR v_lang = '' OR length(v_lang) != 5 THEN + PERFORM set_config('search_path', v_prev_search_path, true); + RETURN NULL; + END IF; + + IF v_project_type IS NULL OR btrim(v_project_type) = '' THEN + PERFORM set_config('search_path', v_prev_search_path, true); + RETURN NULL; + END IF; + + PERFORM set_config('search_path', v_prev_search_path, true); + RETURN jsonb_build_object( + 'lang', lower(v_lang), + 'project_type', lower(btrim(v_project_type)) + ); +END; +$BODY$ + LANGUAGE plpgsql VOLATILE + COST 100; diff --git a/dbmodel/schemas/addon/multilang/updates/4/15/0/patch.sql b/dbmodel/schemas/addon/multilang/updates/4/15/0/patch.sql deleted file mode 100644 index b56842582f..0000000000 --- a/dbmodel/schemas/addon/multilang/updates/4/15/0/patch.sql +++ /dev/null @@ -1,10 +0,0 @@ -/* -This file is part of Giswater -The program is free software: you can redistribute it and/or modify it under the terms of the GNU -General Public License as published by the Free Software Foundation, either version 3 of the License, -or (at your option) any later version. -*/ - -SET search_path = multilang, public, pg_catalog; - --- Reserved for future semver patches after the base bootstrap. diff --git a/dbmodel/schemas/addon/utils/final_pass/i18n/en_US/dbconfig_csv.sql b/dbmodel/schemas/addon/utils/final_pass/i18n/en_US/dbconfig_csv.sql new file mode 100644 index 0000000000..9e6ef7e026 --- /dev/null +++ b/dbmodel/schemas/addon/utils/final_pass/i18n/en_US/dbconfig_csv.sql @@ -0,0 +1,41 @@ +/* +This file is part of Giswater +The program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. +*/ + + +SET search_path = SCHEMA_NAME, public, pg_catalog; +UPDATE config_csv AS t SET alias = v.alias, descript = v.descript FROM ( + VALUES + (385, 'Import inp timeseries', 'Function to assist the import of timeseries for inp models. The csv file must containts next columns on same position: timseries, timser_type, times_type, descript, expl_id, date, hour, time, value (fill date/hour for ABSOLUTE or time for RELATIVE)'), + (408, 'Import istram nodes', NULL), + (409, 'Import istram arcs', NULL), + (445, 'Import cat_feature_node', 'The csv file must contain the following columns in the exact same order: id, system_id, epa_default, isarcdivide, isprofilesurface, code_autofill, choose_hemisphere, double_geom, num_arcs, isexitupperintro, shortcut_key, link_path, descript, active'), + (446, 'Import cat_feature_connec', 'The csv file must contain the following columns in the exact same order: id, system_id, code_autofill, double_geom, shortcut_key, link_path, descript, active'), + (447, 'Import cat_feature_gully', 'The csv file must contain the following columns in the exact same order: id, system_id, epa_default, code_autofill, double_geom, shortcut_key, link_path, descript, active'), + (448, 'Import cat_node', 'The csv file must contain the following columns in the exact same order: id, matcat_id, shape, geom1, geom2, geom3, descript, link, brand, model, svg, estimated_y, cost_unit, cost, active, label, node_type, acoeff'), + (449, 'Import cat_connec', 'The csv file must contain the following columns in the exact same order: id, matcat_id, shape, geom1, geom2, geom3, geom4, geom_r, descript, link, brand, model, svg, active, label, connec_type'), + (450, 'Import cat_arc', 'The csv file must contain the following columns in the exact same order: id, matcat_id, shape, geom1, geom2, geom3, geom4, geom5, geom6,geom7, geom8, geom_r, descript, link, brand, model, svg, z1, z2, width, area, estimated_depth, bulk, cost_unit, cost, m2bottom_cost, m3protec_cost, active, label, tsect_id, curve_id, arc_type, acoeff, connect_cost'), + (451, 'Import cat_grate', 'The csv file must contain the following columns in the exact same order: id, matcat_id, length, width, total_area, effective_area, n_barr_l, n_barr_w, n_barr_diag, a_param, b_param, descript, link, brand, model, svg, active, label, gully_type'), + (527, 'Import DWF', 'Function to import DWF values. The CSV file must contain the following columns in the exact same order: dwfscenario_id, node_id, value, pat1, pat2, pat3, pat4'), + (234, 'Import db prices', 'The csv file must contains next columns on same position: id, unit, descript, text, price. - The column price must be numeric with two decimals. - You can choose a catalog name for these prices setting an import label. '), + (235, 'Import elements', 'The csv file must containts next columns on same position: Id (arc_id, node_id, connec_id), code, elementcat_id, observ, comment, num_elements, state type (id), workcat_id, verified (choose from edit_typevalue>value_verified). - Observations and comments fields are optional - ATTENTION! Import label has to be filled with the type of element (node, arc, connec)'), + (238, 'Import om visit', 'To use this import csv function parameter you need to configure before execute it the system parameter ''utils_csv2pg_om_visit_parameters''. Also whe recommend to read before the annotations inside the function to work as well as posible with'), + (384, 'Import inp curves', 'Function to automatize the import of inp curves files. The csv file must containts next columns on same position: curve_id, x_value, y_value, curve_type (for WS project OR UD project curve_type has diferent values. Check user manual)'), + (386, 'Import inp patterns', 'Function to automatize the import of inp patterns files. The csv file must containts next columns on same position: pattern_id, pattern_type, factor1,.......,factorn. For WS use up factor18, repeating rows if you like. For UD use up factor24. More than one row for pattern is not allowed'), + (444, 'Import cat_feature_arc', 'The csv file must contain the following columns in the exact same order: id, system_id, epa_default, code_autofill, shortcut_key, link_path, descript, active'), + (469, 'Import scada values', 'Import scada values into table ext_rtc_scada_x_data according example file scada_values.csv'), + (470, 'Import hydrometer_x_data', 'The csv file must have the following fields: hydrometer_id, cat_period_id, sum, value_date (optional), value_type (optional), value_status (optional), value_state (optional)'), + (471, 'Import crm period values', 'The csv file must have the following fields: id, start_date, end_date, period_seconds (optional), code'), + (445, 'Import cat_feature_node', 'The csv file must contain the following columns in the exact same order: id, system_id, epa_default, isarcdivide, isprofilesurface, choose_hemisphere, code_autofill, double_geom, num_arcs, graph_delimiter, shortcut_key, link_path, descript, active'), + (446, 'Import cat_feature_connec', 'The csv file must contain the following columns in the exact same order: id, system_id, epa_default, code_autofill, shortcut_key, link_path, descript, active'), + (448, 'Import cat_node', 'The csv file must contain the following columns in the exact same order: id, nodetype_id, matcat_id, pnom, dnom, dint, dext, shape, descript, link, brand, model, svg, estimated_depth, cost_unit, cost, active, label, ischange, acoeff'), + (449, 'Import cat_connec', 'The csv file must contain the following columns in the exact same order: id, connectype_id, matcat_id, pnom, dnom, dint, dext, descript, link, brand, model, svg, active, label'), + (450, 'Import cat_arc', 'The csv file must contain the following columns in the exact same order: id, arctype_id, matcat_id, pnom, dnom, dint, dext, descript, link, brand, model, svg, z1, z2, width, area, estimated_depth, bulk, cost_unit, cost, m2bottom_cost, m3protec_cost, active, label, shape, acoeff, connect_cost'), + (500, 'Import valve status', 'The csv file must have the folloWing fields: dscenario_name, node_id, status'), + (501, 'Import dscenario demands', 'The csv file must have the following fields: dscenario_name, feature_id, feature_type, value, demand_type, pattern_id, source'), + (504, 'Import flowmeter daily values', 'Import daily flowmeter values into table ext_rtc_scada_x_data according example file scada_flowmeter_daily_values.csv'), + (506, 'Import flowmeter agg values', 'Import aggregated flowmeter values into table ext_rtc_scada_x_data according example file scada_flowmeter_agg_values.csv'), + (514, 'Import netscenario closed valves ', 'The csv file must have the following fields: netscenario_id, node_id, closed') +) AS v(fid, alias, descript) +WHERE t.fid = v.fid; \ No newline at end of file diff --git a/dbmodel/schemas/addon/utils/final_pass/i18n/en_US/dbconfig_form_fields.sql b/dbmodel/schemas/addon/utils/final_pass/i18n/en_US/dbconfig_form_fields.sql new file mode 100644 index 0000000000..ecdf791fb0 --- /dev/null +++ b/dbmodel/schemas/addon/utils/final_pass/i18n/en_US/dbconfig_form_fields.sql @@ -0,0 +1,4620 @@ +/* +This file is part of Giswater +The program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. +*/ + + +SET search_path = SCHEMA_NAME, public, pg_catalog; +UPDATE config_param_system SET value = FALSE WHERE parameter = 'admin_config_control_trigger'; + +UPDATE config_form_fields AS t SET label = v.label, tooltip = v.tooltip FROM ( + VALUES + ('curve_id', 'cat_arc', 'form_feature', 'tab_none', 'Curve id:', 'Curve id:'), + ('geom1', 'cat_arc', 'form_feature', 'tab_none', 'Geom1:', 'Geom1:'), + ('geom2', 'cat_arc', 'form_feature', 'tab_none', 'Geom2:', 'Geom2:'), + ('geom3', 'cat_arc', 'form_feature', 'tab_none', 'Geom3:', 'Geom3:'), + ('geom4', 'cat_arc', 'form_feature', 'tab_none', 'Geom4:', 'Geom4:'), + ('geom5', 'cat_arc', 'form_feature', 'tab_none', 'Geom5:', 'Geom5:'), + ('geom6', 'cat_arc', 'form_feature', 'tab_none', 'Geom6:', 'Geom6:'), + ('geom7', 'cat_arc', 'form_feature', 'tab_none', 'Geom7:', 'Geom7:'), + ('geom8', 'cat_arc', 'form_feature', 'tab_none', 'Geom8:', 'Geom8:'), + ('geom_r', 'cat_arc', 'form_feature', 'tab_none', 'Geom r:', 'Geom r:'), + ('tsect_id', 'cat_arc', 'form_feature', 'tab_none', 'Tsect id:', 'Tsect id:'), + ('active', 'cat_arc_shape', 'form_feature', 'tab_none', 'Active:', 'Active:'), + ('descript', 'cat_arc_shape', 'form_feature', 'tab_none', 'Descript:', 'Descript:'), + ('epa', 'cat_arc_shape', 'form_feature', 'tab_none', 'Epa:', 'Epa:'), + ('id', 'cat_arc_shape', 'form_feature', 'tab_none', 'Id:', 'Id:'), + ('image', 'cat_arc_shape', 'form_feature', 'tab_none', 'Image:', 'Image:'), + ('geom1', 'cat_connec', 'form_feature', 'tab_none', 'Geom1:', 'Geom1:'), + ('geom2', 'cat_connec', 'form_feature', 'tab_none', 'Geom2:', 'Geom2:'), + ('geom3', 'cat_connec', 'form_feature', 'tab_none', 'Geom3:', 'Geom3:'), + ('geom4', 'cat_connec', 'form_feature', 'tab_none', 'Geom4:', 'Geom4:'), + ('geom_r', 'cat_connec', 'form_feature', 'tab_none', 'Geom r:', 'Geom r:'), + ('shape', 'cat_connec', 'form_feature', 'tab_none', 'Shape:', 'Shape:'), + ('active', 'cat_dwf', 'form_feature', 'tab_none', 'Active:', 'Active:'), + ('enddate', 'cat_dwf', 'form_feature', 'tab_none', 'Enddate:', 'Enddate:'), + ('id', 'cat_dwf', 'form_feature', 'tab_none', 'Id:', 'Id:'), + ('idval', 'cat_dwf', 'form_feature', 'tab_none', 'Idval:', 'Idval:'), + ('observ', 'cat_dwf', 'form_feature', 'tab_none', 'Observ:', 'Observ:'), + ('startdate', 'cat_dwf', 'form_feature', 'tab_none', 'Startdate:', 'Startdate:'), + ('id', 'cat_feature_gully', 'form_feature', 'tab_none', 'Id:', 'Id:'), + ('type', 'cat_feature_gully', 'form_feature', 'tab_none', 'Type:', 'Type:'), + ('isexitupperintro', 'cat_feature_node', 'form_feature', 'tab_none', 'Exit upper intro:', 'Exit upper intro:'), + ('a_param', 'cat_grate', 'form_feature', 'tab_none', 'A param:', 'A param:'), + ('active', 'cat_grate', 'form_feature', 'tab_none', 'Active:', 'Active:'), + ('b_param', 'cat_grate', 'form_feature', 'tab_none', 'B param:', 'B param:'), + ('brand', 'cat_grate', 'form_feature', 'tab_none', 'Brand:', 'Brand:'), + ('cost_ut', 'cat_grate', 'form_feature', 'tab_none', 'Cost ut:', 'Cost ut:'), + ('descript', 'cat_grate', 'form_feature', 'tab_none', 'Descript:', 'Descript:'), + ('effective_area', 'cat_grate', 'form_feature', 'tab_none', 'Efective area:', 'Efective area:'), + ('gully_type', 'cat_grate', 'form_feature', 'tab_none', 'Gully type:', 'Gully type:'), + ('id', 'cat_grate', 'form_feature', 'tab_none', 'Id:', 'Id:'), + ('label', 'cat_grate', 'form_feature', 'tab_none', 'Label:', 'Label:'), + ('length', 'cat_grate', 'form_feature', 'tab_none', 'Length:', 'Length:'), + ('link', 'cat_grate', 'form_feature', 'tab_none', 'Link:', 'Link:'), + ('matcat_id', 'cat_grate', 'form_feature', 'tab_none', 'Matcat id:', 'Matcat id:'), + ('model', 'cat_grate', 'form_feature', 'tab_none', 'Model:', 'Model:'), + ('n_barr_diag', 'cat_grate', 'form_feature', 'tab_none', 'N barr diag:', 'N barr diag:'), + ('n_barr_l', 'cat_grate', 'form_feature', 'tab_none', 'N barr l:', 'N barr l:'), + ('n_barr_w', 'cat_grate', 'form_feature', 'tab_none', 'N barr w:', 'N barr w:'), + ('svg', 'cat_grate', 'form_feature', 'tab_none', 'Svg:', 'Svg:'), + ('total_area', 'cat_grate', 'form_feature', 'tab_none', 'Total area:', 'Total area:'), + ('width', 'cat_grate', 'form_feature', 'tab_none', 'Width:', 'Width:'), + ('active', 'cat_hydrology', 'form_feature', 'tab_none', 'Active:', 'Active:'), + ('hydrology_id', 'cat_hydrology', 'form_feature', 'tab_none', 'Hydrology id:', 'Hydrology id:'), + ('infiltration', 'cat_hydrology', 'form_feature', 'tab_none', 'Infiltration:', 'Infiltration:'), + ('name', 'cat_hydrology', 'form_feature', 'tab_none', 'Name:', 'Name:'), + ('text', 'cat_hydrology', 'form_feature', 'tab_none', 'Text:', 'Text:'), + ('n', 'cat_mat_arc', 'form_feature', 'tab_none', 'N:', 'N:'), + ('active', 'cat_mat_grate', 'form_feature', 'tab_none', 'Active:', 'Active:'), + ('descript', 'cat_mat_grate', 'form_feature', 'tab_none', 'Descript:', 'Descript:'), + ('id', 'cat_mat_grate', 'form_feature', 'tab_none', 'Id:', 'Id:'), + ('link', 'cat_mat_grate', 'form_feature', 'tab_none', 'Link:', 'Link:'), + ('estimated_y', 'cat_node', 'form_feature', 'tab_none', 'Estimated y:', 'Estimated y:'), + ('geom1', 'cat_node', 'form_feature', 'tab_none', 'Geom1:', 'Geom1:'), + ('geom2', 'cat_node', 'form_feature', 'tab_none', 'Geom2:', 'Geom2:'), + ('geom3', 'cat_node', 'form_feature', 'tab_none', 'Geom3:', 'Geom3:'), + ('value', 'cat_node', 'form_feature', 'tab_none', 'Value:', 'Value:'), + ('active', 'cat_node_shape', 'form_feature', 'tab_none', 'Active:', 'Active:'), + ('descript', 'cat_node_shape', 'form_feature', 'tab_none', 'Descript:', 'Descript:'), + ('id', 'cat_node_shape', 'form_feature', 'tab_none', 'Id:', 'Id:'), + ('btn_doc_delete', 'element', 'form_feature', 'tab_documents', NULL, 'Delete document'), + ('btn_doc_insert', 'element', 'form_feature', 'tab_documents', NULL, 'Insert document'), + ('btn_doc_new', 'element', 'form_feature', 'tab_documents', NULL, 'New document'), + ('date_from', 'element', 'form_feature', 'tab_documents', 'Date from:', 'Date from:'), + ('date_to', 'element', 'form_feature', 'tab_documents', 'Date to:', 'Date to:'), + ('doc_name', 'element', 'form_feature', 'tab_documents', NULL, 'Doc id:'), + ('doc_type', 'element', 'form_feature', 'tab_documents', 'Doc type:', 'Doc type:'), + ('open_doc', 'element', 'form_feature', 'tab_documents', NULL, 'Open document'), + ('tbl_conduit', 'generic', 'dscenario', 'tab_conduit', ':', 'Table'), + ('tbl_inflows', 'generic', 'dscenario', 'tab_inflows', ':', 'Table'), + ('tbl_lids', 'generic', 'dscenario', 'tab_lids', ':', 'Table'), + ('tbl_orifice', 'generic', 'dscenario', 'tab_orifice', ':', 'Table'), + ('tbl_outfall', 'generic', 'dscenario', 'tab_outfall', ':', 'Table'), + ('tbl_outlet', 'generic', 'dscenario', 'tab_outlet', ':', 'Table'), + ('tbl_poll', 'generic', 'dscenario', 'tab_poll', ':', 'Table'), + ('tbl_raingage', 'generic', 'dscenario', 'tab_raingage', ':', 'Table'), + ('tbl_storage', 'generic', 'dscenario', 'tab_storage', ':', 'Table'), + ('tbl_treatment', 'generic', 'dscenario', 'tab_treatment', ':', 'Table'), + ('tbl_weir', 'generic', 'dscenario', 'tab_weir', ':', 'Table'), + ('compare_date', 'generic', 'epa_selector', 'tab_time', 'Compare date:', 'Compare date'), + ('compare_time', 'generic', 'epa_selector', 'tab_time', 'Compare time:', 'Compare time'), + ('selector_date', 'generic', 'epa_selector', 'tab_time', 'Selector date:', 'Selector date'), + ('selector_time', 'generic', 'epa_selector', 'tab_time', 'Selector time:', 'Selector time'), + ('btn_accept', 'generic', 'form_visit', 'tab_data', ':', ':'), + ('btn_apply', 'generic', 'form_visit', 'tab_file', ':', ':'), + ('btn_cancel', 'generic', 'form_visit', 'tab_file', ':', ':'), + ('btn_accept', 'generic', 'link_to_gully', 'tab_none', ':', 'Accept'), + ('btn_add', 'generic', 'link_to_gully', 'tab_none', NULL, 'Add'), + ('btn_close', 'generic', 'link_to_gully', 'tab_none', ':', 'Close'), + ('btn_filter_expression', 'generic', 'link_to_gully', 'tab_none', NULL, 'Filter by expression'), + ('btn_remove', 'generic', 'link_to_gully', 'tab_none', NULL, 'Remove'), + ('btn_snapping', 'generic', 'link_to_gully', 'tab_none', NULL, 'Select on canvas'), + ('id', 'generic', 'link_to_gully', 'tab_none', 'Gully Id:', 'Gully Id'), + ('linkcat', 'generic', 'link_to_gully', 'tab_none', 'Link catalog:', 'Link catalog'), + ('max_distance', 'generic', 'link_to_gully', 'tab_none', 'Maximum distance:', 'Maximum distance'), + ('pipe_diameter', 'generic', 'link_to_gully', 'tab_none', 'Maximum Pipe diameter:', 'Maximum Pipe diameter'), + ('value_2', 'generic', 'nvo_lids', 'tab_drain', 'Flow Coefficient*:', 'Flow Coefficient*:'), + ('value_3', 'generic', 'nvo_lids', 'tab_drain', 'Flow Exponent:', 'Flow Exponent:'), + ('value_4', 'generic', 'nvo_lids', 'tab_drain', 'Offset (in or mm):', 'Offset (in or mm):'), + ('value_5', 'generic', 'nvo_lids', 'tab_drain', 'Drain Delay (hrs):', 'Drain Delay (hrs):'), + ('value_6', 'generic', 'nvo_lids', 'tab_drain', 'Open Level (in or mm):', 'Open Level (in or mm):'), + ('value_7', 'generic', 'nvo_lids', 'tab_drain', 'Closed Level (in or mm):', 'Closed Level (in or mm):'), + ('value_2', 'generic', 'nvo_lids', 'tab_drainmat', 'Thickness (in. or mm):', 'Thickness (in. or mm):'), + ('value_3', 'generic', 'nvo_lids', 'tab_drainmat', 'Void Fraction:', 'Void Fraction:'), + ('value_4', 'generic', 'nvo_lids', 'tab_drainmat', 'Roughness (Mannings n):', 'Roughness (Mannings n):'), + ('lbl_lids', 'generic', 'nvo_lids', 'tab_none', 'Source: SWMM 5.1:', 'Source: SWMM 5.1:'), + ('lidco_id', 'generic', 'nvo_lids', 'tab_none', 'Control Name:', 'Control Name:'), + ('lidco_type', 'generic', 'nvo_lids', 'tab_none', 'Control Name:', 'Control Name:'), + ('value_2', 'generic', 'nvo_lids', 'tab_pavement', 'Thickness (in. or mm):', 'Thickness (in. or mm):'), + ('value_3', 'generic', 'nvo_lids', 'tab_pavement', 'Void Ratio (Void / Solids):', 'Void Ratio (Void / Solids):'), + ('value_4', 'generic', 'nvo_lids', 'tab_pavement', 'Imprevious Surface Fraction:', 'Imprevious Surface Fraction:'), + ('value_5', 'generic', 'nvo_lids', 'tab_pavement', 'Permeability (in/hr or mm/hr):', 'Permeability (in/hr or mm/hr):'), + ('value_6', 'generic', 'nvo_lids', 'tab_pavement', 'Clogging Factor:', 'Clogging Factor:'), + ('value_7', 'generic', 'nvo_lids', 'tab_pavement', 'Regeneration Interval (days):', 'Regeneration Interval (days):'), + ('value_8', 'generic', 'nvo_lids', 'tab_pavement', 'Regeneration Fraction:', 'Regeneration Fraction:'), + ('value_2', 'generic', 'nvo_lids', 'tab_roof', 'Flow Capacity (in/hr or mm/hr):', 'Flow Capacity (in/hr or mm/hr):'), + ('value_2', 'generic', 'nvo_lids', 'tab_soil', 'Thickness (in. or mm):', 'Thickness (in. or mm):'), + ('value_3', 'generic', 'nvo_lids', 'tab_soil', 'Porosity (volume fraction):', 'Porosity (volume fraction):'), + ('value_4', 'generic', 'nvo_lids', 'tab_soil', 'Field Capacity (volume fraction):', 'Field Capacity (volume fraction):'), + ('value_5', 'generic', 'nvo_lids', 'tab_soil', 'Wilting Point (volume fraction):', 'Wilting Point (volume fraction):'), + ('value_6', 'generic', 'nvo_lids', 'tab_soil', 'Conductivity (in/hr or mm/hr):', 'Conductivity (in/hr or mm/hr):'), + ('value_7', 'generic', 'nvo_lids', 'tab_soil', 'Conductivity Slope:', 'Conductivity Slope:'), + ('value_8', 'generic', 'nvo_lids', 'tab_soil', 'Suction Head (in. or mm):', 'Suction Head (in. or mm):'), + ('value_2', 'generic', 'nvo_lids', 'tab_storage', 'Thickness (in. or mm):', 'Thickness (in. or mm):'), + ('value_3', 'generic', 'nvo_lids', 'tab_storage', 'Void Ratio (Voids / Solids):', 'Void Ratio (Voids / Solids):'), + ('value_4', 'generic', 'nvo_lids', 'tab_storage', 'Seepage Rate (in/hr or mm/hr):', 'Seepage Rate (in/hr or mm/hr):'), + ('value_5', 'generic', 'nvo_lids', 'tab_storage', 'Thickness (in. or mm):', 'Thickness (in. or mm):'), + ('value_2', 'generic', 'nvo_lids', 'tab_surface', 'Berm Height (in. or mm):', 'Berm Height (in. or mm):'), + ('value_3', 'generic', 'nvo_lids', 'tab_surface', 'Vegetation Volume Fraction:', 'Vegetation Volume Fraction:'), + ('value_4', 'generic', 'nvo_lids', 'tab_surface', 'Surface Roughness (Mannings n):', 'Surface Roughness (Mannings n):'), + ('value_5', 'generic', 'nvo_lids', 'tab_surface', 'Surface Slope (percent):', 'Surface Slope (percent):'), + ('value_6', 'generic', 'nvo_lids', 'tab_surface', 'Swale Side Slope (run / rise):', 'Swale Side Slope (run / rise):'), + ('descript', 'generic', 'nvo_timeseries', 'tab_none', 'Description:', 'Description:'), + ('expl_id', 'generic', 'nvo_timeseries', 'tab_none', 'Exploitation Id:', 'Exploitation Id:'), + ('fname', 'generic', 'nvo_timeseries', 'tab_none', 'File name:', 'File name:'), + ('id', 'generic', 'nvo_timeseries', 'tab_none', 'Time Series Id:', 'Time Series Id:'), + ('idval', 'generic', 'nvo_timeseries', 'tab_none', 'Idval:', 'Idval:'), + ('times_type', 'generic', 'nvo_timeseries', 'tab_none', 'Times Type:', 'Times Type:'), + ('timser_type', 'generic', 'nvo_timeseries', 'tab_none', 'Time Series Type:', 'Time Series Type:'), + ('table_view_gully', 'generic', 'psector', 'tab_relations_gully', ':', 'Table'), + ('btn_doc_delete', 'gully', 'form_feature', 'tab_documents', NULL, 'Delete document'), + ('btn_doc_insert', 'gully', 'form_feature', 'tab_documents', NULL, 'Insert document'), + ('btn_doc_new', 'gully', 'form_feature', 'tab_documents', NULL, 'New document'), + ('date_from', 'gully', 'form_feature', 'tab_documents', 'Date from:', 'Date from:'), + ('date_to', 'gully', 'form_feature', 'tab_documents', 'Date to:', 'Date to:'), + ('doc_id', 'gully', 'form_feature', 'tab_documents', 'Doc id:', 'Doc id:'), + ('doc_type', 'gully', 'form_feature', 'tab_documents', 'Doc type:', 'Doc type:'), + ('open_doc', 'gully', 'form_feature', 'tab_documents', NULL, 'Open document'), + ('delete_element', 'gully', 'form_feature', 'tab_elements', NULL, 'Delete element'), + ('element_id', 'gully', 'form_feature', 'tab_elements', 'Element id:', 'Element id'), + ('insert_element', 'gully', 'form_feature', 'tab_elements', NULL, 'Insert element'), + ('new_element', 'gully', 'form_feature', 'tab_elements', NULL, 'New element'), + ('open_element', 'gully', 'form_feature', 'tab_elements', NULL, 'Open element'), + ('btn_new_visit', 'gully', 'form_feature', 'tab_event', NULL, 'New visit'), + ('btn_open_gallery', 'gully', 'form_feature', 'tab_event', NULL, 'Open gallery'), + ('btn_open_visit', 'gully', 'form_feature', 'tab_event', NULL, 'Open visit'), + ('btn_open_visit_doc', 'gully', 'form_feature', 'tab_event', NULL, 'Open visit document'), + ('btn_open_visit_event', 'gully', 'form_feature', 'tab_event', NULL, 'Open visit event'), + ('date_event_from', 'gully', 'form_feature', 'tab_event', 'From:', 'From:'), + ('date_event_to', 'gully', 'form_feature', 'tab_event', 'To:', 'To:'), + ('parameter_id', 'gully', 'form_feature', 'tab_event', 'Parameter:', 'Parameter:'), + ('parameter_type', 'gully', 'form_feature', 'tab_event', 'Parameter type:', 'Parameter type:'), + ('btn_accept', 'gully', 'form_feature', 'tab_none', NULL, 'Accept'), + ('btn_apply', 'gully', 'form_feature', 'tab_none', NULL, 'Apply'), + ('btn_cancel', 'gully', 'form_feature', 'tab_none', NULL, 'Cancel'), + ('date_visit_from', 'gully', 'form_feature', 'tab_visit', 'From:', 'From:'), + ('date_visit_to', 'gully', 'form_feature', 'tab_visit', 'To:', 'To:'), + ('open_gallery', 'gully', 'form_feature', 'tab_visit', NULL, 'Open gallery'), + ('visit_class', 'gully', 'form_feature', 'tab_visit', 'Visit class:', 'Visit class:'), + ('adj_type', 'inp_adjustments', 'form_feature', 'tab_none', 'Adj type:', 'Adj type:'), + ('id', 'inp_adjustments', 'form_feature', 'tab_none', 'Id:', 'Id:'), + ('value_1', 'inp_adjustments', 'form_feature', 'tab_none', 'Value 1:', 'Value 1:'), + ('value_10', 'inp_adjustments', 'form_feature', 'tab_none', 'Value 10:', 'Value 10:'), + ('value_11', 'inp_adjustments', 'form_feature', 'tab_none', 'Value 11:', 'Value 11:'), + ('value_12', 'inp_adjustments', 'form_feature', 'tab_none', 'Value 12:', 'Value 12:'), + ('value_2', 'inp_adjustments', 'form_feature', 'tab_none', 'Value 2:', 'Value 2:'), + ('value_3', 'inp_adjustments', 'form_feature', 'tab_none', 'Value 3:', 'Value 3:'), + ('value_4', 'inp_adjustments', 'form_feature', 'tab_none', 'Value 4:', 'Value 4:'), + ('value_5', 'inp_adjustments', 'form_feature', 'tab_none', 'Value 5:', 'Value 5:'), + ('value_6', 'inp_adjustments', 'form_feature', 'tab_none', 'Value 6:', 'Value 6:'), + ('value_7', 'inp_adjustments', 'form_feature', 'tab_none', 'Value 7:', 'Value 7:'), + ('value_8', 'inp_adjustments', 'form_feature', 'tab_none', 'Value 8:', 'Value 8:'), + ('value_9', 'inp_adjustments', 'form_feature', 'tab_none', 'Value 9:', 'Value 9:'), + ('aquif_id', 'inp_aquifer', 'form_feature', 'tab_none', 'Aquif id:', 'Aquif id:'), + ('be', 'inp_aquifer', 'form_feature', 'tab_none', 'Be:', 'Be:'), + ('fc', 'inp_aquifer', 'form_feature', 'tab_none', 'Fc:', 'Fc:'), + ('gwr', 'inp_aquifer', 'form_feature', 'tab_none', 'Gwr:', 'Gwr:'), + ('k', 'inp_aquifer', 'form_feature', 'tab_none', 'K:', 'K:'), + ('ks', 'inp_aquifer', 'form_feature', 'tab_none', 'Ks:', 'Ks:'), + ('led', 'inp_aquifer', 'form_feature', 'tab_none', 'Led:', 'Led:'), + ('pattern_id', 'inp_aquifer', 'form_feature', 'tab_none', 'Pattern id:', 'Pattern id:'), + ('por', 'inp_aquifer', 'form_feature', 'tab_none', 'Por:', 'Por:'), + ('ps', 'inp_aquifer', 'form_feature', 'tab_none', 'Ps:', 'Ps:'), + ('uef', 'inp_aquifer', 'form_feature', 'tab_none', 'Uef:', 'Uef:'), + ('umc', 'inp_aquifer', 'form_feature', 'tab_none', 'Umc:', 'Umc:'), + ('wp', 'inp_aquifer', 'form_feature', 'tab_none', 'Wp:', 'Wp:'), + ('wte', 'inp_aquifer', 'form_feature', 'tab_none', 'Wte:', 'Wte:'), + ('c1', 'inp_buildup_land_x_pol', 'form_feature', 'tab_none', 'C1:', 'C1:'), + ('c2', 'inp_buildup_land_x_pol', 'form_feature', 'tab_none', 'C2:', 'C2:'), + ('c3', 'inp_buildup_land_x_pol', 'form_feature', 'tab_none', 'C3:', 'C3:'), + ('funcb_type', 'inp_buildup_land_x_pol', 'form_feature', 'tab_none', 'Funcb type:', 'Funcb type:'), + ('landus_id', 'inp_buildup_land_x_pol', 'form_feature', 'tab_none', 'Landus id:', 'Landus id:'), + ('perunit', 'inp_buildup_land_x_pol', 'form_feature', 'tab_none', 'Perunit:', 'Perunit:'), + ('poll_id', 'inp_buildup_land_x_pol', 'form_feature', 'tab_none', 'Poll id:', 'Poll id:'), + ('arc_id', 'inp_dscenario_conduit', 'form_feature', 'tab_none', 'Arc id:', 'Arc id:'), + ('arccat_id', 'inp_dscenario_conduit', 'form_feature', 'tab_none', 'Arccat id:', 'Arccat id:'), + ('barrels', 'inp_dscenario_conduit', 'form_feature', 'tab_none', 'Barrels:', 'Barrels:'), + ('culvert', 'inp_dscenario_conduit', 'form_feature', 'tab_none', 'Culvert:', 'Culvert:'), + ('custom_n', 'inp_dscenario_conduit', 'form_feature', 'tab_none', 'Custom n:', 'Custom n:'), + ('dscenario_id', 'inp_dscenario_conduit', 'form_feature', 'tab_none', 'Dscenario id:', 'Dscenario id:'), + ('elev1', 'inp_dscenario_conduit', 'form_feature', 'tab_none', 'Elev1:', 'Elev1:'), + ('elev2', 'inp_dscenario_conduit', 'form_feature', 'tab_none', 'Elev2:', 'Elev2:'), + ('flap', 'inp_dscenario_conduit', 'form_feature', 'tab_none', 'Flap:', 'Flap:'), + ('kavg', 'inp_dscenario_conduit', 'form_feature', 'tab_none', 'Kavg:', 'Kavg:'), + ('kentry', 'inp_dscenario_conduit', 'form_feature', 'tab_none', 'Kentry:', 'Kentry:'), + ('kexit', 'inp_dscenario_conduit', 'form_feature', 'tab_none', 'Kexit:', 'Kexit:'), + ('matcat_id', 'inp_dscenario_conduit', 'form_feature', 'tab_none', 'Matcat id:', 'Matcat id:'), + ('q0', 'inp_dscenario_conduit', 'form_feature', 'tab_none', 'Q0:', 'Q0:'), + ('qmax', 'inp_dscenario_conduit', 'form_feature', 'tab_none', 'Qmax:', 'Qmax:'), + ('seepage', 'inp_dscenario_conduit', 'form_feature', 'tab_none', 'Seepage:', 'Seepage:'), + ('cd', 'inp_dscenario_frorifice', 'form_feature', 'tab_none', 'Cd:', 'Discharge coefficient'), + ('dscenario_id', 'inp_dscenario_frorifice', 'form_feature', 'tab_none', 'Dscenario id:', 'Dscenario id'), + ('element_id', 'inp_dscenario_frorifice', 'form_feature', 'tab_none', 'Element id:', 'Element id'), + ('flap', 'inp_dscenario_frorifice', 'form_feature', 'tab_none', 'Flap:', 'Flap gate'), + ('geom1', 'inp_dscenario_frorifice', 'form_feature', 'tab_none', 'Geom1:', 'Height'), + ('geom2', 'inp_dscenario_frorifice', 'form_feature', 'tab_none', 'Geom2:', 'Width'), + ('geom3', 'inp_dscenario_frorifice', 'form_feature', 'tab_none', 'Geom3:', 'Length'), + ('geom4', 'inp_dscenario_frorifice', 'form_feature', 'tab_none', 'Geom4:', 'Side slope'), + ('offsetval', 'inp_dscenario_frorifice', 'form_feature', 'tab_none', 'Offset:', 'Offset'), + ('orate', 'inp_dscenario_frorifice', 'form_feature', 'tab_none', 'Orate:', 'Opening/closing rate'), + ('orifice_type', 'inp_dscenario_frorifice', 'form_feature', 'tab_none', 'Orifice type:', 'Orifice type'), + ('shape', 'inp_dscenario_frorifice', 'form_feature', 'tab_none', 'Shape:', 'Shape'), + ('cd1', 'inp_dscenario_froutlet', 'form_feature', 'tab_none', 'Cd1:', 'Discharge coefficient 1'), + ('cd2', 'inp_dscenario_froutlet', 'form_feature', 'tab_none', 'Cd2:', 'Discharge coefficient 2'), + ('curve_id', 'inp_dscenario_froutlet', 'form_feature', 'tab_none', 'Curve id:', 'Rating curve'), + ('dscenario_id', 'inp_dscenario_froutlet', 'form_feature', 'tab_none', 'Dscenario id:', 'Dscenario id'), + ('element_id', 'inp_dscenario_froutlet', 'form_feature', 'tab_none', 'Element id:', 'Element id'), + ('flap', 'inp_dscenario_froutlet', 'form_feature', 'tab_none', 'Flap:', 'Flap gate'), + ('offsetval', 'inp_dscenario_froutlet', 'form_feature', 'tab_none', 'Offset:', 'Offset'), + ('outlet_type', 'inp_dscenario_froutlet', 'form_feature', 'tab_none', 'Outlet type:', 'Outlet type'), + ('shutoff', 'inp_dscenario_frpump', 'form_feature', 'tab_none', 'Shutoff:', 'Shutoff'), + ('startup', 'inp_dscenario_frpump', 'form_feature', 'tab_none', 'Startup:', 'Startup'), + ('cd', 'inp_dscenario_frweir', 'form_feature', 'tab_none', 'Cd:', 'Discharge coefficient'), + ('cd2', 'inp_dscenario_frweir', 'form_feature', 'tab_none', 'Cd2:', 'Discharge coefficient 2'), + ('coef_curve', 'inp_dscenario_frweir', 'form_feature', 'tab_none', 'Coef curve:', 'Coefficient curve'), + ('dscenario_id', 'inp_dscenario_frweir', 'form_feature', 'tab_none', 'Dscenario id:', 'Dscenario id'), + ('ec', 'inp_dscenario_frweir', 'form_feature', 'tab_none', 'Ec:', 'End contractions'), + ('element_id', 'inp_dscenario_frweir', 'form_feature', 'tab_none', 'Element id:', 'Element id'), + ('flap', 'inp_dscenario_frweir', 'form_feature', 'tab_none', 'Flap:', 'Flap gate'), + ('geom1', 'inp_dscenario_frweir', 'form_feature', 'tab_none', 'Geom1:', 'Height/Crest height'), + ('geom2', 'inp_dscenario_frweir', 'form_feature', 'tab_none', 'Geom2:', 'Length/Width'), + ('geom3', 'inp_dscenario_frweir', 'form_feature', 'tab_none', 'Geom3:', 'Side slope'), + ('geom4', 'inp_dscenario_frweir', 'form_feature', 'tab_none', 'Geom4:', 'Number of steps'), + ('offsetval', 'inp_dscenario_frweir', 'form_feature', 'tab_none', 'Offset:', 'Offset'), + ('road_surf', 'inp_dscenario_frweir', 'form_feature', 'tab_none', 'Road surface:', 'Road surface'), + ('road_width', 'inp_dscenario_frweir', 'form_feature', 'tab_none', 'Road width:', 'Road width'), + ('surcharge', 'inp_dscenario_frweir', 'form_feature', 'tab_none', 'Surcharge:', 'Surcharge'), + ('weir_type', 'inp_dscenario_frweir', 'form_feature', 'tab_none', 'Weir type:', 'Weir type'), + ('base', 'inp_dscenario_inflows', 'form_feature', 'tab_none', 'Base:', 'Base:'), + ('dscenario_id', 'inp_dscenario_inflows', 'form_feature', 'tab_none', 'Dscenario id:', 'Dscenario id:'), + ('node_id', 'inp_dscenario_inflows', 'form_feature', 'tab_none', 'Node id:', 'Node id:'), + ('order_id', 'inp_dscenario_inflows', 'form_feature', 'tab_none', 'Order id:', 'Order id:'), + ('pattern_id', 'inp_dscenario_inflows', 'form_feature', 'tab_none', 'Pattern id:', 'Pattern id:'), + ('sfactor', 'inp_dscenario_inflows', 'form_feature', 'tab_none', 'Sfactor:', 'Sfactor:'), + ('timser_id', 'inp_dscenario_inflows', 'form_feature', 'tab_none', 'Timser id:', 'Timser id:'), + ('base', 'inp_dscenario_inflows_poll', 'form_feature', 'tab_none', 'Base:', 'Base:'), + ('dscenario_id', 'inp_dscenario_inflows_poll', 'form_feature', 'tab_none', 'Dscenario id:', 'Dscenario id:'), + ('form_type', 'inp_dscenario_inflows_poll', 'form_feature', 'tab_none', 'Form type:', 'Form type:'), + ('mfactor', 'inp_dscenario_inflows_poll', 'form_feature', 'tab_none', 'Mfactor:', 'Mfactor:'), + ('node_id', 'inp_dscenario_inflows_poll', 'form_feature', 'tab_none', 'Node id:', 'Node id:'), + ('pattern_id', 'inp_dscenario_inflows_poll', 'form_feature', 'tab_none', 'Pattern id:', 'Pattern id:'), + ('poll_id', 'inp_dscenario_inflows_poll', 'form_feature', 'tab_none', 'Poll id:', 'Poll id:'), + ('sfactor', 'inp_dscenario_inflows_poll', 'form_feature', 'tab_none', 'Sfactor:', 'Sfactor:'), + ('timser_id', 'inp_dscenario_inflows_poll', 'form_feature', 'tab_none', 'Timser id:', 'Timser id:'), + ('apond', 'inp_dscenario_inlet', 'form_feature', 'tab_epa', 'Apond:', 'Apond:'), + ('cd1', 'inp_dscenario_inlet', 'form_feature', 'tab_epa', 'Cd1:', 'Cd1:'), + ('cd2', 'inp_dscenario_inlet', 'form_feature', 'tab_epa', 'Cd2:', 'Cd2:'), + ('custom_depth', 'inp_dscenario_inlet', 'form_feature', 'tab_epa', 'Custom depth:', 'Custom depth:'), + ('custom_top_elev', 'inp_dscenario_inlet', 'form_feature', 'tab_epa', 'Custom top elev:', 'Custom top elev:'), + ('efficiency', 'inp_dscenario_inlet', 'form_feature', 'tab_epa', 'Efficiency:', 'Efficiency:'), + ('gully_method', 'inp_dscenario_inlet', 'form_feature', 'tab_epa', 'Gully method:', 'Gully method:'), + ('inlet_length', 'inp_dscenario_inlet', 'form_feature', 'tab_epa', 'Inlet length:', 'Inlet length:'), + ('inlet_type', 'inp_dscenario_inlet', 'form_feature', 'tab_epa', 'Inlet type:', 'Inlet type:'), + ('inlet_width', 'inp_dscenario_inlet', 'form_feature', 'tab_epa', 'Inlet width:', 'Inlet width:'), + ('outlet_type', 'inp_dscenario_inlet', 'form_feature', 'tab_epa', 'Outlet type:', 'Outlet type:'), + ('y0', 'inp_dscenario_inlet', 'form_feature', 'tab_epa', 'Y0:', 'Y0:'), + ('ysur', 'inp_dscenario_inlet', 'form_feature', 'tab_epa', 'Ysur:', 'Ysur:'), + ('dscenario_id', 'inp_dscenario_inlet', 'form_feature', 'tab_none', 'Dscenario Id:', 'Dscenario Id'), + ('node_id', 'inp_dscenario_inlet', 'form_feature', 'tab_none', 'Node id:', 'Node id:'), + ('apond', 'inp_dscenario_junction', 'form_feature', 'tab_none', 'Apond:', 'Apond:'), + ('elev', 'inp_dscenario_junction', 'form_feature', 'tab_none', 'Elev:', 'Elev:'), + ('outfallparam', 'inp_dscenario_junction', 'form_feature', 'tab_none', 'Outfallparam:', 'Outfallparam:'), + ('y0', 'inp_dscenario_junction', 'form_feature', 'tab_none', 'Y0:', 'Y0:'), + ('ymax', 'inp_dscenario_junction', 'form_feature', 'tab_none', 'Ymax:', 'Ymax:'), + ('ysur', 'inp_dscenario_junction', 'form_feature', 'tab_none', 'Ysur:', 'Ysur:'), + ('area', 'inp_dscenario_lid_usage', 'form_feature', 'tab_none', 'Area:', 'Area:'), + ('descript', 'inp_dscenario_lid_usage', 'form_feature', 'tab_none', 'Descript:', 'Descript:'), + ('dscenario_id', 'inp_dscenario_lid_usage', 'form_feature', 'tab_none', 'Dscenario id:', 'Dscenario id:'), + ('fromimp', 'inp_dscenario_lid_usage', 'form_feature', 'tab_none', 'Fromimp:', 'Fromimp:'), + ('hydrology_id', 'inp_dscenario_lid_usage', 'form_feature', 'tab_none', 'Hydrology id:', 'Hydrology id:'), + ('initsat', 'inp_dscenario_lid_usage', 'form_feature', 'tab_none', 'Initsat:', 'Initsat:'), + ('lidco_id', 'inp_dscenario_lid_usage', 'form_feature', 'tab_none', 'Lidco id:', 'Lidco id:'), + ('numelem', 'inp_dscenario_lid_usage', 'form_feature', 'tab_none', 'Numelem:', 'Numelem:'), + ('rptfile', 'inp_dscenario_lid_usage', 'form_feature', 'tab_none', 'Rptfile:', 'Rptfile:'), + ('subc_id', 'inp_dscenario_lid_usage', 'form_feature', 'tab_none', 'Subc id:', 'Subc id:'), + ('toperv', 'inp_dscenario_lid_usage', 'form_feature', 'tab_none', 'Toperv:', 'Toperv:'), + ('width', 'inp_dscenario_lid_usage', 'form_feature', 'tab_none', 'Width:', 'Width:'), + ('curve_id', 'inp_dscenario_outfall', 'form_feature', 'tab_none', 'Curve id:', 'Curve id:'), + ('dscenario_id', 'inp_dscenario_outfall', 'form_feature', 'tab_none', 'Dscenario id:', 'Dscenario id:'), + ('elev', 'inp_dscenario_outfall', 'form_feature', 'tab_none', 'Elev:', 'Elev:'), + ('gate', 'inp_dscenario_outfall', 'form_feature', 'tab_none', 'Gate:', 'Gate:'), + ('node_id', 'inp_dscenario_outfall', 'form_feature', 'tab_none', 'Node id:', 'Node id:'), + ('outfall_type', 'inp_dscenario_outfall', 'form_feature', 'tab_none', 'Outfall type:', 'Outfall type:'), + ('stage', 'inp_dscenario_outfall', 'form_feature', 'tab_none', 'Stage:', 'Stage:'), + ('timser_id', 'inp_dscenario_outfall', 'form_feature', 'tab_none', 'Timser id:', 'Timser id:'), + ('ymax', 'inp_dscenario_outfall', 'form_feature', 'tab_none', 'Ymax:', 'Ymax:'), + ('dscenario_id', 'inp_dscenario_raingage', 'form_feature', 'tab_none', 'Dscenario id:', 'Dscenario id:'), + ('fname', 'inp_dscenario_raingage', 'form_feature', 'tab_none', 'Fname:', 'Fname:'), + ('form_type', 'inp_dscenario_raingage', 'form_feature', 'tab_none', 'Form type:', 'Form type:'), + ('intvl', 'inp_dscenario_raingage', 'form_feature', 'tab_none', 'Intvl:', 'Intvl:'), + ('rg_id', 'inp_dscenario_raingage', 'form_feature', 'tab_none', 'Rg id:', 'Rg id:'), + ('rgage_type', 'inp_dscenario_raingage', 'form_feature', 'tab_none', 'Rgage type:', 'Rgage type:'), + ('scf', 'inp_dscenario_raingage', 'form_feature', 'tab_none', 'Scf:', 'Scf:'), + ('sta', 'inp_dscenario_raingage', 'form_feature', 'tab_none', 'Sta:', 'Sta:'), + ('timser_id', 'inp_dscenario_raingage', 'form_feature', 'tab_none', 'Timser id:', 'Timser id:'), + ('units', 'inp_dscenario_raingage', 'form_feature', 'tab_none', 'Units:', 'Units:'), + ('a0', 'inp_dscenario_storage', 'form_feature', 'tab_none', 'A0:', 'A0:'), + ('a1', 'inp_dscenario_storage', 'form_feature', 'tab_none', 'A1:', 'A1:'), + ('a2', 'inp_dscenario_storage', 'form_feature', 'tab_none', 'A2:', 'A2:'), + ('apond', 'inp_dscenario_storage', 'form_feature', 'tab_none', 'Apond:', 'Apond:'), + ('curve_id', 'inp_dscenario_storage', 'form_feature', 'tab_none', 'Curve id:', 'Curve id:'), + ('dscenario_id', 'inp_dscenario_storage', 'form_feature', 'tab_none', 'Dscenario id:', 'Dscenario id:'), + ('elev', 'inp_dscenario_storage', 'form_feature', 'tab_none', 'Elev:', 'Elev:'), + ('fevap', 'inp_dscenario_storage', 'form_feature', 'tab_none', 'Fevap:', 'Fevap:'), + ('hc', 'inp_dscenario_storage', 'form_feature', 'tab_none', 'Hc:', 'Hc:'), + ('imd', 'inp_dscenario_storage', 'form_feature', 'tab_none', 'Imd:', 'Imd:'), + ('node_id', 'inp_dscenario_storage', 'form_feature', 'tab_none', 'Node id:', 'Node id:'), + ('sh', 'inp_dscenario_storage', 'form_feature', 'tab_none', 'Sh:', 'Sh:'), + ('storage_type', 'inp_dscenario_storage', 'form_feature', 'tab_none', 'Storage type:', 'Storage type:'), + ('y0', 'inp_dscenario_storage', 'form_feature', 'tab_none', 'Y0:', 'Y0:'), + ('ymax', 'inp_dscenario_storage', 'form_feature', 'tab_none', 'Ymax:', 'Ymax:'), + ('ysur', 'inp_dscenario_storage', 'form_feature', 'tab_none', 'Ysur:', 'Ysur:'), + ('dscenario_id', 'inp_dscenario_treatment', 'form_feature', 'tab_none', 'Dscenario id:', 'Dscenario id:'), + ('function', 'inp_dscenario_treatment', 'form_feature', 'tab_none', 'Function:', 'Function:'), + ('node_id', 'inp_dscenario_treatment', 'form_feature', 'tab_none', 'Node id:', 'Node id:'), + ('poll_id', 'inp_dscenario_treatment', 'form_feature', 'tab_none', 'Poll id:', 'Poll id:'), + ('dwfscenario_id', 'inp_dwf', 'form_feature', 'tab_none', 'Dwfscenario id:', 'Dwfscenario id:'), + ('id', 'inp_dwf', 'form_feature', 'tab_none', 'Id:', 'Id:'), + ('node_id', 'inp_dwf', 'form_feature', 'tab_none', 'Node id:', 'Node id:'), + ('pat1', 'inp_dwf', 'form_feature', 'tab_none', 'Pat1:', 'Pat1:'), + ('pat2', 'inp_dwf', 'form_feature', 'tab_none', 'Pat2:', 'Pat2:'), + ('pat3', 'inp_dwf', 'form_feature', 'tab_none', 'Pat3:', 'Pat3:'), + ('pat4', 'inp_dwf', 'form_feature', 'tab_none', 'Pat4:', 'Pat4:'), + ('value', 'inp_dwf', 'form_feature', 'tab_none', 'Value:', 'Value:'), + ('dwfscenario_id', 'inp_dwf_pol_x_node', 'form_feature', 'tab_none', 'Dwfscenario id:', 'Dwfscenario id:'), + ('node_id', 'inp_dwf_pol_x_node', 'form_feature', 'tab_none', 'Node id:', 'Node id:'), + ('pat1', 'inp_dwf_pol_x_node', 'form_feature', 'tab_none', 'Pat1:', 'Pat1:'), + ('pat2', 'inp_dwf_pol_x_node', 'form_feature', 'tab_none', 'Pat2:', 'Pat2:'), + ('pat3', 'inp_dwf_pol_x_node', 'form_feature', 'tab_none', 'Pat3:', 'Pat3:'), + ('pat4', 'inp_dwf_pol_x_node', 'form_feature', 'tab_none', 'Pat4:', 'Pat4:'), + ('poll_id', 'inp_dwf_pol_x_node', 'form_feature', 'tab_none', 'Poll id:', 'Poll id:'), + ('value', 'inp_dwf_pol_x_node', 'form_feature', 'tab_none', 'Value:', 'Value:'), + ('evap_type', 'inp_evaporation', 'form_feature', 'tab_none', 'Evap type:', 'Evap type:'), + ('value', 'inp_evaporation', 'form_feature', 'tab_none', 'Value:', 'Value:'), + ('actio_type', 'inp_files', 'form_feature', 'tab_none', 'Actio type:', 'Actio type:'), + ('file_type', 'inp_files', 'form_feature', 'tab_none', 'File type:', 'File type:'), + ('fname', 'inp_files', 'form_feature', 'tab_none', 'Fname:', 'Fname:'), + ('id', 'inp_files', 'form_feature', 'tab_none', 'Id:', 'Id:'), + ('cd', 'inp_flwreg_orifice', 'form_feature', 'tab_none', 'Cd:', 'Cd:'), + ('close_time', 'inp_flwreg_orifice', 'form_feature', 'tab_none', 'Close time:', 'Close time:'), + ('flap', 'inp_flwreg_orifice', 'form_feature', 'tab_none', 'Flap:', 'Flap:'), + ('flwreg_id', 'inp_flwreg_orifice', 'form_feature', 'tab_none', 'Flwreg id:', 'Flwreg id:'), + ('flwreg_length', 'inp_flwreg_orifice', 'form_feature', 'tab_none', 'Flwreg length:', 'Flwreg length:'), + ('geom1', 'inp_flwreg_orifice', 'form_feature', 'tab_none', 'Geom1:', 'Geom1:'), + ('geom2', 'inp_flwreg_orifice', 'form_feature', 'tab_none', 'Geom2:', 'Geom2:'), + ('geom3', 'inp_flwreg_orifice', 'form_feature', 'tab_none', 'Geom3:', 'Geom3:'), + ('geom4', 'inp_flwreg_orifice', 'form_feature', 'tab_none', 'Geom4:', 'Geom4:'), + ('id', 'inp_flwreg_orifice', 'form_feature', 'tab_none', 'Id:', 'Id:'), + ('node_id', 'inp_flwreg_orifice', 'form_feature', 'tab_none', 'Node id:', 'Node id:'), + ('offsetval', 'inp_flwreg_orifice', 'form_feature', 'tab_none', 'Offset:', 'Offset:'), + ('orate', 'inp_flwreg_orifice', 'form_feature', 'tab_none', 'Orate:', 'Orate:'), + ('ori_type', 'inp_flwreg_orifice', 'form_feature', 'tab_none', 'Ori type:', 'Ori type:'), + ('shape', 'inp_flwreg_orifice', 'form_feature', 'tab_none', 'Shape:', 'Shape:'), + ('to_arc', 'inp_flwreg_orifice', 'form_feature', 'tab_none', 'To arc:', 'To arc:'), + ('cd1', 'inp_flwreg_outlet', 'form_feature', 'tab_none', 'Cd1:', 'Cd1:'), + ('cd2', 'inp_flwreg_outlet', 'form_feature', 'tab_none', 'Cd2:', 'Cd2:'), + ('curve_id', 'inp_flwreg_outlet', 'form_feature', 'tab_none', 'Curve id:', 'Curve id:'), + ('flap', 'inp_flwreg_outlet', 'form_feature', 'tab_none', 'Flap:', 'Flap:'), + ('flwreg_id', 'inp_flwreg_outlet', 'form_feature', 'tab_none', 'Flwreg id:', 'Flwreg id:'), + ('flwreg_length', 'inp_flwreg_outlet', 'form_feature', 'tab_none', 'Flwreg length:', 'Flwreg length:'), + ('id', 'inp_flwreg_outlet', 'form_feature', 'tab_none', 'Id:', 'Id:'), + ('node_id', 'inp_flwreg_outlet', 'form_feature', 'tab_none', 'Node id:', 'Node id:'), + ('offsetval', 'inp_flwreg_outlet', 'form_feature', 'tab_none', 'Offset:', 'Offset:'), + ('order_id', 'inp_flwreg_outlet', 'form_feature', 'tab_none', 'Order id:', 'Order id:'), + ('outlet_type', 'inp_flwreg_outlet', 'form_feature', 'tab_none', 'Outlet type:', 'Outlet type:'), + ('to_arc', 'inp_flwreg_outlet', 'form_feature', 'tab_none', 'To arc:', 'To arc:'), + ('curve_id', 'inp_flwreg_pump', 'form_feature', 'tab_none', 'Curve id:', 'Curve id:'), + ('flwreg_id', 'inp_flwreg_pump', 'form_feature', 'tab_none', 'Flwreg id:', 'Flwreg id:'), + ('flwreg_length', 'inp_flwreg_pump', 'form_feature', 'tab_none', 'Flwreg length:', 'Flwreg length:'), + ('id', 'inp_flwreg_pump', 'form_feature', 'tab_none', 'Id:', 'Id:'), + ('node_id', 'inp_flwreg_pump', 'form_feature', 'tab_none', 'Node id:', 'Node id:'), + ('order_id', 'inp_flwreg_pump', 'form_feature', 'tab_none', 'Order id:', 'Order id:'), + ('shutoff', 'inp_flwreg_pump', 'form_feature', 'tab_none', 'Shutoff:', 'Shutoff:'), + ('startup', 'inp_flwreg_pump', 'form_feature', 'tab_none', 'Startup:', 'Startup:'), + ('status', 'inp_flwreg_pump', 'form_feature', 'tab_none', 'Status:', 'Status:'), + ('to_arc', 'inp_flwreg_pump', 'form_feature', 'tab_none', 'To arc:', 'To arc:'), + ('cd', 'inp_flwreg_weir', 'form_feature', 'tab_none', 'Cd:', 'Cd:'), + ('cd2', 'inp_flwreg_weir', 'form_feature', 'tab_none', 'Cd2:', 'Cd2:'), + ('coef_curve', 'inp_flwreg_weir', 'form_feature', 'tab_none', 'Coef curve:', 'Coef curve:'), + ('ec', 'inp_flwreg_weir', 'form_feature', 'tab_none', 'Ec:', 'Ec:'), + ('flap', 'inp_flwreg_weir', 'form_feature', 'tab_none', 'Flap:', 'Flap:'), + ('flwreg_id', 'inp_flwreg_weir', 'form_feature', 'tab_none', 'Flwreg id:', 'Flwreg id:'), + ('flwreg_length', 'inp_flwreg_weir', 'form_feature', 'tab_none', 'Flwreg length:', 'Flwreg length:'), + ('geom1', 'inp_flwreg_weir', 'form_feature', 'tab_none', 'Geom1:', 'Geom1:'), + ('geom2', 'inp_flwreg_weir', 'form_feature', 'tab_none', 'Geom2:', 'Geom2:'), + ('geom3', 'inp_flwreg_weir', 'form_feature', 'tab_none', 'Geom3:', 'Geom3:'), + ('geom4', 'inp_flwreg_weir', 'form_feature', 'tab_none', 'Geom4:', 'Geom4:'), + ('id', 'inp_flwreg_weir', 'form_feature', 'tab_none', 'Id:', 'Id:'), + ('node_id', 'inp_flwreg_weir', 'form_feature', 'tab_none', 'Node id:', 'Node id:'), + ('offsetval', 'inp_flwreg_weir', 'form_feature', 'tab_none', 'Offset:', 'Offset:'), + ('order_id', 'inp_flwreg_weir', 'form_feature', 'tab_none', 'Order id:', 'Order id:'), + ('road_surf', 'inp_flwreg_weir', 'form_feature', 'tab_none', 'Road surf:', 'Road surf:'), + ('road_width', 'inp_flwreg_weir', 'form_feature', 'tab_none', 'Road width:', 'Road width:'), + ('surcharge', 'inp_flwreg_weir', 'form_feature', 'tab_none', 'Surcharge:', 'Surcharge:'), + ('to_arc', 'inp_flwreg_weir', 'form_feature', 'tab_none', 'To arc:', 'To arc:'), + ('weir_type', 'inp_flwreg_weir', 'form_feature', 'tab_none', 'Weir type:', 'Weir type:'), + ('a1', 'inp_groundwater', 'form_feature', 'tab_none', 'A1:', 'A1:'), + ('a2', 'inp_groundwater', 'form_feature', 'tab_none', 'A2:', 'A2:'), + ('a3', 'inp_groundwater', 'form_feature', 'tab_none', 'A3:', 'A3:'), + ('aquif_id', 'inp_groundwater', 'form_feature', 'tab_none', 'Aquif id:', 'Aquif id:'), + ('b1', 'inp_groundwater', 'form_feature', 'tab_none', 'B1:', 'B1:'), + ('b2', 'inp_groundwater', 'form_feature', 'tab_none', 'B2:', 'B2:'), + ('fl_eq_deep', 'inp_groundwater', 'form_feature', 'tab_none', 'Fl eq deep:', 'Fl eq deep:'), + ('fl_eq_lat', 'inp_groundwater', 'form_feature', 'tab_none', 'Fl eq lat:', 'Fl eq lat:'), + ('h', 'inp_groundwater', 'form_feature', 'tab_none', 'H:', 'H:'), + ('node_id', 'inp_groundwater', 'form_feature', 'tab_none', 'Node id:', 'Node id:'), + ('subc_id', 'inp_groundwater', 'form_feature', 'tab_none', 'Subc id:', 'Subc id:'), + ('surfel', 'inp_groundwater', 'form_feature', 'tab_none', 'Surfel:', 'Surfel:'), + ('tw', 'inp_groundwater', 'form_feature', 'tab_none', 'Tw:', 'Tw:'), + ('id', 'inp_hydrograph', 'form_feature', 'tab_none', 'Id:', 'Id:'), + ('text', 'inp_hydrograph', 'form_feature', 'tab_none', 'Text:', 'Text:'), + ('base', 'inp_inflows', 'form_feature', 'tab_none', 'Base:', 'Base:'), + ('format_type', 'inp_inflows', 'form_feature', 'tab_none', 'Format type:', 'Format type:'), + ('id', 'inp_inflows', 'form_feature', 'tab_none', 'Id:', 'Id:'), + ('mfactor', 'inp_inflows', 'form_feature', 'tab_none', 'Mfactor:', 'Mfactor:'), + ('node_id', 'inp_inflows', 'form_feature', 'tab_none', 'Node id:', 'Node id:'), + ('order_id', 'inp_inflows', 'form_feature', 'tab_none', 'Order id:', 'Order id:'), + ('pattern_id', 'inp_inflows', 'form_feature', 'tab_none', 'Pattern id:', 'Pattern id:'), + ('sfactor', 'inp_inflows', 'form_feature', 'tab_none', 'Sfactor:', 'Sfactor:'), + ('timser_id', 'inp_inflows', 'form_feature', 'tab_none', 'Timser id:', 'Timser id:'), + ('availab', 'inp_landuses', 'form_feature', 'tab_none', 'Availab:', 'Availab:'), + ('landus_id', 'inp_landuses', 'form_feature', 'tab_none', 'Landus id:', 'Landus id:'), + ('lastsweep', 'inp_landuses', 'form_feature', 'tab_none', 'Lastsweep:', 'Lastsweep:'), + ('sweepint', 'inp_landuses', 'form_feature', 'tab_none', 'Sweepint:', 'Sweepint:'), + ('active', 'inp_lid', 'form_feature', 'tab_none', 'Active:', 'Active:'), + ('lidco_id', 'inp_lid', 'form_feature', 'tab_none', 'Lidco id:', 'Lidco id:'), + ('lidco_type', 'inp_lid', 'form_feature', 'tab_none', 'Lidco type:', 'Lidco type:'), + ('id', 'inp_lid_value', 'form_feature', 'tab_none', 'Id:', 'Id:'), + ('lidco_id', 'inp_lid_value', 'form_feature', 'tab_none', 'Lidco id:', 'Lidco id:'), + ('lidlayer', 'inp_lid_value', 'form_feature', 'tab_none', 'Lidlayer:', 'Lidlayer:'), + ('value_2', 'inp_lid_value', 'form_feature', 'tab_none', 'Value 2:', 'Value 2:'), + ('value_3', 'inp_lid_value', 'form_feature', 'tab_none', 'Value 3:', 'Value 3:'), + ('value_4', 'inp_lid_value', 'form_feature', 'tab_none', 'Value 4:', 'Value 4:'), + ('value_5', 'inp_lid_value', 'form_feature', 'tab_none', 'Value 5:', 'Value 5:'), + ('value_6', 'inp_lid_value', 'form_feature', 'tab_none', 'Value 6:', 'Value 6:'), + ('value_7', 'inp_lid_value', 'form_feature', 'tab_none', 'Value 7:', 'Value 7:'), + ('value_8', 'inp_lid_value', 'form_feature', 'tab_none', 'Value 8:', 'Value 8:'), + ('ibuildup', 'inp_loadings_pol_x_subc', 'form_feature', 'tab_none', 'Ibuildup:', 'Ibuildup:'), + ('poll_id', 'inp_loadings_pol_x_subc', 'form_feature', 'tab_none', 'Poll id:', 'Poll id:'), + ('subc_id', 'inp_loadings_pol_x_subc', 'form_feature', 'tab_none', 'Subc id:', 'Subc id:'), + ('log', 'inp_pattern', 'form_feature', 'tab_none', 'Log:', 'Log:'), + ('pattern_type', 'inp_pattern', 'form_feature', 'tab_none', 'Pattern type:', 'Pattern type:'), + ('factor_19', 'inp_pattern_value', 'form_feature', 'tab_none', 'Factor 19:', 'Factor 19:'), + ('factor_20', 'inp_pattern_value', 'form_feature', 'tab_none', 'Factor 20:', 'Factor 20:'), + ('factor_21', 'inp_pattern_value', 'form_feature', 'tab_none', 'Factor 21:', 'Factor 21:'), + ('factor_22', 'inp_pattern_value', 'form_feature', 'tab_none', 'Factor 22:', 'Factor 22:'), + ('factor_23', 'inp_pattern_value', 'form_feature', 'tab_none', 'Factor 23:', 'Factor 23:'), + ('factor_24', 'inp_pattern_value', 'form_feature', 'tab_none', 'Factor 24:', 'Factor 24:'), + ('cdwf', 'inp_pollutant', 'form_feature', 'tab_none', 'Cdwf:', 'Cdwf:'), + ('cgw', 'inp_pollutant', 'form_feature', 'tab_none', 'Cgw:', 'Cgw:'), + ('cii', 'inp_pollutant', 'form_feature', 'tab_none', 'Cii:', 'Cii:'), + ('cinit', 'inp_pollutant', 'form_feature', 'tab_none', 'Cinit:', 'Cinit:'), + ('cofract', 'inp_pollutant', 'form_feature', 'tab_none', 'Cofract:', 'Cofract:'), + ('copoll_id', 'inp_pollutant', 'form_feature', 'tab_none', 'Copoll id:', 'Copoll id:'), + ('crain', 'inp_pollutant', 'form_feature', 'tab_none', 'Crain:', 'Crain:'), + ('kd', 'inp_pollutant', 'form_feature', 'tab_none', 'Kd:', 'Kd:'), + ('poll_id', 'inp_pollutant', 'form_feature', 'tab_none', 'Poll id:', 'Poll id:'), + ('sflag', 'inp_pollutant', 'form_feature', 'tab_none', 'Sflag:', 'Sflag:'), + ('units_type', 'inp_pollutant', 'form_feature', 'tab_none', 'Units type:', 'Units type:'), + ('hydro_id', 'inp_rdii', 'form_feature', 'tab_none', 'Hydro id:', 'Hydro id:'), + ('node_id', 'inp_rdii', 'form_feature', 'tab_none', 'Node id:', 'Node id:'), + ('sewerarea', 'inp_rdii', 'form_feature', 'tab_none', 'Sewerarea:', 'Sewerarea:'), + ('atiwt', 'inp_snowmelt', 'form_feature', 'tab_none', 'Atiwt:', 'Atiwt:'), + ('dtlong', 'inp_snowmelt', 'form_feature', 'tab_none', 'Dtlong:', 'Dtlong:'), + ('elev', 'inp_snowmelt', 'form_feature', 'tab_none', 'Elev:', 'Elev:'), + ('i_f0', 'inp_snowmelt', 'form_feature', 'tab_none', 'I f0:', 'I f0:'), + ('i_f1', 'inp_snowmelt', 'form_feature', 'tab_none', 'I f1:', 'I f1:'), + ('i_f2', 'inp_snowmelt', 'form_feature', 'tab_none', 'I f2:', 'I f2:'), + ('i_f3', 'inp_snowmelt', 'form_feature', 'tab_none', 'I f3:', 'I f3:'), + ('i_f4', 'inp_snowmelt', 'form_feature', 'tab_none', 'I f4:', 'I f4:'), + ('i_f5', 'inp_snowmelt', 'form_feature', 'tab_none', 'I f5:', 'I f5:'), + ('i_f6', 'inp_snowmelt', 'form_feature', 'tab_none', 'I f6:', 'I f6:'), + ('i_f7', 'inp_snowmelt', 'form_feature', 'tab_none', 'I f7:', 'I f7:'), + ('i_f8', 'inp_snowmelt', 'form_feature', 'tab_none', 'I f8:', 'I f8:'), + ('i_f9', 'inp_snowmelt', 'form_feature', 'tab_none', 'I f9:', 'I f9:'), + ('lat', 'inp_snowmelt', 'form_feature', 'tab_none', 'Lat:', 'Lat:'), + ('p_f0', 'inp_snowmelt', 'form_feature', 'tab_none', 'P f0:', 'P f0:'), + ('p_f1', 'inp_snowmelt', 'form_feature', 'tab_none', 'P f1:', 'P f1:'), + ('p_f2', 'inp_snowmelt', 'form_feature', 'tab_none', 'P f2:', 'P f2:'), + ('p_f3', 'inp_snowmelt', 'form_feature', 'tab_none', 'P f3:', 'P f3:'), + ('p_f4', 'inp_snowmelt', 'form_feature', 'tab_none', 'P f4:', 'P f4:'), + ('p_f5', 'inp_snowmelt', 'form_feature', 'tab_none', 'P f5:', 'P f5:'), + ('p_f6', 'inp_snowmelt', 'form_feature', 'tab_none', 'P f6:', 'P f6:'), + ('p_f7', 'inp_snowmelt', 'form_feature', 'tab_none', 'P f7:', 'P f7:'), + ('p_f8', 'inp_snowmelt', 'form_feature', 'tab_none', 'P f8:', 'P f8:'), + ('p_f9', 'inp_snowmelt', 'form_feature', 'tab_none', 'P f9:', 'P f9:'), + ('rnm', 'inp_snowmelt', 'form_feature', 'tab_none', 'Rnm:', 'Rnm:'), + ('stemp', 'inp_snowmelt', 'form_feature', 'tab_none', 'Stemp:', 'Stemp:'), + ('id', 'inp_snowpack', 'form_feature', 'tab_none', 'Id:', 'Id:'), + ('snow_id', 'inp_snowpack', 'form_feature', 'tab_none', 'Snow id:', 'Snow id:'), + ('snow_type', 'inp_snowpack', 'form_feature', 'tab_none', 'Snow type:', 'Snow type:'), + ('value_1', 'inp_snowpack', 'form_feature', 'tab_none', 'Value 1:', 'Value 1:'), + ('value_2', 'inp_snowpack', 'form_feature', 'tab_none', 'Value 2:', 'Value 2:'), + ('value_3', 'inp_snowpack', 'form_feature', 'tab_none', 'Value 3:', 'Value 3:'), + ('value_4', 'inp_snowpack', 'form_feature', 'tab_none', 'Value 4:', 'Value 4:'), + ('value_5', 'inp_snowpack', 'form_feature', 'tab_none', 'Value 5:', 'Value 5:'), + ('value_6', 'inp_snowpack', 'form_feature', 'tab_none', 'Value 6:', 'Value 6:'), + ('value_7', 'inp_snowpack', 'form_feature', 'tab_none', 'Value 7:', 'Value 7:'), + ('id', 'inp_temperature', 'form_feature', 'tab_none', 'Id:', 'Id:'), + ('temp_type', 'inp_temperature', 'form_feature', 'tab_none', 'Temp type:', 'Temp type:'), + ('value', 'inp_temperature', 'form_feature', 'tab_none', 'Value:', 'Value:'), + ('descript', 'inp_timeseries', 'form_feature', 'tab_none', 'Descript:', 'Descript:'), + ('expl_id', 'inp_timeseries', 'form_feature', 'tab_none', 'Expl id:', 'Expl id:'), + ('fname', 'inp_timeseries', 'form_feature', 'tab_none', 'Fname:', 'Fname:'), + ('id', 'inp_timeseries', 'form_feature', 'tab_none', 'Id:', 'Id:'), + ('idval', 'inp_timeseries', 'form_feature', 'tab_none', 'Idval:', 'Idval:'), + ('log', 'inp_timeseries', 'form_feature', 'tab_none', 'Log:', 'Log:'), + ('times_type', 'inp_timeseries', 'form_feature', 'tab_none', 'Times type:', 'Times type:'), + ('timser_type', 'inp_timeseries', 'form_feature', 'tab_none', 'Timser type:', 'Timser type:'), + ('date', 'inp_timeseries_value', 'form_feature', 'tab_none', 'Date:', 'Date:'), + ('hour', 'inp_timeseries_value', 'form_feature', 'tab_none', 'Hour:', 'Hour:'), + ('id', 'inp_timeseries_value', 'form_feature', 'tab_none', 'Id:', 'Id:'), + ('time', 'inp_timeseries_value', 'form_feature', 'tab_none', 'Time:', 'Time:'), + ('timser_id', 'inp_timeseries_value', 'form_feature', 'tab_none', 'Timser id:', 'Timser id:'), + ('value', 'inp_timeseries_value', 'form_feature', 'tab_none', 'Value:', 'Value:'), + ('id', 'inp_transects_value', 'form_feature', 'tab_none', 'Id:', 'Id:'), + ('text', 'inp_transects_value', 'form_feature', 'tab_none', 'Text:', 'Text:'), + ('tsect_id', 'inp_transects_value', 'form_feature', 'tab_none', 'Tsect id:', 'Tsect id:'), + ('function', 'inp_treatment_node_x_pol', 'form_feature', 'tab_none', 'Function:', 'Function:'), + ('node_id', 'inp_treatment_node_x_pol', 'form_feature', 'tab_none', 'Node id:', 'Node id:'), + ('poll_id', 'inp_treatment_node_x_pol', 'form_feature', 'tab_none', 'Poll id:', 'Poll id:'), + ('bmpeffic', 'inp_washoff_land_x_pol', 'form_feature', 'tab_none', 'Bmpeffic:', 'Bmpeffic:'), + ('c1', 'inp_washoff_land_x_pol', 'form_feature', 'tab_none', 'C1:', 'C1:'), + ('c2', 'inp_washoff_land_x_pol', 'form_feature', 'tab_none', 'C2:', 'C2:'), + ('funcw_type', 'inp_washoff_land_x_pol', 'form_feature', 'tab_none', 'Funcw type:', 'Funcw type:'), + ('landus_id', 'inp_washoff_land_x_pol', 'form_feature', 'tab_none', 'Landus id:', 'Landus id:'), + ('poll_id', 'inp_washoff_land_x_pol', 'form_feature', 'tab_none', 'Poll id:', 'Poll id:'), + ('sweepeffic', 'inp_washoff_land_x_pol', 'form_feature', 'tab_none', 'Sweepeffic:', 'Sweepeffic:'), + ('wind_type', 'inp_windspeed', 'form_feature', 'tab_none', 'Wind type:', 'Wind type:'), + ('tbl_downstream', 'node', 'form_feature', 'tab_connections', 'Downstream features:', 'Downstream features:'), + ('tbl_upstream', 'node', 'form_feature', 'tab_connections', 'Upstream features:', 'Upstream features:'), + ('scale', 'print', 'form_print', 'tab_none', 'Escale:', 'Escale:'), + ('geom1', 'upsert_catalog_arc', 'form_catalog', 'tab_none', 'Geom1:', 'Geom1:'), + ('shape', 'upsert_catalog_arc', 'form_catalog', 'tab_none', 'Shape:', 'Shape:'), + ('geom1', 'upsert_catalog_connec', 'form_catalog', 'tab_none', 'Geom1:', 'Geom1:'), + ('shape', 'upsert_catalog_connec', 'form_catalog', 'tab_none', 'Shape:', 'Shape:'), + ('id', 'upsert_catalog_gully', 'form_catalog', 'tab_none', 'Id:', 'Id:'), + ('matcat_id', 'upsert_catalog_gully', 'form_catalog', 'tab_none', 'Material:', 'Material:'), + ('geom1', 'upsert_catalog_node', 'form_catalog', 'tab_none', 'Geom1:', 'Geom1:'), + ('shape', 'upsert_catalog_node', 'form_catalog', 'tab_none', 'Shape:', 'Shape:'), + ('arc_id', 'v_anl_flow_arc', 'form_feature', 'tab_none', 'Arc id:', 'Arc id:'), + ('arc_type', 'v_anl_flow_arc', 'form_feature', 'tab_none', 'Arc type:', 'Arc type:'), + ('context', 'v_anl_flow_arc', 'form_feature', 'tab_none', 'Context:', 'Context:'), + ('expl_id', 'v_anl_flow_arc', 'form_feature', 'tab_none', 'Expl id:', 'Expl id:'), + ('id', 'v_anl_flow_arc', 'form_feature', 'tab_none', 'Id:', 'Id:'), + ('connec_id', 'v_anl_flow_connec', 'form_feature', 'tab_none', 'Connec id:', 'Connec id:'), + ('context', 'v_anl_flow_connec', 'form_feature', 'tab_none', 'Context:', 'Context:'), + ('expl_id', 'v_anl_flow_connec', 'form_feature', 'tab_none', 'Expl id:', 'Expl id:'), + ('arc_id', 'v_rpt_arcflow_sum', 'form_feature', 'tab_none', 'Arc id:', 'Arc id:'), + ('arc_type', 'v_rpt_arcflow_sum', 'form_feature', 'tab_none', 'Arc type:', 'Arc type:'), + ('arccat_id', 'v_rpt_arcflow_sum', 'form_feature', 'tab_none', 'Arccat id:', 'Arccat id:'), + ('day_max', 'v_rpt_arcflow_sum', 'form_feature', 'tab_none', 'Day max:', 'Day max:'), + ('day_min', 'v_rpt_arcflow_sum', 'form_feature', 'tab_none', 'Day min:', 'Day min:'), + ('id', 'v_rpt_arcflow_sum', 'form_feature', 'tab_none', 'Id:', 'Id:'), + ('max_flow', 'v_rpt_arcflow_sum', 'form_feature', 'tab_none', 'Max flow:', 'Max flow:'), + ('max_hr', 'v_rpt_arcflow_sum', 'form_feature', 'tab_none', 'Max hr:', 'Max hr:'), + ('max_shear', 'v_rpt_arcflow_sum', 'form_feature', 'tab_none', 'Max shear:', 'Max shear:'), + ('max_slope', 'v_rpt_arcflow_sum', 'form_feature', 'tab_none', 'Max slope:', 'Max slope:'), + ('max_veloc', 'v_rpt_arcflow_sum', 'form_feature', 'tab_none', 'Max veloc:', 'Max veloc:'), + ('mfull_depth', 'v_rpt_arcflow_sum', 'form_feature', 'tab_none', 'Mfull depth:', 'Mfull depth:'), + ('mfull_flow', 'v_rpt_arcflow_sum', 'form_feature', 'tab_none', 'Mfull flow:', 'Mfull flow:'), + ('min_shear', 'v_rpt_arcflow_sum', 'form_feature', 'tab_none', 'Min shear:', 'Min shear:'), + ('result_id', 'v_rpt_arcflow_sum', 'form_feature', 'tab_none', 'Result id:', 'Result id:'), + ('sector_id', 'v_rpt_arcflow_sum', 'form_feature', 'tab_none', 'Sector id:', 'Sector id:'), + ('swarc_type', 'v_rpt_arcflow_sum', 'form_feature', 'tab_none', 'Swarc type:', 'Swarc type:'), + ('time_days', 'v_rpt_arcflow_sum', 'form_feature', 'tab_none', 'Time days:', 'Time days:'), + ('time_hour', 'v_rpt_arcflow_sum', 'form_feature', 'tab_none', 'Time hour:', 'Time hour:'), + ('time_max', 'v_rpt_arcflow_sum', 'form_feature', 'tab_none', 'Time max:', 'Time max:'), + ('time_min', 'v_rpt_arcflow_sum', 'form_feature', 'tab_none', 'Time min:', 'Time min:'), + ('arc_id', 'v_rpt_arcpolload_sum', 'form_feature', 'tab_none', 'Arc id:', 'Arc id:'), + ('arc_type', 'v_rpt_arcpolload_sum', 'form_feature', 'tab_none', 'Arc type:', 'Arc type:'), + ('arccat_id', 'v_rpt_arcpolload_sum', 'form_feature', 'tab_none', 'Arccat id:', 'Arccat id:'), + ('id', 'v_rpt_arcpolload_sum', 'form_feature', 'tab_none', 'Id:', 'Id:'), + ('poll_id', 'v_rpt_arcpolload_sum', 'form_feature', 'tab_none', 'Poll id:', 'Poll id:'), + ('result_id', 'v_rpt_arcpolload_sum', 'form_feature', 'tab_none', 'Result id:', 'Result id:'), + ('sector_id', 'v_rpt_arcpolload_sum', 'form_feature', 'tab_none', 'Sector id:', 'Sector id:'), + ('arc_id', 'v_rpt_comp_arcflow_sum', 'form_feature', 'tab_none', 'Arc id:', 'Arc id:'), + ('arc_type', 'v_rpt_comp_arcflow_sum', 'form_feature', 'tab_none', 'Arc type:', 'Arc type:'), + ('arccat_id', 'v_rpt_comp_arcflow_sum', 'form_feature', 'tab_none', 'Arccat id:', 'Arccat id:'), + ('day_max', 'v_rpt_comp_arcflow_sum', 'form_feature', 'tab_none', 'Day max:', 'Day max:'), + ('day_min', 'v_rpt_comp_arcflow_sum', 'form_feature', 'tab_none', 'Day min:', 'Day min:'), + ('id', 'v_rpt_comp_arcflow_sum', 'form_feature', 'tab_none', 'Id:', 'Id:'), + ('max_flow', 'v_rpt_comp_arcflow_sum', 'form_feature', 'tab_none', 'Max flow:', 'Max flow:'), + ('max_hr', 'v_rpt_comp_arcflow_sum', 'form_feature', 'tab_none', 'Max hr:', 'Max hr:'), + ('max_shear', 'v_rpt_comp_arcflow_sum', 'form_feature', 'tab_none', 'Max shear:', 'Max shear:'), + ('max_slope', 'v_rpt_comp_arcflow_sum', 'form_feature', 'tab_none', 'Max slope:', 'Max slope:'), + ('max_veloc', 'v_rpt_comp_arcflow_sum', 'form_feature', 'tab_none', 'Max veloc:', 'Max veloc:'), + ('mfull_depth', 'v_rpt_comp_arcflow_sum', 'form_feature', 'tab_none', 'Mfull depth:', 'Mfull depth:'), + ('mfull_flow', 'v_rpt_comp_arcflow_sum', 'form_feature', 'tab_none', 'Mfull flow:', 'Mfull flow:'), + ('min_shear', 'v_rpt_comp_arcflow_sum', 'form_feature', 'tab_none', 'Min shear:', 'Min shear:'), + ('result_id', 'v_rpt_comp_arcflow_sum', 'form_feature', 'tab_none', 'Result id:', 'Result id:'), + ('sector_id', 'v_rpt_comp_arcflow_sum', 'form_feature', 'tab_none', 'Sector id:', 'Sector id:'), + ('time_days', 'v_rpt_comp_arcflow_sum', 'form_feature', 'tab_none', 'Time days:', 'Time days:'), + ('time_hour', 'v_rpt_comp_arcflow_sum', 'form_feature', 'tab_none', 'Time hour:', 'Time hour:'), + ('time_max', 'v_rpt_comp_arcflow_sum', 'form_feature', 'tab_none', 'Time max:', 'Time max:'), + ('time_min', 'v_rpt_comp_arcflow_sum', 'form_feature', 'tab_none', 'Time min:', 'Time min:'), + ('arc_id', 'v_rpt_comp_condsurcharge_sum', 'form_feature', 'tab_none', 'Arc id:', 'Arc id:'), + ('arc_type', 'v_rpt_comp_condsurcharge_sum', 'form_feature', 'tab_none', 'Arc type:', 'Arc type:'), + ('arccat_id', 'v_rpt_comp_condsurcharge_sum', 'form_feature', 'tab_none', 'Arccat id:', 'Arccat id:'), + ('both_ends', 'v_rpt_comp_condsurcharge_sum', 'form_feature', 'tab_none', 'Both ends:', 'Both ends:'), + ('dnstream', 'v_rpt_comp_condsurcharge_sum', 'form_feature', 'tab_none', 'Dnstream:', 'Dnstream:'), + ('hour_limit', 'v_rpt_comp_condsurcharge_sum', 'form_feature', 'tab_none', 'Hour limit:', 'Hour limit:'), + ('hour_nflow', 'v_rpt_comp_condsurcharge_sum', 'form_feature', 'tab_none', 'Hour nflow:', 'Hour nflow:'), + ('id', 'v_rpt_comp_condsurcharge_sum', 'form_feature', 'tab_none', 'Id:', 'Id:'), + ('result_id', 'v_rpt_comp_condsurcharge_sum', 'form_feature', 'tab_none', 'Result id:', 'Result id:'), + ('sector_id', 'v_rpt_comp_condsurcharge_sum', 'form_feature', 'tab_none', 'Sector id:', 'Sector id:'), + ('upstream', 'v_rpt_comp_condsurcharge_sum', 'form_feature', 'tab_none', 'Upstream:', 'Upstream:'), + ('id', 'v_rpt_comp_continuity_errors', 'form_feature', 'tab_none', 'Id:', 'Id:'), + ('result_id', 'v_rpt_comp_continuity_errors', 'form_feature', 'tab_none', 'Result id:', 'Result id:'), + ('text', 'v_rpt_comp_continuity_errors', 'form_feature', 'tab_none', 'Text:', 'Text:'), + ('id', 'v_rpt_comp_critical_elements', 'form_feature', 'tab_none', 'Id:', 'Id:'), + ('result_id', 'v_rpt_comp_critical_elements', 'form_feature', 'tab_none', 'Result id:', 'Result id:'), + ('text', 'v_rpt_comp_critical_elements', 'form_feature', 'tab_none', 'Text:', 'Text:'), + ('arc_id', 'v_rpt_comp_flowclass_sum', 'form_feature', 'tab_none', 'Arc id:', 'Arc id:'), + ('arc_type', 'v_rpt_comp_flowclass_sum', 'form_feature', 'tab_none', 'Arc type:', 'Arc type:'), + ('arccat_id', 'v_rpt_comp_flowclass_sum', 'form_feature', 'tab_none', 'Arccat id:', 'Arccat id:'), + ('down_dry', 'v_rpt_comp_flowclass_sum', 'form_feature', 'tab_none', 'Down dry:', 'Down dry:'), + ('dry', 'v_rpt_comp_flowclass_sum', 'form_feature', 'tab_none', 'Dry:', 'Dry:'), + ('id', 'v_rpt_comp_flowclass_sum', 'form_feature', 'tab_none', 'Id:', 'Id:'), + ('length', 'v_rpt_comp_flowclass_sum', 'form_feature', 'tab_none', 'Length:', 'Length:'), + ('result_id', 'v_rpt_comp_flowclass_sum', 'form_feature', 'tab_none', 'Result id:', 'Result id:'), + ('sector_id', 'v_rpt_comp_flowclass_sum', 'form_feature', 'tab_none', 'Sector id:', 'Sector id:'), + ('sub_crit', 'v_rpt_comp_flowclass_sum', 'form_feature', 'tab_none', 'Sub crit:', 'Sub crit:'), + ('sub_crit_1', 'v_rpt_comp_flowclass_sum', 'form_feature', 'tab_none', 'Sub crit 1:', 'Sub crit 1:'), + ('up_crit', 'v_rpt_comp_flowclass_sum', 'form_feature', 'tab_none', 'Up crit:', 'Up crit:'), + ('up_dry', 'v_rpt_comp_flowclass_sum', 'form_feature', 'tab_none', 'Up dry:', 'Up dry:'), + ('cont_error', 'v_rpt_comp_flowrouting_cont', 'form_feature', 'tab_none', 'Cont error:', 'Cont error:'), + ('dryw_inf', 'v_rpt_comp_flowrouting_cont', 'form_feature', 'tab_none', 'Dryw inf:', 'Dryw inf:'), + ('evap_losses', 'v_rpt_comp_flowrouting_cont', 'form_feature', 'tab_none', 'Evap losses:', 'Evap losses:'), + ('ext_inf', 'v_rpt_comp_flowrouting_cont', 'form_feature', 'tab_none', 'Ext inf:', 'Ext inf:'), + ('ext_out', 'v_rpt_comp_flowrouting_cont', 'form_feature', 'tab_none', 'Ext out:', 'Ext out:'), + ('finst_vol', 'v_rpt_comp_flowrouting_cont', 'form_feature', 'tab_none', 'Finst vol:', 'Finst vol:'), + ('ground_inf', 'v_rpt_comp_flowrouting_cont', 'form_feature', 'tab_none', 'Ground inf:', 'Ground inf:'), + ('id', 'v_rpt_comp_flowrouting_cont', 'form_feature', 'tab_none', 'Id:', 'Id:'), + ('initst_vol', 'v_rpt_comp_flowrouting_cont', 'form_feature', 'tab_none', 'Initst vol:', 'Initst vol:'), + ('int_out', 'v_rpt_comp_flowrouting_cont', 'form_feature', 'tab_none', 'Int out:', 'Int out:'), + ('rdii_inf', 'v_rpt_comp_flowrouting_cont', 'form_feature', 'tab_none', 'Rdii inf:', 'Rdii inf:'), + ('result_id', 'v_rpt_comp_flowrouting_cont', 'form_feature', 'tab_none', 'Result id:', 'Result id:'), + ('seepage_losses', 'v_rpt_comp_flowrouting_cont', 'form_feature', 'tab_none', 'Seepage losses:', 'Seepage losses:'), + ('stor_loss', 'v_rpt_comp_flowrouting_cont', 'form_feature', 'tab_none', 'Stor loss:', 'Stor loss:'), + ('wetw_inf', 'v_rpt_comp_flowrouting_cont', 'form_feature', 'tab_none', 'Wetw inf:', 'Wetw inf:'), + ('cont_error', 'v_rpt_comp_groundwater_cont', 'form_feature', 'tab_none', 'Cont error:', 'Cont error:'), + ('deep_perc', 'v_rpt_comp_groundwater_cont', 'form_feature', 'tab_none', 'Deep perc:', 'Deep perc:'), + ('final_stor', 'v_rpt_comp_groundwater_cont', 'form_feature', 'tab_none', 'Final stor:', 'Final stor:'), + ('groundw_fl', 'v_rpt_comp_groundwater_cont', 'form_feature', 'tab_none', 'Groundw fl:', 'Groundw fl:'), + ('id', 'v_rpt_comp_groundwater_cont', 'form_feature', 'tab_none', 'Id:', 'Id:'), + ('infilt', 'v_rpt_comp_groundwater_cont', 'form_feature', 'tab_none', 'Infilt:', 'Infilt:'), + ('init_stor', 'v_rpt_comp_groundwater_cont', 'form_feature', 'tab_none', 'Init stor:', 'Init stor:'), + ('lowzone_et', 'v_rpt_comp_groundwater_cont', 'form_feature', 'tab_none', 'Lowzone et:', 'Lowzone et:'), + ('result_id', 'v_rpt_comp_groundwater_cont', 'form_feature', 'tab_none', 'Result id:', 'Result id:'), + ('upzone_et', 'v_rpt_comp_groundwater_cont', 'form_feature', 'tab_none', 'Upzone et:', 'Upzone et:'), + ('id', 'v_rpt_comp_high_cont_errors', 'form_feature', 'tab_none', 'Id:', 'Id:'), + ('result_id', 'v_rpt_comp_high_cont_errors', 'form_feature', 'tab_none', 'Result id:', 'Result id:'), + ('text', 'v_rpt_comp_high_cont_errors', 'form_feature', 'tab_none', 'Text:', 'Text:'), + ('id', 'v_rpt_comp_high_flowinest_ind', 'form_feature', 'tab_none', 'Id:', 'Id:'), + ('result_id', 'v_rpt_comp_high_flowinest_ind', 'form_feature', 'tab_none', 'Result id:', 'Result id:'), + ('text', 'v_rpt_comp_high_flowinest_ind', 'form_feature', 'tab_none', 'Text:', 'Text:'), + ('id', 'v_rpt_comp_instability_index', 'form_feature', 'tab_none', 'Id:', 'Id:'), + ('result_id', 'v_rpt_comp_instability_index', 'form_feature', 'tab_none', 'Result id:', 'Result id:'), + ('text', 'v_rpt_comp_instability_index', 'form_feature', 'tab_none', 'Text:', 'Text:'), + ('aver_depth', 'v_rpt_comp_nodedepth_sum', 'form_feature', 'tab_none', 'Aver depth:', 'Aver depth:'), + ('id', 'v_rpt_comp_nodedepth_sum', 'form_feature', 'tab_none', 'Id:', 'Id:'), + ('max_depth', 'v_rpt_comp_nodedepth_sum', 'form_feature', 'tab_none', 'Max depth:', 'Max depth:'), + ('max_hgl', 'v_rpt_comp_nodedepth_sum', 'form_feature', 'tab_none', 'Max hgl:', 'Max hgl:'), + ('node_id', 'v_rpt_comp_nodedepth_sum', 'form_feature', 'tab_none', 'Node id:', 'Node id:'), + ('node_type', 'v_rpt_comp_nodedepth_sum', 'form_feature', 'tab_none', 'Node type:', 'Node type:'), + ('nodecat_id', 'v_rpt_comp_nodedepth_sum', 'form_feature', 'tab_none', 'Nodecat id:', 'Nodecat id:'), + ('result_id', 'v_rpt_comp_nodedepth_sum', 'form_feature', 'tab_none', 'Result id:', 'Result id:'), + ('sector_id', 'v_rpt_comp_nodedepth_sum', 'form_feature', 'tab_none', 'Sector id:', 'Sector id:'), + ('swnod_type', 'v_rpt_comp_nodedepth_sum', 'form_feature', 'tab_none', 'Swnod type:', 'Swnod type:'), + ('time_days', 'v_rpt_comp_nodedepth_sum', 'form_feature', 'tab_none', 'Time days:', 'Time days:'), + ('time_hour', 'v_rpt_comp_nodedepth_sum', 'form_feature', 'tab_none', 'Time hour:', 'Time hour:'), + ('hour_flood', 'v_rpt_comp_nodeflooding_sum', 'form_feature', 'tab_none', 'Hour flood:', 'Hour flood:'), + ('id', 'v_rpt_comp_nodeflooding_sum', 'form_feature', 'tab_none', 'Id:', 'Id:'), + ('max_ponded', 'v_rpt_comp_nodeflooding_sum', 'form_feature', 'tab_none', 'Max ponded:', 'Max ponded:'), + ('max_rate', 'v_rpt_comp_nodeflooding_sum', 'form_feature', 'tab_none', 'Max rate:', 'Max rate:'), + ('node_id', 'v_rpt_comp_nodeflooding_sum', 'form_feature', 'tab_none', 'Node id:', 'Node id:'), + ('node_type', 'v_rpt_comp_nodeflooding_sum', 'form_feature', 'tab_none', 'Node type:', 'Node type:'), + ('nodecat_id', 'v_rpt_comp_nodeflooding_sum', 'form_feature', 'tab_none', 'Nodecat id:', 'Nodecat id:'), + ('result_id', 'v_rpt_comp_nodeflooding_sum', 'form_feature', 'tab_none', 'Result id:', 'Result id:'), + ('sector_id', 'v_rpt_comp_nodeflooding_sum', 'form_feature', 'tab_none', 'Sector id:', 'Sector id:'), + ('time_days', 'v_rpt_comp_nodeflooding_sum', 'form_feature', 'tab_none', 'Time days:', 'Time days:'), + ('time_hour', 'v_rpt_comp_nodeflooding_sum', 'form_feature', 'tab_none', 'Time hour:', 'Time hour:'), + ('tot_flood', 'v_rpt_comp_nodeflooding_sum', 'form_feature', 'tab_none', 'Tot flood:', 'Tot flood:'), + ('flow_balance_error', 'v_rpt_comp_nodeinflow_sum', 'form_feature', 'tab_none', 'Flow balance error:', 'Flow balance error:'), + ('id', 'v_rpt_comp_nodeinflow_sum', 'form_feature', 'tab_none', 'Id:', 'Id:'), + ('latinf_vol', 'v_rpt_comp_nodeinflow_sum', 'form_feature', 'tab_none', 'Latinf vol:', 'Latinf vol:'), + ('max_latinf', 'v_rpt_comp_nodeinflow_sum', 'form_feature', 'tab_none', 'Max latinf:', 'Max latinf:'), + ('max_totinf', 'v_rpt_comp_nodeinflow_sum', 'form_feature', 'tab_none', 'Max totinf:', 'Max totinf:'), + ('node_id', 'v_rpt_comp_nodeinflow_sum', 'form_feature', 'tab_none', 'Node id:', 'Node id:'), + ('node_type', 'v_rpt_comp_nodeinflow_sum', 'form_feature', 'tab_none', 'Node type:', 'Node type:'), + ('nodecat_id', 'v_rpt_comp_nodeinflow_sum', 'form_feature', 'tab_none', 'Nodecat id:', 'Nodecat id:'), + ('result_id', 'v_rpt_comp_nodeinflow_sum', 'form_feature', 'tab_none', 'Result id:', 'Result id:'), + ('sector_id', 'v_rpt_comp_nodeinflow_sum', 'form_feature', 'tab_none', 'Sector id:', 'Sector id:'), + ('swnod_type', 'v_rpt_comp_nodeinflow_sum', 'form_feature', 'tab_none', 'Swnod type:', 'Swnod type:'), + ('time_days', 'v_rpt_comp_nodeinflow_sum', 'form_feature', 'tab_none', 'Time days:', 'Time days:'), + ('time_hour', 'v_rpt_comp_nodeinflow_sum', 'form_feature', 'tab_none', 'Time hour:', 'Time hour:'), + ('totinf_vol', 'v_rpt_comp_nodeinflow_sum', 'form_feature', 'tab_none', 'Totinf vol:', 'Totinf vol:'), + ('avg_flow', 'v_rpt_comp_outfallflow_sum', 'form_feature', 'tab_none', 'Avg flow:', 'Avg flow:'), + ('flow_freq', 'v_rpt_comp_outfallflow_sum', 'form_feature', 'tab_none', 'Flow freq:', 'Flow freq:'), + ('id', 'v_rpt_comp_outfallflow_sum', 'form_feature', 'tab_none', 'Id:', 'Id:'), + ('max_flow', 'v_rpt_comp_outfallflow_sum', 'form_feature', 'tab_none', 'Max flow:', 'Max flow:'), + ('node_id', 'v_rpt_comp_outfallflow_sum', 'form_feature', 'tab_none', 'Node id:', 'Node id:'), + ('node_type', 'v_rpt_comp_outfallflow_sum', 'form_feature', 'tab_none', 'Node type:', 'Node type:'), + ('nodecat_id', 'v_rpt_comp_outfallflow_sum', 'form_feature', 'tab_none', 'Nodecat id:', 'Nodecat id:'), + ('result_id', 'v_rpt_comp_outfallflow_sum', 'form_feature', 'tab_none', 'Result id:', 'Result id:'), + ('sector_id', 'v_rpt_comp_outfallflow_sum', 'form_feature', 'tab_none', 'Sector id:', 'Sector id:'), + ('total_vol', 'v_rpt_comp_outfallflow_sum', 'form_feature', 'tab_none', 'Total vol:', 'Total vol:'), + ('id', 'v_rpt_comp_outfallload_sum', 'form_feature', 'tab_none', 'Id:', 'Id:'), + ('node_id', 'v_rpt_comp_outfallload_sum', 'form_feature', 'tab_none', 'Node id:', 'Node id:'), + ('node_type', 'v_rpt_comp_outfallload_sum', 'form_feature', 'tab_none', 'Node type:', 'Node type:'), + ('nodecat_id', 'v_rpt_comp_outfallload_sum', 'form_feature', 'tab_none', 'Nodecat id:', 'Nodecat id:'), + ('poll_id', 'v_rpt_comp_outfallload_sum', 'form_feature', 'tab_none', 'Poll id:', 'Poll id:'), + ('result_id', 'v_rpt_comp_outfallload_sum', 'form_feature', 'tab_none', 'Result id:', 'Result id:'), + ('sector_id', 'v_rpt_comp_outfallload_sum', 'form_feature', 'tab_none', 'Sector id:', 'Sector id:'), + ('value', 'v_rpt_comp_outfallload_sum', 'form_feature', 'tab_none', 'Value:', 'Value:'), + ('arc_id', 'v_rpt_comp_pumping_sum', 'form_feature', 'tab_none', 'Arc id:', 'Arc id:'), + ('arc_type', 'v_rpt_comp_pumping_sum', 'form_feature', 'tab_none', 'Arc type:', 'Arc type:'), + ('arccat_id', 'v_rpt_comp_pumping_sum', 'form_feature', 'tab_none', 'Arccat id:', 'Arccat id:'), + ('avg_flow', 'v_rpt_comp_pumping_sum', 'form_feature', 'tab_none', 'Avg flow:', 'Avg flow:'), + ('id', 'v_rpt_comp_pumping_sum', 'form_feature', 'tab_none', 'Id:', 'Id:'), + ('max_flow', 'v_rpt_comp_pumping_sum', 'form_feature', 'tab_none', 'Max flow:', 'Max flow:'), + ('min_flow', 'v_rpt_comp_pumping_sum', 'form_feature', 'tab_none', 'Min flow:', 'Min flow:'), + ('num_startup', 'v_rpt_comp_pumping_sum', 'form_feature', 'tab_none', 'Num startup:', 'Num startup:'), + ('percent', 'v_rpt_comp_pumping_sum', 'form_feature', 'tab_none', 'Percent:', 'Percent:'), + ('powus_kwh', 'v_rpt_comp_pumping_sum', 'form_feature', 'tab_none', 'Powus kwh:', 'Powus kwh:'), + ('result_id', 'v_rpt_comp_pumping_sum', 'form_feature', 'tab_none', 'Result id:', 'Result id:'), + ('sector_id', 'v_rpt_comp_pumping_sum', 'form_feature', 'tab_none', 'Sector id:', 'Sector id:'), + ('timoff_max', 'v_rpt_comp_pumping_sum', 'form_feature', 'tab_none', 'Timoff max:', 'Timoff max:'), + ('timoff_min', 'v_rpt_comp_pumping_sum', 'form_feature', 'tab_none', 'Timoff min:', 'Timoff min:'), + ('vol_ltr', 'v_rpt_comp_pumping_sum', 'form_feature', 'tab_none', 'Vol ltr:', 'Vol ltr:'), + ('cont_error', 'v_rpt_comp_qualrouting', 'form_feature', 'tab_none', 'Cont error:', 'Cont error:'), + ('dryw_inf', 'v_rpt_comp_qualrouting', 'form_feature', 'tab_none', 'Dryw inf:', 'Dryw inf:'), + ('ext_inf', 'v_rpt_comp_qualrouting', 'form_feature', 'tab_none', 'Ext inf:', 'Ext inf:'), + ('ext_out', 'v_rpt_comp_qualrouting', 'form_feature', 'tab_none', 'Ext out:', 'Ext out:'), + ('finst_mas', 'v_rpt_comp_qualrouting', 'form_feature', 'tab_none', 'Finst mas:', 'Finst mas:'), + ('ground_inf', 'v_rpt_comp_qualrouting', 'form_feature', 'tab_none', 'Ground inf:', 'Ground inf:'), + ('id', 'v_rpt_comp_qualrouting', 'form_feature', 'tab_none', 'Id:', 'Id:'), + ('initst_mas', 'v_rpt_comp_qualrouting', 'form_feature', 'tab_none', 'Initst mas:', 'Initst mas:'), + ('int_inf', 'v_rpt_comp_qualrouting', 'form_feature', 'tab_none', 'Int inf:', 'Int inf:'), + ('mass_reac', 'v_rpt_comp_qualrouting', 'form_feature', 'tab_none', 'Mass reac:', 'Mass reac:'), + ('poll_id', 'v_rpt_comp_qualrouting', 'form_feature', 'tab_none', 'Poll id:', 'Poll id:'), + ('rdii_inf', 'v_rpt_comp_qualrouting', 'form_feature', 'tab_none', 'Rdii inf:', 'Rdii inf:'), + ('result_id', 'v_rpt_comp_qualrouting', 'form_feature', 'tab_none', 'Result id:', 'Result id:'), + ('wetw_inf', 'v_rpt_comp_qualrouting', 'form_feature', 'tab_none', 'Wetw inf:', 'Wetw inf:'), + ('id', 'v_rpt_comp_rainfall_dep', 'form_feature', 'tab_none', 'Id:', 'Id:'), + ('rdiip_prod', 'v_rpt_comp_rainfall_dep', 'form_feature', 'tab_none', 'Rdiip prod:', 'Rdiip prod:'), + ('rdiir_rat', 'v_rpt_comp_rainfall_dep', 'form_feature', 'tab_none', 'Rdiir rat:', 'Rdiir rat:'), + ('result_id', 'v_rpt_comp_rainfall_dep', 'form_feature', 'tab_none', 'Result id:', 'Result id:'), + ('sewer_rain', 'v_rpt_comp_rainfall_dep', 'form_feature', 'tab_none', 'Sewer rain:', 'Sewer rain:'), + ('id', 'v_rpt_comp_routing_timestep', 'form_feature', 'tab_none', 'Id:', 'Id:'), + ('result_id', 'v_rpt_comp_routing_timestep', 'form_feature', 'tab_none', 'Result id:', 'Result id:'), + ('text', 'v_rpt_comp_routing_timestep', 'form_feature', 'tab_none', 'Text:', 'Text:'), + ('bmp_re', 'v_rpt_comp_runoff_qual', 'form_feature', 'tab_none', 'Bmp re:', 'Bmp re:'), + ('cont_error', 'v_rpt_comp_runoff_qual', 'form_feature', 'tab_none', 'Cont error:', 'Cont error:'), + ('id', 'v_rpt_comp_runoff_qual', 'form_feature', 'tab_none', 'Id:', 'Id:'), + ('infil_loss', 'v_rpt_comp_runoff_qual', 'form_feature', 'tab_none', 'Infil loss:', 'Infil loss:'), + ('init_buil', 'v_rpt_comp_runoff_qual', 'form_feature', 'tab_none', 'Init buil:', 'Init buil:'), + ('poll_id', 'v_rpt_comp_runoff_qual', 'form_feature', 'tab_none', 'Poll id:', 'Poll id:'), + ('rem_buil', 'v_rpt_comp_runoff_qual', 'form_feature', 'tab_none', 'Rem buil:', 'Rem buil:'), + ('result_id', 'v_rpt_comp_runoff_qual', 'form_feature', 'tab_none', 'Result id:', 'Result id:'), + ('surf_buil', 'v_rpt_comp_runoff_qual', 'form_feature', 'tab_none', 'Surf buil:', 'Surf buil:'), + ('surf_runof', 'v_rpt_comp_runoff_qual', 'form_feature', 'tab_none', 'Surf runof:', 'Surf runof:'), + ('sweep_re', 'v_rpt_comp_runoff_qual', 'form_feature', 'tab_none', 'Sweep re:', 'Sweep re:'), + ('wet_dep', 'v_rpt_comp_runoff_qual', 'form_feature', 'tab_none', 'Wet dep:', 'Wet dep:'), + ('cont_error', 'v_rpt_comp_runoff_quant', 'form_feature', 'tab_none', 'Cont error:', 'Cont error:'), + ('evap_loss', 'v_rpt_comp_runoff_quant', 'form_feature', 'tab_none', 'Evap loss:', 'Evap loss:'), + ('finals_sto', 'v_rpt_comp_runoff_quant', 'form_feature', 'tab_none', 'Finals sto:', 'Finals sto:'), + ('finalsw_co', 'v_rpt_comp_runoff_quant', 'form_feature', 'tab_none', 'Finalsw co:', 'Finalsw co:'), + ('id', 'v_rpt_comp_runoff_quant', 'form_feature', 'tab_none', 'Id:', 'Id:'), + ('infil_loss', 'v_rpt_comp_runoff_quant', 'form_feature', 'tab_none', 'Infil loss:', 'Infil loss:'), + ('initsw_co', 'v_rpt_comp_runoff_quant', 'form_feature', 'tab_none', 'Initsw co:', 'Initsw co:'), + ('result_id', 'v_rpt_comp_runoff_quant', 'form_feature', 'tab_none', 'Result id:', 'Result id:'), + ('snow_re', 'v_rpt_comp_runoff_quant', 'form_feature', 'tab_none', 'Snow re:', 'Snow re:'), + ('surf_runof', 'v_rpt_comp_runoff_quant', 'form_feature', 'tab_none', 'Surf runof:', 'Surf runof:'), + ('total_prec', 'v_rpt_comp_runoff_quant', 'form_feature', 'tab_none', 'Total prec:', 'Total prec:'), + ('aver_vol', 'v_rpt_comp_storagevol_sum', 'form_feature', 'tab_none', 'Aver vol:', 'Aver vol:'), + ('avg_full', 'v_rpt_comp_storagevol_sum', 'form_feature', 'tab_none', 'Avg full:', 'Avg full:'), + ('ei_loss', 'v_rpt_comp_storagevol_sum', 'form_feature', 'tab_none', 'Ei loss:', 'Ei loss:'), + ('id', 'v_rpt_comp_storagevol_sum', 'form_feature', 'tab_none', 'Id:', 'Id:'), + ('max_full', 'v_rpt_comp_storagevol_sum', 'form_feature', 'tab_none', 'Max full:', 'Max full:'), + ('max_out', 'v_rpt_comp_storagevol_sum', 'form_feature', 'tab_none', 'Max out:', 'Max out:'), + ('max_vol', 'v_rpt_comp_storagevol_sum', 'form_feature', 'tab_none', 'Max vol:', 'Max vol:'), + ('node_id', 'v_rpt_comp_storagevol_sum', 'form_feature', 'tab_none', 'Node id:', 'Node id:'), + ('node_type', 'v_rpt_comp_storagevol_sum', 'form_feature', 'tab_none', 'Node type:', 'Node type:'), + ('nodecat_id', 'v_rpt_comp_storagevol_sum', 'form_feature', 'tab_none', 'Nodecat id:', 'Nodecat id:'), + ('result_id', 'v_rpt_comp_storagevol_sum', 'form_feature', 'tab_none', 'Result id:', 'Result id:'), + ('sector_id', 'v_rpt_comp_storagevol_sum', 'form_feature', 'tab_none', 'Sector id:', 'Sector id:'), + ('time_days', 'v_rpt_comp_storagevol_sum', 'form_feature', 'tab_none', 'Time days:', 'Time days:'), + ('time_hour', 'v_rpt_comp_storagevol_sum', 'form_feature', 'tab_none', 'Time hour:', 'Time hour:'), + ('depth', 'v_rpt_comp_subcatchrunoff_sum', 'form_feature', 'tab_none', 'Depth:', 'Depth:'), + ('id', 'v_rpt_comp_subcatchrunoff_sum', 'form_feature', 'tab_none', 'Id:', 'Id:'), + ('peak_runof', 'v_rpt_comp_subcatchrunoff_sum', 'form_feature', 'tab_none', 'Peak runof:', 'Peak runof:'), + ('result_id', 'v_rpt_comp_subcatchrunoff_sum', 'form_feature', 'tab_none', 'Result id:', 'Result id:'), + ('runoff_coe', 'v_rpt_comp_subcatchrunoff_sum', 'form_feature', 'tab_none', 'Runoff coe:', 'Runoff coe:'), + ('sector_id', 'v_rpt_comp_subcatchrunoff_sum', 'form_feature', 'tab_none', 'Sector id:', 'Sector id:'), + ('subc_id', 'v_rpt_comp_subcatchrunoff_sum', 'form_feature', 'tab_none', 'Subc id:', 'Subc id:'), + ('tot_evap', 'v_rpt_comp_subcatchrunoff_sum', 'form_feature', 'tab_none', 'Tot evap:', 'Tot evap:'), + ('tot_infil', 'v_rpt_comp_subcatchrunoff_sum', 'form_feature', 'tab_none', 'Tot infil:', 'Tot infil:'), + ('tot_precip', 'v_rpt_comp_subcatchrunoff_sum', 'form_feature', 'tab_none', 'Tot precip:', 'Tot precip:'), + ('tot_runoff', 'v_rpt_comp_subcatchrunoff_sum', 'form_feature', 'tab_none', 'Tot runoff:', 'Tot runoff:'), + ('tot_runofl', 'v_rpt_comp_subcatchrunoff_sum', 'form_feature', 'tab_none', 'Tot runofl:', 'Tot runofl:'), + ('tot_runon', 'v_rpt_comp_subcatchrunoff_sum', 'form_feature', 'tab_none', 'Tot runon:', 'Tot runon:'), + ('vel', 'v_rpt_comp_subcatchrunoff_sum', 'form_feature', 'tab_none', 'Vel:', 'Vel:'), + ('vhmax', 'v_rpt_comp_subcatchrunoff_sum', 'form_feature', 'tab_none', 'Vhmax:', 'Vhmax:'), + ('vxmax', 'v_rpt_comp_subcatchrunoff_sum', 'form_feature', 'tab_none', 'Vxmax:', 'Vxmax:'), + ('vymax', 'v_rpt_comp_subcatchrunoff_sum', 'form_feature', 'tab_none', 'Vymax:', 'Vymax:'), + ('id', 'v_rpt_comp_subcatchwashoff_sum', 'form_feature', 'tab_none', 'Id:', 'Id:'), + ('poll_id', 'v_rpt_comp_subcatchwashoff_sum', 'form_feature', 'tab_none', 'Poll id:', 'Poll id:'), + ('result_id', 'v_rpt_comp_subcatchwashoff_sum', 'form_feature', 'tab_none', 'Result id:', 'Result id:'), + ('sector_id', 'v_rpt_comp_subcatchwashoff_sum', 'form_feature', 'tab_none', 'Sector id:', 'Sector id:'), + ('subc_id', 'v_rpt_comp_subcatchwashoff_sum', 'form_feature', 'tab_none', 'Subc id:', 'Subc id:'), + ('value', 'v_rpt_comp_subcatchwashoff_sum', 'form_feature', 'tab_none', 'Value:', 'Value:'), + ('id', 'v_rpt_comp_timestep_critelem', 'form_feature', 'tab_none', 'Id:', 'Id:'), + ('result_id', 'v_rpt_comp_timestep_critelem', 'form_feature', 'tab_none', 'Result id:', 'Result id:'), + ('text', 'v_rpt_comp_timestep_critelem', 'form_feature', 'tab_none', 'Text:', 'Text:'), + ('arc_id', 'v_rpt_condsurcharge_sum', 'form_feature', 'tab_none', 'Arc id:', 'Arc id:'), + ('arc_type', 'v_rpt_condsurcharge_sum', 'form_feature', 'tab_none', 'Arc type:', 'Arc type:'), + ('arccat_id', 'v_rpt_condsurcharge_sum', 'form_feature', 'tab_none', 'Arccat id:', 'Arccat id:'), + ('both_ends', 'v_rpt_condsurcharge_sum', 'form_feature', 'tab_none', 'Both ends:', 'Both ends:'), + ('dnstream', 'v_rpt_condsurcharge_sum', 'form_feature', 'tab_none', 'Dnstream:', 'Dnstream:'), + ('hour_limit', 'v_rpt_condsurcharge_sum', 'form_feature', 'tab_none', 'Hour limit:', 'Hour limit:'), + ('hour_nflow', 'v_rpt_condsurcharge_sum', 'form_feature', 'tab_none', 'Hour nflow:', 'Hour nflow:'), + ('id', 'v_rpt_condsurcharge_sum', 'form_feature', 'tab_none', 'Id:', 'Id:'), + ('result_id', 'v_rpt_condsurcharge_sum', 'form_feature', 'tab_none', 'Result id:', 'Result id:'), + ('sector_id', 'v_rpt_condsurcharge_sum', 'form_feature', 'tab_none', 'Sector id:', 'Sector id:'), + ('upstream', 'v_rpt_condsurcharge_sum', 'form_feature', 'tab_none', 'Upstream:', 'Upstream:'), + ('id', 'v_rpt_continuity_errors', 'form_feature', 'tab_none', 'Id:', 'Id:'), + ('result_id', 'v_rpt_continuity_errors', 'form_feature', 'tab_none', 'Result id:', 'Result id:'), + ('text', 'v_rpt_continuity_errors', 'form_feature', 'tab_none', 'Text:', 'Text:'), + ('id', 'v_rpt_critical_elements', 'form_feature', 'tab_none', 'Id:', 'Id:'), + ('result_id', 'v_rpt_critical_elements', 'form_feature', 'tab_none', 'Result id:', 'Result id:'), + ('text', 'v_rpt_critical_elements', 'form_feature', 'tab_none', 'Text:', 'Text:'), + ('arc_id', 'v_rpt_flowclass_sum', 'form_feature', 'tab_none', 'Arc id:', 'Arc id:'), + ('arc_type', 'v_rpt_flowclass_sum', 'form_feature', 'tab_none', 'Arc type:', 'Arc type:'), + ('arccat_id', 'v_rpt_flowclass_sum', 'form_feature', 'tab_none', 'Arccat id:', 'Arccat id:'), + ('down_dry', 'v_rpt_flowclass_sum', 'form_feature', 'tab_none', 'Down dry:', 'Down dry:'), + ('dry', 'v_rpt_flowclass_sum', 'form_feature', 'tab_none', 'Dry:', 'Dry:'), + ('id', 'v_rpt_flowclass_sum', 'form_feature', 'tab_none', 'Id:', 'Id:'), + ('length', 'v_rpt_flowclass_sum', 'form_feature', 'tab_none', 'Length:', 'Length:'), + ('result_id', 'v_rpt_flowclass_sum', 'form_feature', 'tab_none', 'Result id:', 'Result id:'), + ('sector_id', 'v_rpt_flowclass_sum', 'form_feature', 'tab_none', 'Sector id:', 'Sector id:'), + ('sub_crit', 'v_rpt_flowclass_sum', 'form_feature', 'tab_none', 'Sub crit:', 'Sub crit:'), + ('sub_crit_1', 'v_rpt_flowclass_sum', 'form_feature', 'tab_none', 'Sub crit 1:', 'Sub crit 1:'), + ('up_crit', 'v_rpt_flowclass_sum', 'form_feature', 'tab_none', 'Up crit:', 'Up crit:'), + ('up_dry', 'v_rpt_flowclass_sum', 'form_feature', 'tab_none', 'Up dry:', 'Up dry:'), + ('cont_error', 'v_rpt_flowrouting_cont', 'form_feature', 'tab_none', 'Cont error:', 'Cont error:'), + ('dryw_inf', 'v_rpt_flowrouting_cont', 'form_feature', 'tab_none', 'Dryw inf:', 'Dryw inf:'), + ('evap_losses', 'v_rpt_flowrouting_cont', 'form_feature', 'tab_none', 'Evap losses:', 'Evap losses:'), + ('ext_inf', 'v_rpt_flowrouting_cont', 'form_feature', 'tab_none', 'Ext inf:', 'Ext inf:'), + ('ext_out', 'v_rpt_flowrouting_cont', 'form_feature', 'tab_none', 'Ext out:', 'Ext out:'), + ('finst_vol', 'v_rpt_flowrouting_cont', 'form_feature', 'tab_none', 'Finst vol:', 'Finst vol:'), + ('ground_inf', 'v_rpt_flowrouting_cont', 'form_feature', 'tab_none', 'Ground inf:', 'Ground inf:'), + ('id', 'v_rpt_flowrouting_cont', 'form_feature', 'tab_none', 'Id:', 'Id:'), + ('initst_vol', 'v_rpt_flowrouting_cont', 'form_feature', 'tab_none', 'Initst vol:', 'Initst vol:'), + ('int_out', 'v_rpt_flowrouting_cont', 'form_feature', 'tab_none', 'Int out:', 'Int out:'), + ('rdii_inf', 'v_rpt_flowrouting_cont', 'form_feature', 'tab_none', 'Rdii inf:', 'Rdii inf:'), + ('result_id', 'v_rpt_flowrouting_cont', 'form_feature', 'tab_none', 'Result id:', 'Result id:'), + ('seepage_losses', 'v_rpt_flowrouting_cont', 'form_feature', 'tab_none', 'Seepage losses:', 'Seepage losses:'), + ('stor_loss', 'v_rpt_flowrouting_cont', 'form_feature', 'tab_none', 'Stor loss:', 'Stor loss:'), + ('wetw_inf', 'v_rpt_flowrouting_cont', 'form_feature', 'tab_none', 'Wetw inf:', 'Wetw inf:'), + ('cont_error', 'v_rpt_groundwater_cont', 'form_feature', 'tab_none', 'Cont error:', 'Cont error:'), + ('deep_perc', 'v_rpt_groundwater_cont', 'form_feature', 'tab_none', 'Deep perc:', 'Deep perc:'), + ('final_stor', 'v_rpt_groundwater_cont', 'form_feature', 'tab_none', 'Final stor:', 'Final stor:'), + ('groundw_fl', 'v_rpt_groundwater_cont', 'form_feature', 'tab_none', 'Groundw fl:', 'Groundw fl:'), + ('id', 'v_rpt_groundwater_cont', 'form_feature', 'tab_none', 'Id:', 'Id:'), + ('infilt', 'v_rpt_groundwater_cont', 'form_feature', 'tab_none', 'Infilt:', 'Infilt:'), + ('init_stor', 'v_rpt_groundwater_cont', 'form_feature', 'tab_none', 'Init stor:', 'Init stor:'), + ('lowzone_et', 'v_rpt_groundwater_cont', 'form_feature', 'tab_none', 'Lowzone et:', 'Lowzone et:'), + ('result_id', 'v_rpt_groundwater_cont', 'form_feature', 'tab_none', 'Result id:', 'Result id:'), + ('upzone_et', 'v_rpt_groundwater_cont', 'form_feature', 'tab_none', 'Upzone et:', 'Upzone et:'), + ('id', 'v_rpt_high_cont_errors', 'form_feature', 'tab_none', 'Id:', 'Id:'), + ('result_id', 'v_rpt_high_cont_errors', 'form_feature', 'tab_none', 'Result id:', 'Result id:'), + ('text', 'v_rpt_high_cont_errors', 'form_feature', 'tab_none', 'Text:', 'Text:'), + ('id', 'v_rpt_high_flowinest_ind', 'form_feature', 'tab_none', 'Id:', 'Id:'), + ('result_id', 'v_rpt_high_flowinest_ind', 'form_feature', 'tab_none', 'Result id:', 'Result id:'), + ('text', 'v_rpt_high_flowinest_ind', 'form_feature', 'tab_none', 'Text:', 'Text:'), + ('id', 'v_rpt_instability_index', 'form_feature', 'tab_none', 'Id:', 'Id:'), + ('result_id', 'v_rpt_instability_index', 'form_feature', 'tab_none', 'Result id:', 'Result id:'), + ('text', 'v_rpt_instability_index', 'form_feature', 'tab_none', 'Text:', 'Text:'), + ('aver_depth', 'v_rpt_nodedepth_sum', 'form_feature', 'tab_none', 'Aver depth:', 'Aver depth:'), + ('id', 'v_rpt_nodedepth_sum', 'form_feature', 'tab_none', 'Id:', 'Id:'), + ('max_depth', 'v_rpt_nodedepth_sum', 'form_feature', 'tab_none', 'Max depth:', 'Max depth:'), + ('max_hgl', 'v_rpt_nodedepth_sum', 'form_feature', 'tab_none', 'Max hgl:', 'Max hgl:'), + ('node_id', 'v_rpt_nodedepth_sum', 'form_feature', 'tab_none', 'Node id:', 'Node id:'), + ('node_type', 'v_rpt_nodedepth_sum', 'form_feature', 'tab_none', 'Node type:', 'Node type:'), + ('nodecat_id', 'v_rpt_nodedepth_sum', 'form_feature', 'tab_none', 'Nodecat id:', 'Nodecat id:'), + ('result_id', 'v_rpt_nodedepth_sum', 'form_feature', 'tab_none', 'Result id:', 'Result id:'), + ('sector_id', 'v_rpt_nodedepth_sum', 'form_feature', 'tab_none', 'Sector id:', 'Sector id:'), + ('swnod_type', 'v_rpt_nodedepth_sum', 'form_feature', 'tab_none', 'Swnod type:', 'Swnod type:'), + ('time_days', 'v_rpt_nodedepth_sum', 'form_feature', 'tab_none', 'Time days:', 'Time days:'), + ('time_hour', 'v_rpt_nodedepth_sum', 'form_feature', 'tab_none', 'Time hour:', 'Time hour:'), + ('hour_flood', 'v_rpt_nodeflooding_sum', 'form_feature', 'tab_none', 'Hour flood:', 'Hour flood:'), + ('id', 'v_rpt_nodeflooding_sum', 'form_feature', 'tab_none', 'Id:', 'Id:'), + ('max_ponded', 'v_rpt_nodeflooding_sum', 'form_feature', 'tab_none', 'Max ponded:', 'Max ponded:'), + ('max_rate', 'v_rpt_nodeflooding_sum', 'form_feature', 'tab_none', 'Max rate:', 'Max rate:'), + ('node_id', 'v_rpt_nodeflooding_sum', 'form_feature', 'tab_none', 'Node id:', 'Node id:'), + ('node_type', 'v_rpt_nodeflooding_sum', 'form_feature', 'tab_none', 'Node type:', 'Node type:'), + ('nodecat_id', 'v_rpt_nodeflooding_sum', 'form_feature', 'tab_none', 'Nodecat id:', 'Nodecat id:'), + ('result_id', 'v_rpt_nodeflooding_sum', 'form_feature', 'tab_none', 'Result id:', 'Result id:'), + ('sector_id', 'v_rpt_nodeflooding_sum', 'form_feature', 'tab_none', 'Sector id:', 'Sector id:'), + ('time_days', 'v_rpt_nodeflooding_sum', 'form_feature', 'tab_none', 'Time days:', 'Time days:'), + ('time_hour', 'v_rpt_nodeflooding_sum', 'form_feature', 'tab_none', 'Time hour:', 'Time hour:'), + ('tot_flood', 'v_rpt_nodeflooding_sum', 'form_feature', 'tab_none', 'Tot flood:', 'Tot flood:'), + ('flow_balance_error', 'v_rpt_nodeinflow_sum', 'form_feature', 'tab_none', 'Flow balance error:', 'Flow balance error:'), + ('id', 'v_rpt_nodeinflow_sum', 'form_feature', 'tab_none', 'Id:', 'Id:'), + ('latinf_vol', 'v_rpt_nodeinflow_sum', 'form_feature', 'tab_none', 'Latinf vol:', 'Latinf vol:'), + ('max_latinf', 'v_rpt_nodeinflow_sum', 'form_feature', 'tab_none', 'Max latinf:', 'Max latinf:'), + ('max_totinf', 'v_rpt_nodeinflow_sum', 'form_feature', 'tab_none', 'Max totinf:', 'Max totinf:'), + ('node_id', 'v_rpt_nodeinflow_sum', 'form_feature', 'tab_none', 'Node id:', 'Node id:'), + ('node_type', 'v_rpt_nodeinflow_sum', 'form_feature', 'tab_none', 'Node type:', 'Node type:'), + ('nodecat_id', 'v_rpt_nodeinflow_sum', 'form_feature', 'tab_none', 'Nodecat id:', 'Nodecat id:'), + ('result_id', 'v_rpt_nodeinflow_sum', 'form_feature', 'tab_none', 'Result id:', 'Result id:'), + ('sector_id', 'v_rpt_nodeinflow_sum', 'form_feature', 'tab_none', 'Sector id:', 'Sector id:'), + ('swnod_type', 'v_rpt_nodeinflow_sum', 'form_feature', 'tab_none', 'Swnod type:', 'Swnod type:'), + ('time_days', 'v_rpt_nodeinflow_sum', 'form_feature', 'tab_none', 'Time days:', 'Time days:'), + ('time_hour', 'v_rpt_nodeinflow_sum', 'form_feature', 'tab_none', 'Time hour:', 'Time hour:'), + ('totinf_vol', 'v_rpt_nodeinflow_sum', 'form_feature', 'tab_none', 'Totinf vol:', 'Totinf vol:'), + ('avg_flow', 'v_rpt_outfallflow_sum', 'form_feature', 'tab_none', 'Avg flow:', 'Avg flow:'), + ('flow_freq', 'v_rpt_outfallflow_sum', 'form_feature', 'tab_none', 'Flow freq:', 'Flow freq:'), + ('id', 'v_rpt_outfallflow_sum', 'form_feature', 'tab_none', 'Id:', 'Id:'), + ('max_flow', 'v_rpt_outfallflow_sum', 'form_feature', 'tab_none', 'Max flow:', 'Max flow:'), + ('node_id', 'v_rpt_outfallflow_sum', 'form_feature', 'tab_none', 'Node id:', 'Node id:'), + ('node_type', 'v_rpt_outfallflow_sum', 'form_feature', 'tab_none', 'Node type:', 'Node type:'), + ('nodecat_id', 'v_rpt_outfallflow_sum', 'form_feature', 'tab_none', 'Nodecat id:', 'Nodecat id:'), + ('result_id', 'v_rpt_outfallflow_sum', 'form_feature', 'tab_none', 'Result id:', 'Result id:'), + ('sector_id', 'v_rpt_outfallflow_sum', 'form_feature', 'tab_none', 'Sector id:', 'Sector id:'), + ('total_vol', 'v_rpt_outfallflow_sum', 'form_feature', 'tab_none', 'Total vol:', 'Total vol:'), + ('id', 'v_rpt_outfallload_sum', 'form_feature', 'tab_none', 'Id:', 'Id:'), + ('node_id', 'v_rpt_outfallload_sum', 'form_feature', 'tab_none', 'Node id:', 'Node id:'), + ('node_type', 'v_rpt_outfallload_sum', 'form_feature', 'tab_none', 'Node type:', 'Node type:'), + ('nodecat_id', 'v_rpt_outfallload_sum', 'form_feature', 'tab_none', 'Nodecat id:', 'Nodecat id:'), + ('poll_id', 'v_rpt_outfallload_sum', 'form_feature', 'tab_none', 'Poll id:', 'Poll id:'), + ('result_id', 'v_rpt_outfallload_sum', 'form_feature', 'tab_none', 'Result id:', 'Result id:'), + ('sector_id', 'v_rpt_outfallload_sum', 'form_feature', 'tab_none', 'Sector id:', 'Sector id:'), + ('value', 'v_rpt_outfallload_sum', 'form_feature', 'tab_none', 'Value:', 'Value:'), + ('arc_id', 'v_rpt_pumping_sum', 'form_feature', 'tab_none', 'Arc id:', 'Arc id:'), + ('arc_type', 'v_rpt_pumping_sum', 'form_feature', 'tab_none', 'Arc type:', 'Arc type:'), + ('arccat_id', 'v_rpt_pumping_sum', 'form_feature', 'tab_none', 'Arccat id:', 'Arccat id:'), + ('avg_flow', 'v_rpt_pumping_sum', 'form_feature', 'tab_none', 'Avg flow:', 'Avg flow:'), + ('id', 'v_rpt_pumping_sum', 'form_feature', 'tab_none', 'Id:', 'Id:'), + ('max_flow', 'v_rpt_pumping_sum', 'form_feature', 'tab_none', 'Max flow:', 'Max flow:'), + ('min_flow', 'v_rpt_pumping_sum', 'form_feature', 'tab_none', 'Min flow:', 'Min flow:'), + ('num_startup', 'v_rpt_pumping_sum', 'form_feature', 'tab_none', 'Num startup:', 'Num startup:'), + ('percent', 'v_rpt_pumping_sum', 'form_feature', 'tab_none', 'Percent:', 'Percent:'), + ('powus_kwh', 'v_rpt_pumping_sum', 'form_feature', 'tab_none', 'Powus kwh:', 'Powus kwh:'), + ('result_id', 'v_rpt_pumping_sum', 'form_feature', 'tab_none', 'Result id:', 'Result id:'), + ('sector_id', 'v_rpt_pumping_sum', 'form_feature', 'tab_none', 'Sector id:', 'Sector id:'), + ('timoff_max', 'v_rpt_pumping_sum', 'form_feature', 'tab_none', 'Timoff max:', 'Timoff max:'), + ('timoff_min', 'v_rpt_pumping_sum', 'form_feature', 'tab_none', 'Timoff min:', 'Timoff min:'), + ('vol_ltr', 'v_rpt_pumping_sum', 'form_feature', 'tab_none', 'Vol ltr:', 'Vol ltr:'), + ('cont_error', 'v_rpt_qualrouting', 'form_feature', 'tab_none', 'Cont error:', 'Cont error:'), + ('dryw_inf', 'v_rpt_qualrouting', 'form_feature', 'tab_none', 'Dryw inf:', 'Dryw inf:'), + ('ext_inf', 'v_rpt_qualrouting', 'form_feature', 'tab_none', 'Ext inf:', 'Ext inf:'), + ('ext_out', 'v_rpt_qualrouting', 'form_feature', 'tab_none', 'Ext out:', 'Ext out:'), + ('finst_mas', 'v_rpt_qualrouting', 'form_feature', 'tab_none', 'Finst mas:', 'Finst mas:'), + ('ground_inf', 'v_rpt_qualrouting', 'form_feature', 'tab_none', 'Ground inf:', 'Ground inf:'), + ('id', 'v_rpt_qualrouting', 'form_feature', 'tab_none', 'Id:', 'Id:'), + ('initst_mas', 'v_rpt_qualrouting', 'form_feature', 'tab_none', 'Initst mas:', 'Initst mas:'), + ('int_inf', 'v_rpt_qualrouting', 'form_feature', 'tab_none', 'Int inf:', 'Int inf:'), + ('mass_reac', 'v_rpt_qualrouting', 'form_feature', 'tab_none', 'Mass reac:', 'Mass reac:'), + ('poll_id', 'v_rpt_qualrouting', 'form_feature', 'tab_none', 'Poll id:', 'Poll id:'), + ('rdii_inf', 'v_rpt_qualrouting', 'form_feature', 'tab_none', 'Rdii inf:', 'Rdii inf:'), + ('result_id', 'v_rpt_qualrouting', 'form_feature', 'tab_none', 'Result id:', 'Result id:'), + ('wetw_inf', 'v_rpt_qualrouting', 'form_feature', 'tab_none', 'Wetw inf:', 'Wetw inf:'), + ('id', 'v_rpt_rainfall_dep', 'form_feature', 'tab_none', 'Id:', 'Id:'), + ('rdiip_prod', 'v_rpt_rainfall_dep', 'form_feature', 'tab_none', 'Rdiip prod:', 'Rdiip prod:'), + ('rdiir_rat', 'v_rpt_rainfall_dep', 'form_feature', 'tab_none', 'Rdiir rat:', 'Rdiir rat:'), + ('result_id', 'v_rpt_rainfall_dep', 'form_feature', 'tab_none', 'Result id:', 'Result id:'), + ('sewer_rain', 'v_rpt_rainfall_dep', 'form_feature', 'tab_none', 'Sewer rain:', 'Sewer rain:'), + ('id', 'v_rpt_routing_timestep', 'form_feature', 'tab_none', 'Id:', 'Id:'), + ('result_id', 'v_rpt_routing_timestep', 'form_feature', 'tab_none', 'Result id:', 'Result id:'), + ('text', 'v_rpt_routing_timestep', 'form_feature', 'tab_none', 'Text:', 'Text:'), + ('bmp_re', 'v_rpt_runoff_qual', 'form_feature', 'tab_none', 'Bmp re:', 'Bmp re:'), + ('cont_error', 'v_rpt_runoff_qual', 'form_feature', 'tab_none', 'Cont error:', 'Cont error:'), + ('id', 'v_rpt_runoff_qual', 'form_feature', 'tab_none', 'Id:', 'Id:'), + ('infil_loss', 'v_rpt_runoff_qual', 'form_feature', 'tab_none', 'Infil loss:', 'Infil loss:'), + ('init_buil', 'v_rpt_runoff_qual', 'form_feature', 'tab_none', 'Init buil:', 'Init buil:'), + ('poll_id', 'v_rpt_runoff_qual', 'form_feature', 'tab_none', 'Poll id:', 'Poll id:'), + ('rem_buil', 'v_rpt_runoff_qual', 'form_feature', 'tab_none', 'Rem buil:', 'Rem buil:'), + ('result_id', 'v_rpt_runoff_qual', 'form_feature', 'tab_none', 'Result id:', 'Result id:'), + ('surf_buil', 'v_rpt_runoff_qual', 'form_feature', 'tab_none', 'Surf buil:', 'Surf buil:'), + ('surf_runof', 'v_rpt_runoff_qual', 'form_feature', 'tab_none', 'Surf runof:', 'Surf runof:'), + ('sweep_re', 'v_rpt_runoff_qual', 'form_feature', 'tab_none', 'Sweep re:', 'Sweep re:'), + ('wet_dep', 'v_rpt_runoff_qual', 'form_feature', 'tab_none', 'Wet dep:', 'Wet dep:'), + ('cont_error', 'v_rpt_runoff_quant', 'form_feature', 'tab_none', 'Cont error:', 'Cont error:'), + ('evap_loss', 'v_rpt_runoff_quant', 'form_feature', 'tab_none', 'Evap loss:', 'Evap loss:'), + ('finals_sto', 'v_rpt_runoff_quant', 'form_feature', 'tab_none', 'Finals sto:', 'Finals sto:'), + ('finalsw_co', 'v_rpt_runoff_quant', 'form_feature', 'tab_none', 'Finalsw co:', 'Finalsw co:'), + ('id', 'v_rpt_runoff_quant', 'form_feature', 'tab_none', 'Id:', 'Id:'), + ('infil_loss', 'v_rpt_runoff_quant', 'form_feature', 'tab_none', 'Infil loss:', 'Infil loss:'), + ('initsw_co', 'v_rpt_runoff_quant', 'form_feature', 'tab_none', 'Initsw co:', 'Initsw co:'), + ('result_id', 'v_rpt_runoff_quant', 'form_feature', 'tab_none', 'Result id:', 'Result id:'), + ('snow_re', 'v_rpt_runoff_quant', 'form_feature', 'tab_none', 'Snow re:', 'Snow re:'), + ('surf_runof', 'v_rpt_runoff_quant', 'form_feature', 'tab_none', 'Surf runof:', 'Surf runof:'), + ('total_prec', 'v_rpt_runoff_quant', 'form_feature', 'tab_none', 'Total prec:', 'Total prec:'), + ('aver_vol', 'v_rpt_storagevol_sum', 'form_feature', 'tab_none', 'Aver vol:', 'Aver vol:'), + ('avg_full', 'v_rpt_storagevol_sum', 'form_feature', 'tab_none', 'Avg full:', 'Avg full:'), + ('ei_loss', 'v_rpt_storagevol_sum', 'form_feature', 'tab_none', 'Ei loss:', 'Ei loss:'), + ('id', 'v_rpt_storagevol_sum', 'form_feature', 'tab_none', 'Id:', 'Id:'), + ('max_full', 'v_rpt_storagevol_sum', 'form_feature', 'tab_none', 'Max full:', 'Max full:'), + ('max_out', 'v_rpt_storagevol_sum', 'form_feature', 'tab_none', 'Max out:', 'Max out:'), + ('max_vol', 'v_rpt_storagevol_sum', 'form_feature', 'tab_none', 'Max vol:', 'Max vol:'), + ('node_id', 'v_rpt_storagevol_sum', 'form_feature', 'tab_none', 'Node id:', 'Node id:'), + ('node_type', 'v_rpt_storagevol_sum', 'form_feature', 'tab_none', 'Node type:', 'Node type:'), + ('nodecat_id', 'v_rpt_storagevol_sum', 'form_feature', 'tab_none', 'Nodecat id:', 'Nodecat id:'), + ('result_id', 'v_rpt_storagevol_sum', 'form_feature', 'tab_none', 'Result id:', 'Result id:'), + ('sector_id', 'v_rpt_storagevol_sum', 'form_feature', 'tab_none', 'Sector id:', 'Sector id:'), + ('time_days', 'v_rpt_storagevol_sum', 'form_feature', 'tab_none', 'Time days:', 'Time days:'), + ('time_hour', 'v_rpt_storagevol_sum', 'form_feature', 'tab_none', 'Time hour:', 'Time hour:'), + ('depth', 'v_rpt_subcatchrunoff_sum', 'form_feature', 'tab_none', 'Depth:', 'Depth:'), + ('id', 'v_rpt_subcatchrunoff_sum', 'form_feature', 'tab_none', 'Id:', 'Id:'), + ('peak_runof', 'v_rpt_subcatchrunoff_sum', 'form_feature', 'tab_none', 'Peak runof:', 'Peak runof:'), + ('result_id', 'v_rpt_subcatchrunoff_sum', 'form_feature', 'tab_none', 'Result id:', 'Result id:'), + ('runoff_coe', 'v_rpt_subcatchrunoff_sum', 'form_feature', 'tab_none', 'Runoff coe:', 'Runoff coe:'), + ('sector_id', 'v_rpt_subcatchrunoff_sum', 'form_feature', 'tab_none', 'Sector id:', 'Sector id:'), + ('subc_id', 'v_rpt_subcatchrunoff_sum', 'form_feature', 'tab_none', 'Subc id:', 'Subc id:'), + ('tot_evap', 'v_rpt_subcatchrunoff_sum', 'form_feature', 'tab_none', 'Tot evap:', 'Tot evap:'), + ('tot_infil', 'v_rpt_subcatchrunoff_sum', 'form_feature', 'tab_none', 'Tot infil:', 'Tot infil:'), + ('tot_precip', 'v_rpt_subcatchrunoff_sum', 'form_feature', 'tab_none', 'Tot precip:', 'Tot precip:'), + ('tot_runoff', 'v_rpt_subcatchrunoff_sum', 'form_feature', 'tab_none', 'Tot runoff:', 'Tot runoff:'), + ('tot_runofl', 'v_rpt_subcatchrunoff_sum', 'form_feature', 'tab_none', 'Tot runofl:', 'Tot runofl:'), + ('tot_runon', 'v_rpt_subcatchrunoff_sum', 'form_feature', 'tab_none', 'Tot runon:', 'Tot runon:'), + ('vel', 'v_rpt_subcatchrunoff_sum', 'form_feature', 'tab_none', 'Vel:', 'Vel:'), + ('vhmax', 'v_rpt_subcatchrunoff_sum', 'form_feature', 'tab_none', 'Vhmax:', 'Vhmax:'), + ('vxmax', 'v_rpt_subcatchrunoff_sum', 'form_feature', 'tab_none', 'Vxmax:', 'Vxmax:'), + ('vymax', 'v_rpt_subcatchrunoff_sum', 'form_feature', 'tab_none', 'Vymax:', 'Vymax:'), + ('id', 'v_rpt_subcatchwashoff_sum', 'form_feature', 'tab_none', 'Id:', 'Id:'), + ('poll_id', 'v_rpt_subcatchwashoff_sum', 'form_feature', 'tab_none', 'Poll id:', 'Poll id:'), + ('result_id', 'v_rpt_subcatchwashoff_sum', 'form_feature', 'tab_none', 'Result id:', 'Result id:'), + ('sector_id', 'v_rpt_subcatchwashoff_sum', 'form_feature', 'tab_none', 'Sector id:', 'Sector id:'), + ('subc_id', 'v_rpt_subcatchwashoff_sum', 'form_feature', 'tab_none', 'Subc id:', 'Subc id:'), + ('value', 'v_rpt_subcatchwashoff_sum', 'form_feature', 'tab_none', 'Value:', 'Value:'), + ('id', 'v_rpt_timestep_critelem', 'form_feature', 'tab_none', 'Id:', 'Id:'), + ('result_id', 'v_rpt_timestep_critelem', 'form_feature', 'tab_none', 'Result id:', 'Result id:'), + ('text', 'v_rpt_timestep_critelem', 'form_feature', 'tab_none', 'Text:', 'Text:'), + ('active', 've_cat_dwf', 'form_feature', 'tab_none', 'Active:', 'Active:'), + ('enddate', 've_cat_dwf', 'form_feature', 'tab_none', 'Enddate:', 'Enddate:'), + ('expl_id', 've_cat_dwf', 'form_feature', 'tab_none', 'Exploitation:', 'Exploitation:'), + ('id', 've_cat_dwf', 'form_feature', 'tab_none', 'Id:', 'Id:'), + ('idval', 've_cat_dwf', 'form_feature', 'tab_none', 'Idval:', 'Idval:'), + ('log', 've_cat_dwf', 'form_feature', 'tab_none', 'Log:', 'Log:'), + ('observ', 've_cat_dwf', 'form_feature', 'tab_none', 'Observ:', 'Observ:'), + ('startdate', 've_cat_dwf', 'form_feature', 'tab_none', 'Startdate:', 'Startdate:'), + ('active', 've_cat_feature_gully', 'form_feature', 'tab_none', 'Active:', 'Active:'), + ('descript', 've_cat_feature_gully', 'form_feature', 'tab_none', 'Descript:', 'Descript:'), + ('epa_default', 've_cat_feature_gully', 'form_feature', 'tab_none', 'Epa default:', 'Epa default:'), + ('id', 've_cat_feature_gully', 'form_feature', 'tab_none', 'Id:', 'Id:'), + ('link_path', 've_cat_feature_gully', 'form_feature', 'tab_none', 'Link path:', 'Link path:'), + ('shortcut_key', 've_cat_feature_gully', 'form_feature', 'tab_none', 'Shortcut:', 'Shortcut:'), + ('system_id', 've_cat_feature_gully', 'form_feature', 'tab_none', 'Sys type:', 'Sys type:'), + ('double_geom', 've_cat_feature_node', 'form_feature', 'tab_none', 'Double geom:', 'Double geom:'), + ('isexitupperintro', 've_cat_feature_node', 'form_feature', 'tab_none', 'Exit upper intro:', 'Exit upper intro:'), + ('active', 've_cat_hydrology', 'form_feature', 'tab_none', 'Active:', 'Active:'), + ('expl_id', 've_cat_hydrology', 'form_feature', 'tab_none', 'Exploitation:', 'Exploitation:'), + ('hydrology_id', 've_cat_hydrology', 'form_feature', 'tab_none', 'Hydrology id:', 'Hydrology id:'), + ('infiltration', 've_cat_hydrology', 'form_feature', 'tab_none', 'Infiltration:', 'Infiltration:'), + ('log', 've_cat_hydrology', 'form_feature', 'tab_none', 'Log:', 'Log:'), + ('name', 've_cat_hydrology', 'form_feature', 'tab_none', 'Name:', 'Name:'), + ('text', 've_cat_hydrology', 'form_feature', 'tab_none', 'Text:', 'Text:'), + ('active', 've_drainzone', 'form_feature', 'tab_none', 'Active:', 'Active:'), + ('addparam', 've_drainzone', 'form_feature', 'tab_none', 'Addparam:', 'Addparam:'), + ('code', 've_drainzone', 'form_feature', 'tab_none', 'Code:', 'Code:'), + ('created_at', 've_drainzone', 'form_feature', 'tab_none', 'Created at:', 'Created at:'), + ('created_by', 've_drainzone', 'form_feature', 'tab_none', 'Created by:', 'Created by:'), + ('descript', 've_drainzone', 'form_feature', 'tab_none', 'Descript:', 'Descript:'), + ('drainzone_id', 've_drainzone', 'form_feature', 'tab_none', 'Drainzone id:', 'Drainzone id:'), + ('drainzone_type', 've_drainzone', 'form_feature', 'tab_none', 'Drainzone type:', 'Drainzone type:'), + ('expl_id', 've_drainzone', 'form_feature', 'tab_none', 'Expl id:', 'Expl id:'), + ('graphconfig', 've_drainzone', 'form_feature', 'tab_none', 'Graphconfig:', 'Graphconfig:'), + ('link', 've_drainzone', 'form_feature', 'tab_none', 'Link:', 'Link:'), + ('lock_level', 've_drainzone', 'form_feature', 'tab_none', 'Lock level:', 'Lock level:'), + ('muni_id', 've_drainzone', 'form_feature', 'tab_none', 'Muni id:', 'Muni id:'), + ('name', 've_drainzone', 'form_feature', 'tab_none', 'Name:', 'Name:'), + ('sector_id', 've_drainzone', 'form_feature', 'tab_none', 'Sector id:', 'Sector id:'), + ('stylesheet', 've_drainzone', 'form_feature', 'tab_none', 'Stylesheet:', 'Stylesheet:'), + ('updated_at', 've_drainzone', 'form_feature', 'tab_none', 'Updated at:', 'Updated at:'), + ('updated_by', 've_drainzone', 'form_feature', 'tab_none', 'Updated by:', 'Updated by:'), + ('active', 've_dwfzone', 'form_feature', 'tab_none', 'Active:', 'Active:'), + ('addparam', 've_dwfzone', 'form_feature', 'tab_none', 'Addparam:', 'Addparam:'), + ('code', 've_dwfzone', 'form_feature', 'tab_none', 'Code:', 'Code:'), + ('created_at', 've_dwfzone', 'form_feature', 'tab_none', 'Created at:', 'Created at:'), + ('created_by', 've_dwfzone', 'form_feature', 'tab_none', 'Created by:', 'Created by:'), + ('descript', 've_dwfzone', 'form_feature', 'tab_none', 'Descript:', 'Descript:'), + ('drainzone_id', 've_dwfzone', 'form_feature', 'tab_none', 'Drainzone:', 'Drainzone:'), + ('dwfzone_id', 've_dwfzone', 'form_feature', 'tab_none', 'Dwfzone id:', 'Dwfzone id:'), + ('dwfzone_type', 've_dwfzone', 'form_feature', 'tab_none', 'Dwfzone type:', 'Dwfzone type:'), + ('expl_id', 've_dwfzone', 'form_feature', 'tab_none', 'Expl id:', 'Expl id:'), + ('graphconfig', 've_dwfzone', 'form_feature', 'tab_none', 'Graphconfig:', 'Graphconfig:'), + ('link', 've_dwfzone', 'form_feature', 'tab_none', 'Link:', 'Link:'), + ('lock_level', 've_dwfzone', 'form_feature', 'tab_none', 'Lock level:', 'Lock level:'), + ('muni_id', 've_dwfzone', 'form_feature', 'tab_none', 'Muni id:', 'Muni id:'), + ('name', 've_dwfzone', 'form_feature', 'tab_none', 'Name:', 'Name:'), + ('sector_id', 've_dwfzone', 'form_feature', 'tab_none', 'Sector id:', 'Sector id:'), + ('stylesheet', 've_dwfzone', 'form_feature', 'tab_none', 'Stylesheet:', 'Stylesheet:'), + ('updated_at', 've_dwfzone', 'form_feature', 'tab_none', 'Updated at:', 'Updated at:'), + ('updated_by', 've_dwfzone', 'form_feature', 'tab_none', 'Updated by:', 'Updated by:'), + ('barrels', 've_epa_conduit', 'form_feature', 'tab_epa', 'Barrels:', 'Barrels:'), + ('culvert', 've_epa_conduit', 'form_feature', 'tab_epa', 'Culvert:', 'Culvert:'), + ('custom_n', 've_epa_conduit', 'form_feature', 'tab_epa', 'Custom n:', 'Custom n:'), + ('flap', 've_epa_conduit', 'form_feature', 'tab_epa', 'Flap:', 'Flap:'), + ('kavg', 've_epa_conduit', 'form_feature', 'tab_epa', 'Kavg:', 'Kavg:'), + ('kentry', 've_epa_conduit', 'form_feature', 'tab_epa', 'Kentry:', 'Kentry:'), + ('kexit', 've_epa_conduit', 'form_feature', 'tab_epa', 'Kexit:', 'Kexit:'), + ('max_flow', 've_epa_conduit', 'form_feature', 'tab_epa', 'Max flow:', 'Max flow:'), + ('max_veloc', 've_epa_conduit', 'form_feature', 'tab_epa', 'Max veloc:', 'Max veloc:'), + ('mfull_depth', 've_epa_conduit', 'form_feature', 'tab_epa', 'Mfull depth:', 'Mfull depth:'), + ('mfull_flow', 've_epa_conduit', 'form_feature', 'tab_epa', 'Mfull flow:', 'Mfull flow:'), + ('q0', 've_epa_conduit', 'form_feature', 'tab_epa', 'Q0:', 'Q0:'), + ('qmax', 've_epa_conduit', 'form_feature', 'tab_epa', 'Qmax:', 'Qmax:'), + ('seepage', 've_epa_conduit', 'form_feature', 'tab_epa', 'Seepage:', 'Seepage:'), + ('time_days', 've_epa_conduit', 'form_feature', 'tab_epa', 'Time days:', 'Time days:'), + ('time_hour', 've_epa_conduit', 'form_feature', 'tab_epa', 'Time hour:', 'Time hour:'), + ('cd', 've_epa_frorifice', 'form_feature', 'tab_epa', 'Discharge Coefficient:', 'Discharge Coefficient'), + ('day_max', 've_epa_frorifice', 'form_feature', 'tab_epa', 'Day Maximum:', 'Day Maximum'), + ('day_min', 've_epa_frorifice', 'form_feature', 'tab_epa', 'Day Minimum:', 'Day Minimum'), + ('flap', 've_epa_frorifice', 'form_feature', 'tab_epa', 'Flap:', 'Flap'), + ('geom1', 've_epa_frorifice', 'form_feature', 'tab_epa', 'Geom1:', 'Geom1'), + ('geom2', 've_epa_frorifice', 'form_feature', 'tab_epa', 'Geom2:', 'Geom2'), + ('geom3', 've_epa_frorifice', 'form_feature', 'tab_epa', 'Geom3:', 'Geom3'), + ('geom4', 've_epa_frorifice', 'form_feature', 'tab_epa', 'Geom4:', 'Geom4'), + ('max_flow', 've_epa_frorifice', 'form_feature', 'tab_epa', 'Maximum Flow:', 'Maximum Flow'), + ('max_hr', 've_epa_frorifice', 'form_feature', 'tab_epa', 'Maximum Hydraulic Radius:', 'Maximum Hydraulic Radius'), + ('max_shear', 've_epa_frorifice', 'form_feature', 'tab_epa', 'Maximum Shear:', 'Maximum Shear'), + ('max_slope', 've_epa_frorifice', 'form_feature', 'tab_epa', 'Maximum Slope:', 'Maximum Slope'), + ('max_veloc', 've_epa_frorifice', 'form_feature', 'tab_epa', 'Maximum Velocity:', 'Maximum Velocity'), + ('mfull_depth', 've_epa_frorifice', 'form_feature', 'tab_epa', 'Full Depth:', 'Full Depth'), + ('mfull_flow', 've_epa_frorifice', 'form_feature', 'tab_epa', 'Full Flow:', 'Full Flow'), + ('min_shear', 've_epa_frorifice', 'form_feature', 'tab_epa', 'Minimum Shear:', 'Minimum Shear'), + ('offsetval', 've_epa_frorifice', 'form_feature', 'tab_epa', 'Offset Value:', 'Offset Value'), + ('orate', 've_epa_frorifice', 'form_feature', 'tab_epa', 'Orifice Rate:', 'Orifice Rate'), + ('orifice_type', 've_epa_frorifice', 'form_feature', 'tab_epa', 'Orifice Type:', 'Orifice Type'), + ('shape', 've_epa_frorifice', 'form_feature', 'tab_epa', 'Shape:', 'Shape'), + ('time_days', 've_epa_frorifice', 'form_feature', 'tab_epa', 'Time Days:', 'Time Days'), + ('time_hour', 've_epa_frorifice', 'form_feature', 'tab_epa', 'Time Hour:', 'Time Hour'), + ('time_max', 've_epa_frorifice', 'form_feature', 'tab_epa', 'Time Maximum:', 'Time Maximum'), + ('time_min', 've_epa_frorifice', 'form_feature', 'tab_epa', 'Time Minimum:', 'Time Minimum'), + ('cd1', 've_epa_froutlet', 'form_feature', 'tab_epa', 'Discharge Coefficient 1:', 'Discharge Coefficient 1'), + ('cd2', 've_epa_froutlet', 'form_feature', 'tab_epa', 'Discharge Coefficient 2:', 'Discharge Coefficient 2'), + ('curve_id', 've_epa_froutlet', 'form_feature', 'tab_epa', 'Curve Id:', 'Curve Id'), + ('day_max', 've_epa_froutlet', 'form_feature', 'tab_epa', 'Day Maximum:', 'Day Maximum'), + ('day_min', 've_epa_froutlet', 'form_feature', 'tab_epa', 'Day Minimum:', 'Day Minimum'), + ('flap', 've_epa_froutlet', 'form_feature', 'tab_epa', 'Flap:', 'Flap'), + ('max_flow', 've_epa_froutlet', 'form_feature', 'tab_epa', 'Maximum Flow:', 'Maximum Flow'), + ('max_hr', 've_epa_froutlet', 'form_feature', 'tab_epa', 'Maximum Hydraulic Radius:', 'Maximum Hydraulic Radius'), + ('max_shear', 've_epa_froutlet', 'form_feature', 'tab_epa', 'Maximum Shear:', 'Maximum Shear'), + ('max_slope', 've_epa_froutlet', 'form_feature', 'tab_epa', 'Maximum Slope:', 'Maximum Slope'), + ('max_veloc', 've_epa_froutlet', 'form_feature', 'tab_epa', 'Maximum Velocity:', 'Maximum Velocity'), + ('mfull_dept', 've_epa_froutlet', 'form_feature', 'tab_epa', 'Full Depth:', 'Full Depth'), + ('mfull_flow', 've_epa_froutlet', 'form_feature', 'tab_epa', 'Full Flow:', 'Full Flow'), + ('min_shear', 've_epa_froutlet', 'form_feature', 'tab_epa', 'Minimum Shear:', 'Minimum Shear'), + ('offsetval', 've_epa_froutlet', 'form_feature', 'tab_epa', 'Offset Value:', 'Offset Value'), + ('outlet_type', 've_epa_froutlet', 'form_feature', 'tab_epa', 'Outlet Type:', 'Outlet Type'), + ('time_days', 've_epa_froutlet', 'form_feature', 'tab_epa', 'Time Days:', 'Time Days'), + ('time_hour', 've_epa_froutlet', 'form_feature', 'tab_epa', 'Time Hour:', 'Time Hour'), + ('time_max', 've_epa_froutlet', 'form_feature', 'tab_epa', 'Time Maximum:', 'Time Maximum'), + ('time_min', 've_epa_froutlet', 'form_feature', 'tab_epa', 'Time Minimum:', 'Time Minimum'), + ('avg_flow', 've_epa_frpump', 'form_feature', 'tab_epa', 'Average Flow:', 'Average Flow'), + ('curve_id', 've_epa_frpump', 'form_feature', 'tab_epa', 'Curve Id:', 'Curve Id'), + ('max_flow', 've_epa_frpump', 'form_feature', 'tab_epa', 'Maximum Flow:', 'Maximum Flow'), + ('min_flow', 've_epa_frpump', 'form_feature', 'tab_epa', 'Minimum Flow:', 'Minimum Flow'), + ('num_startup', 've_epa_frpump', 'form_feature', 'tab_epa', 'Number of Startups:', 'Number of Startups'), + ('percent', 've_epa_frpump', 'form_feature', 'tab_epa', 'Percent:', 'Percent'), + ('powus_kwh', 've_epa_frpump', 'form_feature', 'tab_epa', 'Power Usage (kWh):', 'Power Usage (kWh)'), + ('shutoff', 've_epa_frpump', 'form_feature', 'tab_epa', 'Shutoff:', 'Shutoff'), + ('startup', 've_epa_frpump', 'form_feature', 'tab_epa', 'Startup:', 'Startup'), + ('timoff_max', 've_epa_frpump', 'form_feature', 'tab_epa', 'Time Off Maximum:', 'Time Off Maximum'), + ('timoff_min', 've_epa_frpump', 'form_feature', 'tab_epa', 'Time Off Minimum:', 'Time Off Minimum'), + ('vol_ltr', 've_epa_frpump', 'form_feature', 'tab_epa', 'Volume (Liters):', 'Volume (Liters)'), + ('cd', 've_epa_frweir', 'form_feature', 'tab_epa', 'Discharge Coefficient:', 'Discharge Coefficient'), + ('cd2', 've_epa_frweir', 'form_feature', 'tab_epa', 'Discharge Coefficient 2:', 'Discharge Coefficient 2'), + ('coef_curve', 've_epa_frweir', 'form_feature', 'tab_epa', 'Coefficient Curve:', 'Coefficient Curve'), + ('day_max', 've_epa_frweir', 'form_feature', 'tab_epa', 'Day Maximum:', 'Day Maximum'), + ('day_min', 've_epa_frweir', 'form_feature', 'tab_epa', 'Day Minimum:', 'Day Minimum'), + ('ec', 've_epa_frweir', 'form_feature', 'tab_epa', 'End Contractions:', 'End Contractions'), + ('flap', 've_epa_frweir', 'form_feature', 'tab_epa', 'Flap:', 'Flap'), + ('geom1', 've_epa_frweir', 'form_feature', 'tab_epa', 'Geom1:', 'Geom1'), + ('geom2', 've_epa_frweir', 'form_feature', 'tab_epa', 'Geom2:', 'Geom2'), + ('geom3', 've_epa_frweir', 'form_feature', 'tab_epa', 'Geom3:', 'Geom3'), + ('geom4', 've_epa_frweir', 'form_feature', 'tab_epa', 'Geom4:', 'Geom4'), + ('max_flow', 've_epa_frweir', 'form_feature', 'tab_epa', 'Maximum Flow:', 'Maximum Flow'), + ('max_hr', 've_epa_frweir', 'form_feature', 'tab_epa', 'Maximum Hydraulic Radius:', 'Maximum Hydraulic Radius'), + ('max_shear', 've_epa_frweir', 'form_feature', 'tab_epa', 'Maximum Shear:', 'Maximum Shear'), + ('max_slope', 've_epa_frweir', 'form_feature', 'tab_epa', 'Maximum Slope:', 'Maximum Slope'), + ('max_veloc', 've_epa_frweir', 'form_feature', 'tab_epa', 'Maximum Velocity:', 'Maximum Velocity'), + ('mfull_dept', 've_epa_frweir', 'form_feature', 'tab_epa', 'Full Depth:', 'Full Depth'), + ('mfull_flow', 've_epa_frweir', 'form_feature', 'tab_epa', 'Full Flow:', 'Full Flow'), + ('min_shear', 've_epa_frweir', 'form_feature', 'tab_epa', 'Minimum Shear:', 'Minimum Shear'), + ('offsetval', 've_epa_frweir', 'form_feature', 'tab_epa', 'Offset Value:', 'Offset Value'), + ('road_surf', 've_epa_frweir', 'form_feature', 'tab_epa', 'Road Surface:', 'Road Surface'), + ('road_width', 've_epa_frweir', 'form_feature', 'tab_epa', 'Road Width:', 'Road Width'), + ('surcharge', 've_epa_frweir', 'form_feature', 'tab_epa', 'Surcharge:', 'Surcharge'), + ('time_days', 've_epa_frweir', 'form_feature', 'tab_epa', 'Time Days:', 'Time Days'), + ('time_hour', 've_epa_frweir', 'form_feature', 'tab_epa', 'Time Hour:', 'Time Hour'), + ('time_max', 've_epa_frweir', 'form_feature', 'tab_epa', 'Time Maximum:', 'Time Maximum'), + ('time_min', 've_epa_frweir', 'form_feature', 'tab_epa', 'Time Minimum:', 'Time Minimum'), + ('weir_type', 've_epa_frweir', 'form_feature', 'tab_epa', 'Weir Type:', 'Weir Type'), + ('custom_a_param', 've_epa_gully', 'form_feature', 'tab_epa', 'Custom a param:', 'Custom a param:'), + ('custom_b_param', 've_epa_gully', 'form_feature', 'tab_epa', 'Custom b param:', 'Custom b param:'), + ('custom_depth', 've_epa_gully', 'form_feature', 'tab_epa', 'Custom depth:', 'Custom depth:'), + ('custom_length', 've_epa_gully', 'form_feature', 'tab_epa', 'Custom length:', 'Custom length:'), + ('custom_top_elev', 've_epa_gully', 'form_feature', 'tab_epa', 'Custom top elev:', 'Custom top elev:'), + ('custom_width', 've_epa_gully', 'form_feature', 'tab_epa', 'Custom width:', 'Custom width:'), + ('efficiency', 've_epa_gully', 'form_feature', 'tab_epa', 'Efficiency:', 'Efficiency:'), + ('gully_method', 've_epa_gully', 'form_feature', 'tab_epa', 'Method:', 'method'), + ('orifice_cd', 've_epa_gully', 'form_feature', 'tab_epa', 'Orifice cd:', 'Orifice cd:'), + ('outlet_type', 've_epa_gully', 'form_feature', 'tab_epa', 'Outlet type:', 'Outlet type:'), + ('weir_cd', 've_epa_gully', 'form_feature', 'tab_epa', 'Weir cd:', 'Weir cd:'), + ('apond', 've_epa_inlet', 'form_feature', 'tab_epa', 'Apond:', 'Apond:'), + ('cd1', 've_epa_inlet', 'form_feature', 'tab_epa', 'Cd1:', 'Cd1:'), + ('cd2', 've_epa_inlet', 'form_feature', 'tab_epa', 'Cd2:', 'Cd2:'), + ('custom_depth', 've_epa_inlet', 'form_feature', 'tab_epa', 'Custom depth:', 'Custom depth:'), + ('custom_top_elev', 've_epa_inlet', 'form_feature', 'tab_epa', 'Custom top elev:', 'Custom top elev:'), + ('depth_average', 've_epa_inlet', 'form_feature', 'tab_epa', 'Average depth:', 'Average depth'), + ('depth_max', 've_epa_inlet', 'form_feature', 'tab_epa', 'Max depth:', 'Max depth'), + ('depth_max_day', 've_epa_inlet', 'form_feature', 'tab_epa', 'Max depth/day:', 'Max depth per day'), + ('depth_max_hour', 've_epa_inlet', 'form_feature', 'tab_epa', 'Max depth/hour:', 'Max depth per hour'), + ('efficiency', 've_epa_inlet', 'form_feature', 'tab_epa', 'Efficiency:', 'Efficiency:'), + ('flood_hour', 've_epa_inlet', 'form_feature', 'tab_epa', 'Flood hour:', 'Flood hour'), + ('flood_max_ponded', 've_epa_inlet', 'form_feature', 'tab_epa', 'Max ponded flood :', 'Max ponded flood'), + ('flood_max_rate', 've_epa_inlet', 'form_feature', 'tab_epa', 'Maximum food rate:', 'Maximum food rate'), + ('flood_total', 've_epa_inlet', 'form_feature', 'tab_epa', 'Total flood:', 'Total flood'), + ('gully_method', 've_epa_inlet', 'form_feature', 'tab_epa', 'Gully method:', 'Gully method:'), + ('inlet_length', 've_epa_inlet', 'form_feature', 'tab_epa', 'Inlet length:', 'Inlet length:'), + ('inlet_type', 've_epa_inlet', 'form_feature', 'tab_epa', 'Inlet type:', 'Inlet type:'), + ('inlet_width', 've_epa_inlet', 'form_feature', 'tab_epa', 'Inlet width:', 'Inlet width:'), + ('outlet_type', 've_epa_inlet', 'form_feature', 'tab_epa', 'Outlet type:', 'Outlet type:'), + ('surcharge_hour', 've_epa_inlet', 'form_feature', 'tab_epa', 'Surcharge/hour:', 'Surcharge per hour'), + ('surgarge_max_height', 've_epa_inlet', 'form_feature', 'tab_epa', 'Max height of surgarge:', 'Max height of surgarge'), + ('time_day', 've_epa_inlet', 'form_feature', 'tab_epa', 'Day:', 'Day'), + ('time_hour', 've_epa_inlet', 'form_feature', 'tab_epa', 'Hour:', 'Hour'), + ('y0', 've_epa_inlet', 'form_feature', 'tab_epa', 'Y0:', 'Y0:'), + ('ysur', 've_epa_inlet', 'form_feature', 'tab_epa', 'Ysur:', 'Ysur:'), + ('apond', 've_epa_junction', 'form_feature', 'tab_epa', 'Apond:', 'Apond:'), + ('depth_average', 've_epa_junction', 'form_feature', 'tab_epa', 'Average depth:', 'Average depth'), + ('depth_max', 've_epa_junction', 'form_feature', 'tab_epa', 'Max depth:', 'Max depth'), + ('depth_max_day', 've_epa_junction', 'form_feature', 'tab_epa', 'Max depth/day:', 'Max depth per day'), + ('depth_max_hour', 've_epa_junction', 'form_feature', 'tab_epa', 'Max depth/hour:', 'Max depth per hour'), + ('flood_hour', 've_epa_junction', 'form_feature', 'tab_epa', 'Flood hour:', 'Flood hour'), + ('flood_max_ponded', 've_epa_junction', 'form_feature', 'tab_epa', 'Max ponded flood :', 'Max ponded flood'), + ('flood_max_rate', 've_epa_junction', 'form_feature', 'tab_epa', 'Maximum food rate:', 'Maximum food rate'), + ('flood_total', 've_epa_junction', 'form_feature', 'tab_epa', 'Total flood:', 'Total flood'), + ('outfallparam', 've_epa_junction', 'form_feature', 'tab_epa', 'Outfallparam:', 'Outfallparam:'), + ('surcharge_hour', 've_epa_junction', 'form_feature', 'tab_epa', 'Surcharge/hour:', 'Surcharge per hour'), + ('surgarge_max_height', 've_epa_junction', 'form_feature', 'tab_epa', 'Max height of surgarge:', 'Max height of surgarge'), + ('time_day', 've_epa_junction', 'form_feature', 'tab_epa', 'Day:', 'Day'), + ('time_hour', 've_epa_junction', 'form_feature', 'tab_epa', 'Hour:', 'Hour'), + ('y0', 've_epa_junction', 'form_feature', 'tab_epa', 'Y0:', 'Y0:'), + ('ysur', 've_epa_junction', 'form_feature', 'tab_epa', 'Ysur:', 'Ysur:'), + ('apond', 've_epa_netgully', 'form_feature', 'tab_epa', 'Apond:', 'Apond:'), + ('custom_a_param', 've_epa_netgully', 'form_feature', 'tab_epa', 'Custom a param:', 'Custom a param:'), + ('custom_b_param', 've_epa_netgully', 'form_feature', 'tab_epa', 'Custom b param:', 'Custom b param:'), + ('custom_depth', 've_epa_netgully', 'form_feature', 'tab_epa', 'Custom depth:', 'Custom depth:'), + ('custom_length', 've_epa_netgully', 'form_feature', 'tab_epa', 'Custom length:', 'Custom length:'), + ('custom_width', 've_epa_netgully', 'form_feature', 'tab_epa', 'Custom width:', 'Custom width:'), + ('efficiency', 've_epa_netgully', 'form_feature', 'tab_epa', 'Efficiency:', 'Efficiency:'), + ('gully_method', 've_epa_netgully', 'form_feature', 'tab_epa', 'Method:', 'method'), + ('orifice_cd', 've_epa_netgully', 'form_feature', 'tab_epa', 'Orifice cd:', 'Orifice cd:'), + ('outlet_type', 've_epa_netgully', 'form_feature', 'tab_epa', 'Outlet type:', 'Outlet type:'), + ('weir_cd', 've_epa_netgully', 'form_feature', 'tab_epa', 'Weir cd:', 'Weir cd:'), + ('y0', 've_epa_netgully', 'form_feature', 'tab_epa', 'Y0:', 'Y0:'), + ('ysur', 've_epa_netgully', 'form_feature', 'tab_epa', 'Ysur:', 'Ysur:'), + ('cd', 've_epa_orifice', 'form_feature', 'tab_epa', 'Cd:', 'Cd:'), + ('close_time', 've_epa_orifice', 'form_feature', 'tab_epa', 'Close time:', 'Close time:'), + ('flap', 've_epa_orifice', 'form_feature', 'tab_epa', 'Flap:', 'Flap:'), + ('geom1', 've_epa_orifice', 'form_feature', 'tab_epa', 'Geom1:', 'Geom1:'), + ('geom2', 've_epa_orifice', 'form_feature', 'tab_epa', 'Geom2:', 'Geom2:'), + ('geom3', 've_epa_orifice', 'form_feature', 'tab_epa', 'Geom3:', 'Geom3:'), + ('geom4', 've_epa_orifice', 'form_feature', 'tab_epa', 'Geom4:', 'Geom4:'), + ('max_flow', 've_epa_orifice', 'form_feature', 'tab_epa', 'Max flow:', 'Max flow:'), + ('max_veloc', 've_epa_orifice', 'form_feature', 'tab_epa', 'Max veloc:', 'Max veloc:'), + ('mfull_depth', 've_epa_orifice', 'form_feature', 'tab_epa', 'Mfull depth:', 'Mfull depth:'), + ('mfull_flow', 've_epa_orifice', 'form_feature', 'tab_epa', 'Mfull flow:', 'Mfull flow:'), + ('offsetval', 've_epa_orifice', 'form_feature', 'tab_epa', 'Offset:', 'Offset:'), + ('orate', 've_epa_orifice', 'form_feature', 'tab_epa', 'Orate:', 'Orate:'), + ('ori_type', 've_epa_orifice', 'form_feature', 'tab_epa', 'Ori type:', 'Ori type:'), + ('shape', 've_epa_orifice', 'form_feature', 'tab_epa', 'Shape:', 'Shape:'), + ('time_days', 've_epa_orifice', 'form_feature', 'tab_epa', 'Time days:', 'Time days:'), + ('time_hour', 've_epa_orifice', 'form_feature', 'tab_epa', 'Time hour:', 'Time hour:'), + ('avg_flow', 've_epa_outfall', 'form_feature', 'tab_epa', 'Average flow:', 'Average flow'), + ('curve_id', 've_epa_outfall', 'form_feature', 'tab_epa', 'Curve id:', 'Curve id:'), + ('flow_freq', 've_epa_outfall', 'form_feature', 'tab_epa', 'Flow frequency:', 'Flow frequency'), + ('gate', 've_epa_outfall', 'form_feature', 'tab_epa', 'Gate:', 'Gate:'), + ('max_flow', 've_epa_outfall', 'form_feature', 'tab_epa', 'Max flow:', 'Max flow'), + ('outfall_type', 've_epa_outfall', 'form_feature', 'tab_epa', 'Outfall type:', 'Outfall type'), + ('stage', 've_epa_outfall', 'form_feature', 'tab_epa', 'Stage:', 'Stage:'), + ('timser_id', 've_epa_outfall', 'form_feature', 'tab_epa', 'Timser id:', 'Timser id:'), + ('total_vol', 've_epa_outfall', 'form_feature', 'tab_epa', 'Total volume:', 'Total volume'), + ('cd1', 've_epa_outlet', 'form_feature', 'tab_epa', 'Cd1:', 'Cd1:'), + ('cd2', 've_epa_outlet', 'form_feature', 'tab_epa', 'Cd2:', 'Cd2:'), + ('curve_id', 've_epa_outlet', 'form_feature', 'tab_epa', 'Curve id:', 'Curve id:'), + ('flap', 've_epa_outlet', 'form_feature', 'tab_epa', 'Flap:', 'Flap:'), + ('max_flow', 've_epa_outlet', 'form_feature', 'tab_epa', 'Max flow:', 'Max flow:'), + ('max_veloc', 've_epa_outlet', 'form_feature', 'tab_epa', 'Max veloc:', 'Max veloc:'), + ('mfull_depth', 've_epa_outlet', 'form_feature', 'tab_epa', 'Mfull depth:', 'Mfull depth:'), + ('mfull_flow', 've_epa_outlet', 'form_feature', 'tab_epa', 'Mfull flow:', 'Mfull flow:'), + ('offsetval', 've_epa_outlet', 'form_feature', 'tab_epa', 'Offset:', 'Offset:'), + ('outlet_type', 've_epa_outlet', 'form_feature', 'tab_epa', 'Outlet type:', 'Outlet type:'), + ('time_days', 've_epa_outlet', 'form_feature', 'tab_epa', 'Time days:', 'Time days:'), + ('time_hour', 've_epa_outlet', 'form_feature', 'tab_epa', 'Time hour:', 'Time hour:'), + ('custom_a_param', 've_epa_pgully', 'form_feature', 'tab_epa', 'Custom a parameter:', 'Custom a parameter'), + ('custom_b_param', 've_epa_pgully', 'form_feature', 'tab_epa', 'Custom b parameter:', 'Custom b parameter'), + ('custom_depth', 've_epa_pgully', 'form_feature', 'tab_epa', 'Custom depth:', 'Custom depth'), + ('custom_length', 've_epa_pgully', 'form_feature', 'tab_epa', 'Custom length:', 'Custom length:'), + ('custom_top_elev', 've_epa_pgully', 'form_feature', 'tab_epa', 'Custom top elev:', 'Custom top elev:'), + ('custom_width', 've_epa_pgully', 'form_feature', 'tab_epa', 'Custom width:', 'Custom width'), + ('efficiency', 've_epa_pgully', 'form_feature', 'tab_epa', 'Efficiency:', 'Efficiency'), + ('gully_method', 've_epa_pgully', 'form_feature', 'tab_epa', 'Method:', 'Method'), + ('orifice_cd', 've_epa_pgully', 'form_feature', 'tab_epa', 'Orifice cd:', 'Orifice cd'), + ('outlet_type', 've_epa_pgully', 'form_feature', 'tab_epa', 'Outlet type:', 'Outlet type'), + ('weir_cd', 've_epa_pgully', 'form_feature', 'tab_epa', 'Weir cd:', 'Weir cd'), + ('avg_flow', 've_epa_pump', 'form_feature', 'tab_epa', 'Avg flow:', 'Avg flow:'), + ('curve_id', 've_epa_pump', 'form_feature', 'tab_epa', 'Curve id:', 'Curve id:'), + ('max_flow', 've_epa_pump', 'form_feature', 'tab_epa', 'Max flow:', 'Max flow:'), + ('min_flow', 've_epa_pump', 'form_feature', 'tab_epa', 'Min flow:', 'Min flow:'), + ('num_startup', 've_epa_pump', 'form_feature', 'tab_epa', 'Num startup :', 'Num startup :'), + ('percent', 've_epa_pump', 'form_feature', 'tab_epa', 'Percent:', 'Percent:'), + ('powus_kwh', 've_epa_pump', 'form_feature', 'tab_epa', 'Powus kwh:', 'Powus kwh:'), + ('shutoff', 've_epa_pump', 'form_feature', 'tab_epa', 'Shutoff:', 'Shutoff:'), + ('startup', 've_epa_pump', 'form_feature', 'tab_epa', 'Startup:', 'Startup:'), + ('status', 've_epa_pump', 'form_feature', 'tab_epa', 'Status:', 'Status:'), + ('timoff_max', 've_epa_pump', 'form_feature', 'tab_epa', 'Timoff max:', 'Timoff max:'), + ('timoff_min', 've_epa_pump', 'form_feature', 'tab_epa', 'Timoff min:', 'Timoff min:'), + ('vol_ltr', 've_epa_pump', 'form_feature', 'tab_epa', 'Vol ltr:', 'Vol ltr:'), + ('a0', 've_epa_storage', 'form_feature', 'tab_epa', 'A0:', 'A0:'), + ('a1', 've_epa_storage', 'form_feature', 'tab_epa', 'A1:', 'A1:'), + ('a2', 've_epa_storage', 'form_feature', 'tab_epa', 'A2:', 'A2:'), + ('apond', 've_epa_storage', 'form_feature', 'tab_epa', 'Apond:', 'Apond:'), + ('aver_vol', 've_epa_storage', 'form_feature', 'tab_epa', 'Aver vol:', 'Aver vol:'), + ('avg_full', 've_epa_storage', 'form_feature', 'tab_epa', 'Avg full :', 'Avg full :'), + ('curve_id', 've_epa_storage', 'form_feature', 'tab_epa', 'Curve id:', 'Curve id:'), + ('ei_loss', 've_epa_storage', 'form_feature', 'tab_epa', 'Ei loss:', 'Ei loss:'), + ('fevap', 've_epa_storage', 'form_feature', 'tab_epa', 'Fevap:', 'Fevap:'), + ('hc', 've_epa_storage', 'form_feature', 'tab_epa', 'Hc:', 'Hc:'), + ('imd', 've_epa_storage', 'form_feature', 'tab_epa', 'Imd:', 'Imd:'), + ('max_full', 've_epa_storage', 'form_feature', 'tab_epa', 'Max full:', 'Max full:'), + ('max_out', 've_epa_storage', 'form_feature', 'tab_epa', 'Max out:', 'Max out:'), + ('max_vol', 've_epa_storage', 'form_feature', 'tab_epa', 'Max vol:', 'Max vol:'), + ('sh', 've_epa_storage', 'form_feature', 'tab_epa', 'Sh:', 'Sh:'), + ('storage_type', 've_epa_storage', 'form_feature', 'tab_epa', 'Storage type:', 'Storage type'), + ('time_days', 've_epa_storage', 'form_feature', 'tab_epa', 'Time days:', 'Time days:'), + ('time_hour', 've_epa_storage', 'form_feature', 'tab_epa', 'Time hour:', 'Time hour:'), + ('y0', 've_epa_storage', 'form_feature', 'tab_epa', 'Y0:', 'Y0:'), + ('ysur', 've_epa_storage', 'form_feature', 'tab_epa', 'Ysur:', 'Ysur:'), + ('add_length', 've_epa_virtual', 'form_feature', 'tab_epa', 'Add length:', 'Add length:'), + ('fusion_node', 've_epa_virtual', 'form_feature', 'tab_epa', 'Fusion node:', 'Fusion node:'), + ('cd', 've_epa_weir', 'form_feature', 'tab_epa', 'Cd:', 'Cd:'), + ('cd2', 've_epa_weir', 'form_feature', 'tab_epa', 'Cd2:', 'Cd2:'), + ('coef_curve', 've_epa_weir', 'form_feature', 'tab_epa', 'Coef curve:', 'Coef curve:'), + ('ec', 've_epa_weir', 'form_feature', 'tab_epa', 'Ec:', 'Ec:'), + ('flap', 've_epa_weir', 'form_feature', 'tab_epa', 'Flap:', 'Flap:'), + ('geom1', 've_epa_weir', 'form_feature', 'tab_epa', 'Geom1:', 'Geom1:'), + ('geom2', 've_epa_weir', 'form_feature', 'tab_epa', 'Geom2:', 'Geom2:'), + ('geom3', 've_epa_weir', 'form_feature', 'tab_epa', 'Geom3:', 'Geom3:'), + ('geom4', 've_epa_weir', 'form_feature', 'tab_epa', 'Geom4:', 'Geom4:'), + ('max_flow', 've_epa_weir', 'form_feature', 'tab_epa', 'Max flow:', 'Max flow:'), + ('max_veloc', 've_epa_weir', 'form_feature', 'tab_epa', 'Max veloc:', 'Max veloc:'), + ('mfull_depth', 've_epa_weir', 'form_feature', 'tab_epa', 'Mfull depth:', 'Mfull depth:'), + ('mfull_flow', 've_epa_weir', 'form_feature', 'tab_epa', 'Mfull flow:', 'Mfull flow:'), + ('offsetval', 've_epa_weir', 'form_feature', 'tab_epa', 'Offset:', 'Offset:'), + ('road_surf', 've_epa_weir', 'form_feature', 'tab_epa', 'Road surf:', 'Road surf:'), + ('road_width', 've_epa_weir', 'form_feature', 'tab_epa', 'Road width:', 'Road width:'), + ('surcharge', 've_epa_weir', 'form_feature', 'tab_epa', 'Surcharge:', 'Surcharge:'), + ('time_days', 've_epa_weir', 'form_feature', 'tab_epa', 'Time days:', 'Time days:'), + ('time_hour', 've_epa_weir', 'form_feature', 'tab_epa', 'Time hour:', 'Time hour:'), + ('weir_type', 've_epa_weir', 'form_feature', 'tab_epa', 'Weir type:', 'Weir type:'), + ('annotation', 've_inp_conduit', 'form_feature', 'tab_none', 'Annotation:', 'Annotation:'), + ('arc_id', 've_inp_conduit', 'form_feature', 'tab_none', 'Arc id:', 'Arc id:'), + ('arccat_id', 've_inp_conduit', 'form_feature', 'tab_none', 'Arccat id:', 'Arccat id:'), + ('barrels', 've_inp_conduit', 'form_feature', 'tab_none', 'Barrels:', 'Barrels:'), + ('cat_geom1', 've_inp_conduit', 'form_feature', 'tab_none', 'Cat geom1:', 'Cat geom1:'), + ('cat_shape', 've_inp_conduit', 'form_feature', 'tab_none', 'Cat shape:', 'Cat shape:'), + ('culvert', 've_inp_conduit', 'form_feature', 'tab_none', 'Culvert:', 'Culvert:'), + ('custom_elev1', 've_inp_conduit', 'form_feature', 'tab_none', 'Custom elev1:', 'Custom elev1:'), + ('custom_elev2', 've_inp_conduit', 'form_feature', 'tab_none', 'Custom elev2:', 'Custom elev2:'), + ('custom_length', 've_inp_conduit', 'form_feature', 'tab_none', 'Custom length:', 'Custom length:'), + ('custom_n', 've_inp_conduit', 'form_feature', 'tab_none', 'Custom n:', 'Custom n:'), + ('custom_y1', 've_inp_conduit', 'form_feature', 'tab_none', 'Custom y1:', 'Custom y1:'), + ('custom_y2', 've_inp_conduit', 'form_feature', 'tab_none', 'Custom y2:', 'Custom y2:'), + ('elev1', 've_inp_conduit', 'form_feature', 'tab_none', 'Elev1:', 'Elev1:'), + ('elev2', 've_inp_conduit', 'form_feature', 'tab_none', 'Elev2:', 'Elev2:'), + ('expl_id', 've_inp_conduit', 'form_feature', 'tab_none', 'Exploitation:', 'Exploitation:'), + ('flap', 've_inp_conduit', 'form_feature', 'tab_none', 'Flap:', 'Flap:'), + ('gis_length', 've_inp_conduit', 'form_feature', 'tab_none', 'Gis length:', 'Gis length:'), + ('inverted_slope', 've_inp_conduit', 'form_feature', 'tab_none', 'Inverted slope:', 'Inverted slope:'), + ('kavg', 've_inp_conduit', 'form_feature', 'tab_none', 'Kavg:', 'Kavg:'), + ('kentry', 've_inp_conduit', 'form_feature', 'tab_none', 'Kentry:', 'Kentry:'), + ('kexit', 've_inp_conduit', 'form_feature', 'tab_none', 'Kexit:', 'Kexit:'), + ('macrosector_id', 've_inp_conduit', 'form_feature', 'tab_none', 'Macrosector id:', 'Macrosector id:'), + ('matcat_id', 've_inp_conduit', 'form_feature', 'tab_none', 'Matcat id:', 'Matcat id:'), + ('node_1', 've_inp_conduit', 'form_feature', 'tab_none', 'Node 1:', 'Node 1:'), + ('node_2', 've_inp_conduit', 'form_feature', 'tab_none', 'Node 2:', 'Node 2:'), + ('q0', 've_inp_conduit', 'form_feature', 'tab_none', 'Q0:', 'Q0:'), + ('qmax', 've_inp_conduit', 'form_feature', 'tab_none', 'Qmax:', 'Qmax:'), + ('sector_id', 've_inp_conduit', 'form_feature', 'tab_none', 'Sector id:', 'Sector id:'), + ('seepage', 've_inp_conduit', 'form_feature', 'tab_none', 'Seepage:', 'Seepage:'), + ('state', 've_inp_conduit', 'form_feature', 'tab_none', 'State:', 'State:'), + ('state_type', 've_inp_conduit', 'form_feature', 'tab_none', 'State type:', 'State type:'), + ('sys_elev1', 've_inp_conduit', 'form_feature', 'tab_none', 'Sys elev1:', 'Sys elev1:'), + ('sys_elev2', 've_inp_conduit', 'form_feature', 'tab_none', 'Sys elev2:', 'Sys_elev2 - Input level of the final node selected for the calculation'), + ('y1', 've_inp_conduit', 'form_feature', 'tab_none', 'Y1:', 'Y1:'), + ('y2', 've_inp_conduit', 'form_feature', 'tab_none', 'Y2:', 'Y2:'), + ('hydrology_id', 've_inp_coverage', 'form_feature', 'tab_none', 'Hydrology id:', 'Hydrology id:'), + ('landus_id', 've_inp_coverage', 'form_feature', 'tab_none', 'Landus id:', 'Landus id:'), + ('percent', 've_inp_coverage', 'form_feature', 'tab_none', 'Percent:', 'Percent:'), + ('subc_id', 've_inp_coverage', 'form_feature', 'tab_none', 'Subc id:', 'Subc id:'), + ('active', 've_inp_curve', 'form_feature', 'tab_none', 'Active:', 'Active:'), + ('annotation', 've_inp_divider', 'form_feature', 'tab_none', 'Annotation:', 'Annotation:'), + ('apond', 've_inp_divider', 'form_feature', 'tab_none', 'Apond:', 'Apond:'), + ('arc_id', 've_inp_divider', 'form_feature', 'tab_none', 'Arc id:', 'Arc id:'), + ('cd', 've_inp_divider', 'form_feature', 'tab_none', 'Cd:', 'Cd:'), + ('curve_id', 've_inp_divider', 'form_feature', 'tab_none', 'Curve id:', 'Curve id:'), + ('custom_elev', 've_inp_divider', 'form_feature', 'tab_none', 'Custom elev:', 'Custom elev:'), + ('custom_top_elev', 've_inp_divider', 'form_feature', 'tab_none', 'Custom top elev:', 'Custom top elev:'), + ('custom_ymax', 've_inp_divider', 'form_feature', 'tab_none', 'Custom ymax:', 'Custom ymax:'), + ('divider_type', 've_inp_divider', 'form_feature', 'tab_none', 'Divider type:', 'Divider type:'), + ('elev', 've_inp_divider', 'form_feature', 'tab_none', 'Elev:', 'Elev:'), + ('expl_id', 've_inp_divider', 'form_feature', 'tab_none', 'Exploitation:', 'Exploitation:'), + ('ht', 've_inp_divider', 'form_feature', 'tab_none', 'Ht:', 'Ht:'), + ('macrosector_id', 've_inp_divider', 'form_feature', 'tab_none', 'Macrosector id:', 'Macrosector id:'), + ('node_id', 've_inp_divider', 'form_feature', 'tab_none', 'Node id:', 'Node id:'), + ('nodecat_id', 've_inp_divider', 'form_feature', 'tab_none', 'Nodecat id:', 'Nodecat id:'), + ('qmin', 've_inp_divider', 'form_feature', 'tab_none', 'Qmin:', 'Qmin:'), + ('sector_id', 've_inp_divider', 'form_feature', 'tab_none', 'Sector id:', 'Sector id:'), + ('state', 've_inp_divider', 'form_feature', 'tab_none', 'State:', 'State:'), + ('state_type', 've_inp_divider', 'form_feature', 'tab_none', 'State type:', 'State type:'), + ('sys_elev', 've_inp_divider', 'form_feature', 'tab_none', 'Sys elev:', 'Sys elev:'), + ('top_elev', 've_inp_divider', 'form_feature', 'tab_none', 'Top elev:', 'Top elev:'), + ('y0', 've_inp_divider', 'form_feature', 'tab_none', 'Y0:', 'Y0:'), + ('ymax', 've_inp_divider', 'form_feature', 'tab_none', 'Ymax:', 'Ymax:'), + ('ysur', 've_inp_divider', 'form_feature', 'tab_none', 'Ysur:', 'Ysur:'), + ('arc_id', 've_inp_dscenario_conduit', 'form_feature', 'tab_none', 'Arc id:', 'Arc id:'), + ('arccat_id', 've_inp_dscenario_conduit', 'form_feature', 'tab_none', 'Arccat id:', 'Arccat id:'), + ('barrels', 've_inp_dscenario_conduit', 'form_feature', 'tab_none', 'Barrels:', 'Barrels:'), + ('culvert', 've_inp_dscenario_conduit', 'form_feature', 'tab_none', 'Culvert:', 'Culvert:'), + ('custom_n', 've_inp_dscenario_conduit', 'form_feature', 'tab_none', 'Custom n:', 'Custom n:'), + ('dscenario_id', 've_inp_dscenario_conduit', 'form_feature', 'tab_none', 'Dscenario id:', 'Dscenario id:'), + ('elev1', 've_inp_dscenario_conduit', 'form_feature', 'tab_none', 'Elev1:', 'Elev1:'), + ('elev2', 've_inp_dscenario_conduit', 'form_feature', 'tab_none', 'Elev2:', 'Elev2:'), + ('flap', 've_inp_dscenario_conduit', 'form_feature', 'tab_none', 'Flap:', 'Flap:'), + ('kavg', 've_inp_dscenario_conduit', 'form_feature', 'tab_none', 'Kavg:', 'Kavg:'), + ('kentry', 've_inp_dscenario_conduit', 'form_feature', 'tab_none', 'Kentry:', 'Kentry:'), + ('kexit', 've_inp_dscenario_conduit', 'form_feature', 'tab_none', 'Kexit:', 'Kexit:'), + ('matcat_id', 've_inp_dscenario_conduit', 'form_feature', 'tab_none', 'Matcat id:', 'Matcat id:'), + ('q0', 've_inp_dscenario_conduit', 'form_feature', 'tab_none', 'Q0:', 'Q0:'), + ('qmax', 've_inp_dscenario_conduit', 'form_feature', 'tab_none', 'Qmax:', 'Qmax:'), + ('seepage', 've_inp_dscenario_conduit', 'form_feature', 'tab_none', 'Seepage:', 'Seepage:'), + ('cd', 've_inp_dscenario_flwreg_orifice', 'form_feature', 'tab_none', 'Cd:', 'Cd:'), + ('close_time', 've_inp_dscenario_flwreg_orifice', 'form_feature', 'tab_none', 'Close time:', 'Close time:'), + ('dscenario_id', 've_inp_dscenario_flwreg_orifice', 'form_feature', 'tab_none', 'Dscenario id:', 'Dscenario id:'), + ('flap', 've_inp_dscenario_flwreg_orifice', 'form_feature', 'tab_none', 'Flap:', 'Flap:'), + ('geom1', 've_inp_dscenario_flwreg_orifice', 'form_feature', 'tab_none', 'Geom1:', 'Geom1:'), + ('geom2', 've_inp_dscenario_flwreg_orifice', 'form_feature', 'tab_none', 'Geom2:', 'Geom2:'), + ('geom3', 've_inp_dscenario_flwreg_orifice', 'form_feature', 'tab_none', 'Geom3:', 'Geom3:'), + ('geom4', 've_inp_dscenario_flwreg_orifice', 'form_feature', 'tab_none', 'Geom4:', 'Geom4:'), + ('node_id', 've_inp_dscenario_flwreg_orifice', 'form_feature', 'tab_none', 'Node id:', 'Node id:'), + ('offsetval', 've_inp_dscenario_flwreg_orifice', 'form_feature', 'tab_none', 'Offset:', 'Offset:'), + ('orate', 've_inp_dscenario_flwreg_orifice', 'form_feature', 'tab_none', 'Orate:', 'Orate:'), + ('ori_type', 've_inp_dscenario_flwreg_orifice', 'form_feature', 'tab_none', 'Ori type:', 'Ori type:'), + ('shape', 've_inp_dscenario_flwreg_orifice', 'form_feature', 'tab_none', 'Shape:', 'Shape:'), + ('cd1', 've_inp_dscenario_flwreg_outlet', 'form_feature', 'tab_none', 'Cd1:', 'Cd1:'), + ('cd2', 've_inp_dscenario_flwreg_outlet', 'form_feature', 'tab_none', 'Cd2:', 'Cd2:'), + ('curve_id', 've_inp_dscenario_flwreg_outlet', 'form_feature', 'tab_none', 'Curve id:', 'Curve id:'), + ('dscenario_id', 've_inp_dscenario_flwreg_outlet', 'form_feature', 'tab_none', 'Dscenario id:', 'Dscenario id:'), + ('flap', 've_inp_dscenario_flwreg_outlet', 'form_feature', 'tab_none', 'Flap:', 'Flap:'), + ('node_id', 've_inp_dscenario_flwreg_outlet', 'form_feature', 'tab_none', 'Node id:', 'Node id:'), + ('offsetval', 've_inp_dscenario_flwreg_outlet', 'form_feature', 'tab_none', 'Offset:', 'Offset:'), + ('outlet_type', 've_inp_dscenario_flwreg_outlet', 'form_feature', 'tab_none', 'Outlet type:', 'Outlet type:'), + ('curve_id', 've_inp_dscenario_flwreg_pump', 'form_feature', 'tab_none', 'Curve id:', 'Curve id:'), + ('dscenario_id', 've_inp_dscenario_flwreg_pump', 'form_feature', 'tab_none', 'Dscenario id:', 'Dscenario id:'), + ('node_id', 've_inp_dscenario_flwreg_pump', 'form_feature', 'tab_none', 'Node id:', 'Node id:'), + ('shutoff', 've_inp_dscenario_flwreg_pump', 'form_feature', 'tab_none', 'Shutoff:', 'Shutoff:'), + ('startup', 've_inp_dscenario_flwreg_pump', 'form_feature', 'tab_none', 'Startup:', 'Startup:'), + ('status', 've_inp_dscenario_flwreg_pump', 'form_feature', 'tab_none', 'Status:', 'Status:'), + ('cd', 've_inp_dscenario_flwreg_weir', 'form_feature', 'tab_none', 'Cd:', 'Cd:'), + ('cd2', 've_inp_dscenario_flwreg_weir', 'form_feature', 'tab_none', 'Cd2:', 'Cd2:'), + ('coef_curve', 've_inp_dscenario_flwreg_weir', 'form_feature', 'tab_none', 'Coef curve:', 'Coef curve:'), + ('dscenario_id', 've_inp_dscenario_flwreg_weir', 'form_feature', 'tab_none', 'Dscenario id:', 'Dscenario id:'), + ('ec', 've_inp_dscenario_flwreg_weir', 'form_feature', 'tab_none', 'Ec:', 'Ec:'), + ('flap', 've_inp_dscenario_flwreg_weir', 'form_feature', 'tab_none', 'Flap:', 'Flap:'), + ('geom1', 've_inp_dscenario_flwreg_weir', 'form_feature', 'tab_none', 'Geom1:', 'Geom1:'), + ('geom2', 've_inp_dscenario_flwreg_weir', 'form_feature', 'tab_none', 'Geom2:', 'Geom2:'), + ('geom3', 've_inp_dscenario_flwreg_weir', 'form_feature', 'tab_none', 'Geom3:', 'Geom3:'), + ('geom4', 've_inp_dscenario_flwreg_weir', 'form_feature', 'tab_none', 'Geom4:', 'Geom4:'), + ('node_id', 've_inp_dscenario_flwreg_weir', 'form_feature', 'tab_none', 'Node id:', 'Node id:'), + ('offsetval', 've_inp_dscenario_flwreg_weir', 'form_feature', 'tab_none', 'Offset:', 'Offset:'), + ('road_surf', 've_inp_dscenario_flwreg_weir', 'form_feature', 'tab_none', 'Road surf:', 'Road surf:'), + ('road_width', 've_inp_dscenario_flwreg_weir', 'form_feature', 'tab_none', 'Road width:', 'Road width:'), + ('surcharge', 've_inp_dscenario_flwreg_weir', 'form_feature', 'tab_none', 'Surcharge:', 'Surcharge:'), + ('weir_type', 've_inp_dscenario_flwreg_weir', 'form_feature', 'tab_none', 'Weir type:', 'Weir type:'), + ('base', 've_inp_dscenario_inflows', 'form_feature', 'tab_none', 'Base:', 'Base:'), + ('dscenario_id', 've_inp_dscenario_inflows', 'form_feature', 'tab_none', 'Dscenario id:', 'Dscenario id:'), + ('node_id', 've_inp_dscenario_inflows', 'form_feature', 'tab_none', 'Node id:', 'Node id:'), + ('order_id', 've_inp_dscenario_inflows', 'form_feature', 'tab_none', 'Order id:', 'Order id:'), + ('pattern_id', 've_inp_dscenario_inflows', 'form_feature', 'tab_none', 'Pattern id:', 'Pattern id:'), + ('sfactor', 've_inp_dscenario_inflows', 'form_feature', 'tab_none', 'Sfactor:', 'Sfactor:'), + ('timser_id', 've_inp_dscenario_inflows', 'form_feature', 'tab_none', 'Timser id:', 'Timser id:'), + ('base', 've_inp_dscenario_inflows_poll', 'form_feature', 'tab_none', 'Base:', 'Base:'), + ('dscenario_id', 've_inp_dscenario_inflows_poll', 'form_feature', 'tab_none', 'Dscenario id:', 'Dscenario id:'), + ('form_type', 've_inp_dscenario_inflows_poll', 'form_feature', 'tab_none', 'Form type:', 'Form type:'), + ('mfactor', 've_inp_dscenario_inflows_poll', 'form_feature', 'tab_none', 'Mfactor:', 'Mfactor:'), + ('node_id', 've_inp_dscenario_inflows_poll', 'form_feature', 'tab_none', 'Node id:', 'Node id:'), + ('pattern_id', 've_inp_dscenario_inflows_poll', 'form_feature', 'tab_none', 'Pattern id:', 'Pattern id:'), + ('poll_id', 've_inp_dscenario_inflows_poll', 'form_feature', 'tab_none', 'Poll id:', 'Poll id:'), + ('sfactor', 've_inp_dscenario_inflows_poll', 'form_feature', 'tab_none', 'Sfactor:', 'Sfactor:'), + ('timser_id', 've_inp_dscenario_inflows_poll', 'form_feature', 'tab_none', 'Timser id:', 'Timser id:'), + ('apond', 've_inp_dscenario_junction', 'form_feature', 'tab_none', 'Apond:', 'Apond:'), + ('elev', 've_inp_dscenario_junction', 'form_feature', 'tab_none', 'Elev:', 'Elev:'), + ('outfallparam', 've_inp_dscenario_junction', 'form_feature', 'tab_none', 'Outfallparam:', 'Outfallparam:'), + ('y0', 've_inp_dscenario_junction', 'form_feature', 'tab_none', 'Y0:', 'Y0:'), + ('ymax', 've_inp_dscenario_junction', 'form_feature', 'tab_none', 'Ymax:', 'Ymax:'), + ('ysur', 've_inp_dscenario_junction', 'form_feature', 'tab_none', 'Ysur:', 'Ysur:'), + ('area', 've_inp_dscenario_lid_usage', 'form_feature', 'tab_none', 'Area:', 'Area:'), + ('descript', 've_inp_dscenario_lid_usage', 'form_feature', 'tab_none', 'Descript:', 'Descript:'), + ('dscenario_id', 've_inp_dscenario_lid_usage', 'form_feature', 'tab_none', 'Dscenario id:', 'Dscenario id:'), + ('fromimp', 've_inp_dscenario_lid_usage', 'form_feature', 'tab_none', 'Fromimp:', 'Fromimp:'), + ('hydrology_id', 've_inp_dscenario_lid_usage', 'form_feature', 'tab_none', 'Hydrology id:', 'Hydrology id:'), + ('initsat', 've_inp_dscenario_lid_usage', 'form_feature', 'tab_none', 'Initsat:', 'Initsat:'), + ('lidco_id', 've_inp_dscenario_lid_usage', 'form_feature', 'tab_none', 'Lidco id:', 'Lidco id:'), + ('numelem', 've_inp_dscenario_lid_usage', 'form_feature', 'tab_none', 'Numelem:', 'Numelem:'), + ('rptfile', 've_inp_dscenario_lid_usage', 'form_feature', 'tab_none', 'Rptfile:', 'Rptfile:'), + ('subc_id', 've_inp_dscenario_lid_usage', 'form_feature', 'tab_none', 'Subc id:', 'Subc id:'), + ('toperv', 've_inp_dscenario_lid_usage', 'form_feature', 'tab_none', 'Toperv:', 'Toperv:'), + ('width', 've_inp_dscenario_lid_usage', 'form_feature', 'tab_none', 'Width:', 'Width:'), + ('curve_id', 've_inp_dscenario_outfall', 'form_feature', 'tab_none', 'Curve id:', 'Curve id:'), + ('dscenario_id', 've_inp_dscenario_outfall', 'form_feature', 'tab_none', 'Dscenario id:', 'Dscenario id:'), + ('elev', 've_inp_dscenario_outfall', 'form_feature', 'tab_none', 'Elev:', 'Elev:'), + ('gate', 've_inp_dscenario_outfall', 'form_feature', 'tab_none', 'Gate:', 'Gate:'), + ('node_id', 've_inp_dscenario_outfall', 'form_feature', 'tab_none', 'Node id:', 'Node id:'), + ('outfall_type', 've_inp_dscenario_outfall', 'form_feature', 'tab_none', 'Outfall type:', 'Outfall type:'), + ('stage', 've_inp_dscenario_outfall', 'form_feature', 'tab_none', 'Stage:', 'Stage:'), + ('timser_id', 've_inp_dscenario_outfall', 'form_feature', 'tab_none', 'Timser id:', 'Timser id:'), + ('ymax', 've_inp_dscenario_outfall', 'form_feature', 'tab_none', 'Ymax:', 'Ymax:'), + ('dscenario_id', 've_inp_dscenario_raingage', 'form_feature', 'tab_none', 'Dscenario id:', 'Dscenario id:'), + ('fname', 've_inp_dscenario_raingage', 'form_feature', 'tab_none', 'Fname:', 'Fname:'), + ('form_type', 've_inp_dscenario_raingage', 'form_feature', 'tab_none', 'Form type:', 'Form type:'), + ('intvl', 've_inp_dscenario_raingage', 'form_feature', 'tab_none', 'Intvl:', 'Intvl:'), + ('rg_id', 've_inp_dscenario_raingage', 'form_feature', 'tab_none', 'Rg id:', 'Rg id:'), + ('rgage_type', 've_inp_dscenario_raingage', 'form_feature', 'tab_none', 'Rgage type:', 'Rgage type:'), + ('scf', 've_inp_dscenario_raingage', 'form_feature', 'tab_none', 'Scf:', 'Scf:'), + ('sta', 've_inp_dscenario_raingage', 'form_feature', 'tab_none', 'Sta:', 'Sta:'), + ('timser_id', 've_inp_dscenario_raingage', 'form_feature', 'tab_none', 'Timser id:', 'Timser id:'), + ('units', 've_inp_dscenario_raingage', 'form_feature', 'tab_none', 'Units:', 'Units:'), + ('a0', 've_inp_dscenario_storage', 'form_feature', 'tab_none', 'A0:', 'A0:'), + ('a1', 've_inp_dscenario_storage', 'form_feature', 'tab_none', 'A1:', 'A1:'), + ('a2', 've_inp_dscenario_storage', 'form_feature', 'tab_none', 'A2:', 'A2:'), + ('apond', 've_inp_dscenario_storage', 'form_feature', 'tab_none', 'Apond:', 'Apond:'), + ('curve_id', 've_inp_dscenario_storage', 'form_feature', 'tab_none', 'Curve id:', 'Curve id:'), + ('dscenario_id', 've_inp_dscenario_storage', 'form_feature', 'tab_none', 'Dscenario id:', 'Dscenario id:'), + ('elev', 've_inp_dscenario_storage', 'form_feature', 'tab_none', 'Elev:', 'Elev:'), + ('fevap', 've_inp_dscenario_storage', 'form_feature', 'tab_none', 'Fevap:', 'Fevap:'), + ('hc', 've_inp_dscenario_storage', 'form_feature', 'tab_none', 'Hc:', 'Hc:'), + ('imd', 've_inp_dscenario_storage', 'form_feature', 'tab_none', 'Imd:', 'Imd:'), + ('node_id', 've_inp_dscenario_storage', 'form_feature', 'tab_none', 'Node id:', 'Node id:'), + ('sh', 've_inp_dscenario_storage', 'form_feature', 'tab_none', 'Sh:', 'Sh:'), + ('storage_type', 've_inp_dscenario_storage', 'form_feature', 'tab_none', 'Storage type:', 'Storage type:'), + ('y0', 've_inp_dscenario_storage', 'form_feature', 'tab_none', 'Y0:', 'Y0:'), + ('ymax', 've_inp_dscenario_storage', 'form_feature', 'tab_none', 'Ymax:', 'Ymax:'), + ('ysur', 've_inp_dscenario_storage', 'form_feature', 'tab_none', 'Ysur:', 'Ysur:'), + ('dscenario_id', 've_inp_dscenario_treatment', 'form_feature', 'tab_none', 'Dscenario id:', 'Dscenario id:'), + ('function', 've_inp_dscenario_treatment', 'form_feature', 'tab_none', 'Function:', 'Function:'), + ('node_id', 've_inp_dscenario_treatment', 'form_feature', 'tab_none', 'Node id:', 'Node id:'), + ('poll_id', 've_inp_dscenario_treatment', 'form_feature', 'tab_none', 'Poll id:', 'Poll id:'), + ('dwfscenario_id', 've_inp_dwf', 'form_feature', 'tab_none', 'Dwfscenario id:', 'Dwfscenario id:'), + ('node_id', 've_inp_dwf', 'form_feature', 'tab_none', 'Node id:', 'Node id:'), + ('pat1', 've_inp_dwf', 'form_feature', 'tab_none', 'Pat1:', 'Pat1:'), + ('pat2', 've_inp_dwf', 'form_feature', 'tab_none', 'Pat2:', 'Pat2:'), + ('pat3', 've_inp_dwf', 'form_feature', 'tab_none', 'Pat3:', 'Pat3:'), + ('pat4', 've_inp_dwf', 'form_feature', 'tab_none', 'Pat4:', 'Pat4:'), + ('value', 've_inp_dwf', 'form_feature', 'tab_none', 'Value:', 'Value:'), + ('cd', 've_inp_flwreg_orifice', 'form_feature', 'tab_none', 'Cd:', 'Cd:'), + ('close_time', 've_inp_flwreg_orifice', 'form_feature', 'tab_none', 'Close time:', 'Close time:'), + ('flap', 've_inp_flwreg_orifice', 'form_feature', 'tab_none', 'Flap:', 'Flap:'), + ('flwreg_length', 've_inp_flwreg_orifice', 'form_feature', 'tab_none', 'Flwreg length:', 'Flwreg length:'), + ('geom1', 've_inp_flwreg_orifice', 'form_feature', 'tab_none', 'Geom1:', 'Geom1:'), + ('geom2', 've_inp_flwreg_orifice', 'form_feature', 'tab_none', 'Geom2:', 'Geom2:'), + ('geom3', 've_inp_flwreg_orifice', 'form_feature', 'tab_none', 'Geom3:', 'Geom3:'), + ('geom4', 've_inp_flwreg_orifice', 'form_feature', 'tab_none', 'Geom4:', 'Geom4:'), + ('node_id', 've_inp_flwreg_orifice', 'form_feature', 'tab_none', 'Node id:', 'Node id:'), + ('offsetval', 've_inp_flwreg_orifice', 'form_feature', 'tab_none', 'Offset:', 'Offset:'), + ('orate', 've_inp_flwreg_orifice', 'form_feature', 'tab_none', 'Orate:', 'Orate:'), + ('order_id', 've_inp_flwreg_orifice', 'form_feature', 'tab_none', 'Order id:', 'Order id:'), + ('ori_type', 've_inp_flwreg_orifice', 'form_feature', 'tab_none', 'Ori type:', 'Ori type:'), + ('shape', 've_inp_flwreg_orifice', 'form_feature', 'tab_none', 'Shape:', 'Shape:'), + ('to_arc', 've_inp_flwreg_orifice', 'form_feature', 'tab_none', 'To arc:', 'To arc:'), + ('cd1', 've_inp_flwreg_outlet', 'form_feature', 'tab_none', 'Cd1:', 'Cd1:'), + ('cd2', 've_inp_flwreg_outlet', 'form_feature', 'tab_none', 'Cd2:', 'Cd2:'), + ('curve_id', 've_inp_flwreg_outlet', 'form_feature', 'tab_none', 'Curve id:', 'Curve id:'), + ('flap', 've_inp_flwreg_outlet', 'form_feature', 'tab_none', 'Flap:', 'Flap:'), + ('flwreg_length', 've_inp_flwreg_outlet', 'form_feature', 'tab_none', 'Flwreg length:', 'Flwreg length:'), + ('node_id', 've_inp_flwreg_outlet', 'form_feature', 'tab_none', 'Node id:', 'Node id:'), + ('offsetval', 've_inp_flwreg_outlet', 'form_feature', 'tab_none', 'Offset:', 'Offset:'), + ('order_id', 've_inp_flwreg_outlet', 'form_feature', 'tab_none', 'Order id:', 'Order id:'), + ('outlet_type', 've_inp_flwreg_outlet', 'form_feature', 'tab_none', 'Outlet type:', 'Outlet type:'), + ('to_arc', 've_inp_flwreg_outlet', 'form_feature', 'tab_none', 'To arc:', 'To arc:'), + ('curve_id', 've_inp_flwreg_pump', 'form_feature', 'tab_none', 'Curve id:', 'Curve id:'), + ('flwreg_length', 've_inp_flwreg_pump', 'form_feature', 'tab_none', 'Flwreg length:', 'Flwreg length:'), + ('node_id', 've_inp_flwreg_pump', 'form_feature', 'tab_none', 'Node id:', 'Node id:'), + ('order_id', 've_inp_flwreg_pump', 'form_feature', 'tab_none', 'Order id:', 'Order id:'), + ('shutoff', 've_inp_flwreg_pump', 'form_feature', 'tab_none', 'Shutoff:', 'Shutoff:'), + ('startup', 've_inp_flwreg_pump', 'form_feature', 'tab_none', 'Startup:', 'Startup:'), + ('status', 've_inp_flwreg_pump', 'form_feature', 'tab_none', 'Status:', 'Status:'), + ('to_arc', 've_inp_flwreg_pump', 'form_feature', 'tab_none', 'To arc:', 'To arc:'), + ('cd', 've_inp_flwreg_weir', 'form_feature', 'tab_none', 'Cd:', 'Cd:'), + ('cd2', 've_inp_flwreg_weir', 'form_feature', 'tab_none', 'Cd2:', 'Cd2:'), + ('coef_curve', 've_inp_flwreg_weir', 'form_feature', 'tab_none', 'Coef curve:', 'Coef curve:'), + ('ec', 've_inp_flwreg_weir', 'form_feature', 'tab_none', 'Ec:', 'Ec:'), + ('flap', 've_inp_flwreg_weir', 'form_feature', 'tab_none', 'Flap:', 'Flap:'), + ('flwreg_length', 've_inp_flwreg_weir', 'form_feature', 'tab_none', 'Flwreg length:', 'Flwreg length:'), + ('geom1', 've_inp_flwreg_weir', 'form_feature', 'tab_none', 'Geom1:', 'Geom1:'), + ('geom2', 've_inp_flwreg_weir', 'form_feature', 'tab_none', 'Geom2:', 'Geom2:'), + ('geom3', 've_inp_flwreg_weir', 'form_feature', 'tab_none', 'Geom3:', 'Geom3:'), + ('geom4', 've_inp_flwreg_weir', 'form_feature', 'tab_none', 'Geom4:', 'Geom4:'), + ('node_id', 've_inp_flwreg_weir', 'form_feature', 'tab_none', 'Node id:', 'Node id:'), + ('offsetval', 've_inp_flwreg_weir', 'form_feature', 'tab_none', 'Offset:', 'Offset:'), + ('order_id', 've_inp_flwreg_weir', 'form_feature', 'tab_none', 'Order id:', 'Order id:'), + ('road_surf', 've_inp_flwreg_weir', 'form_feature', 'tab_none', 'Road surf:', 'Road surf:'), + ('road_width', 've_inp_flwreg_weir', 'form_feature', 'tab_none', 'Road width:', 'Road width:'), + ('surcharge', 've_inp_flwreg_weir', 'form_feature', 'tab_none', 'Surcharge:', 'Surcharge:'), + ('to_arc', 've_inp_flwreg_weir', 'form_feature', 'tab_none', 'To arc:', 'To arc:'), + ('weir_type', 've_inp_flwreg_weir', 'form_feature', 'tab_none', 'Weir type:', 'Weir type:'), + ('annotation', 've_inp_gully', 'form_feature', 'tab_data', 'Annotation:', 'annotation - Annotations related to gully. Additional information'), + ('arc_id', 've_inp_gully', 'form_feature', 'tab_data', 'Arc Id:', 'Arc_id'), + ('code', 've_inp_gully', 'form_feature', 'tab_data', 'Code:', 'Code:'), + ('custom_depth', 've_inp_gully', 'form_feature', 'tab_data', 'Custom depth:', 'Custom depth'), + ('custom_top_elev', 've_inp_gully', 'form_feature', 'tab_data', 'Custom top elevation:', 'Custom top elevation'), + ('custom_width', 've_inp_gully', 'form_feature', 'tab_data', 'Custom width:', 'Custom width'), + ('depth', 've_inp_gully', 'form_feature', 'tab_data', 'Depth:', 'Depth'), + ('expl_id', 've_inp_gully', 'form_feature', 'tab_data', 'Exploitation:', 'Exploitation:'), + ('grate_length', 've_inp_gully', 'form_feature', 'tab_data', 'Grate length:', 'Grate length'), + ('grate_width', 've_inp_gully', 'form_feature', 'tab_data', 'Grate width:', 'Grate width'), + ('groove', 've_inp_gully', 'form_feature', 'tab_data', 'Groove:', 'Groove:'), + ('groove_height', 've_inp_gully', 'form_feature', 'tab_data', 'Groove height:', 'Groove height:'), + ('groove_length', 've_inp_gully', 'form_feature', 'tab_data', 'Groove length:', 'Groove length:'), + ('gully_id', 've_inp_gully', 'form_feature', 'tab_data', 'Gully id:', 'Gully id:'), + ('gully_method', 've_inp_gully', 'form_feature', 'tab_data', 'Method:', 'Method'), + ('gully_type', 've_inp_gully', 'form_feature', 'tab_data', 'Gully type:', 'Gully type:'), + ('gullycat_id', 've_inp_gully', 'form_feature', 'tab_data', 'Gullycat id:', 'Gullycat id:'), + ('node_id', 've_inp_gully', 'form_feature', 'tab_data', 'Node id:', 'Node id:'), + ('orifice_cd', 've_inp_gully', 'form_feature', 'tab_data', 'Orifice cd:', 'Orifice cd'), + ('outlet_type', 've_inp_gully', 'form_feature', 'tab_data', 'Outlet type:', 'Outlet type'), + ('sector_id', 've_inp_gully', 'form_feature', 'tab_data', 'Sector Id:', 'Sector_id - Hydraulic sector identifier related to the primary key of sector table'), + ('state', 've_inp_gully', 'form_feature', 'tab_data', 'State:', 'state - State of the element. To choose between the 3 types of states available'), + ('state_type', 've_inp_gully', 'form_feature', 'tab_data', 'State type:', 'State type:'), + ('top_elev', 've_inp_gully', 'form_feature', 'tab_data', 'Top elevation:', 'top_elev - Elevation of the gully in ft or m.'), + ('total_length', 've_inp_gully', 'form_feature', 'tab_data', 'Total length:', 'Total length'), + ('total_width', 've_inp_gully', 'form_feature', 'tab_data', 'Total width:', 'Total width'), + ('units', 've_inp_gully', 'form_feature', 'tab_data', 'Units:', 'Units:'), + ('units_placement', 've_inp_gully', 'form_feature', 'tab_data', 'Units placement:', 'Units placement:'), + ('weir_cd', 've_inp_gully', 'form_feature', 'tab_data', 'Weir cd:', 'Weir cd'), + ('a_param', 've_inp_gully', 'form_feature', 'tab_none', 'A param:', 'A param:'), + ('b_param', 've_inp_gully', 'form_feature', 'tab_none', 'B param:', 'B param:'), + ('custom_a_param', 've_inp_gully', 'form_feature', 'tab_none', 'Custom a param:', 'Custom a param:'), + ('custom_b_param', 've_inp_gully', 'form_feature', 'tab_none', 'Custom b param:', 'Custom b param:'), + ('custom_length', 've_inp_gully', 'form_feature', 'tab_none', 'Custom length:', 'Custom length:'), + ('efficiency', 've_inp_gully', 'form_feature', 'tab_none', 'Efficiency:', 'Efficiency:'), + ('base', 've_inp_inflows', 'form_feature', 'tab_none', 'Base:', 'Base:'), + ('node_id', 've_inp_inflows', 'form_feature', 'tab_none', 'Node id:', 'Node id:'), + ('order_id', 've_inp_inflows', 'form_feature', 'tab_none', 'Order id:', 'Order id:'), + ('pattern_id', 've_inp_inflows', 'form_feature', 'tab_none', 'Pattern id:', 'Pattern id:'), + ('sfactor', 've_inp_inflows', 'form_feature', 'tab_none', 'Sfactor:', 'Sfactor:'), + ('timser_id', 've_inp_inflows', 'form_feature', 'tab_none', 'Timser id:', 'Timser id:'), + ('base', 've_inp_inflows_poll', 'form_feature', 'tab_none', 'Base:', 'Base:'), + ('form_type', 've_inp_inflows_poll', 'form_feature', 'tab_none', 'Form type:', 'Form type:'), + ('mfactor', 've_inp_inflows_poll', 'form_feature', 'tab_none', 'Mfactor:', 'Mfactor:'), + ('node_id', 've_inp_inflows_poll', 'form_feature', 'tab_none', 'Node id:', 'Node id:'), + ('pattern_id', 've_inp_inflows_poll', 'form_feature', 'tab_none', 'Pattern id:', 'Pattern id:'), + ('poll_id', 've_inp_inflows_poll', 'form_feature', 'tab_none', 'Poll id:', 'Poll id:'), + ('sfactor', 've_inp_inflows_poll', 'form_feature', 'tab_none', 'Sfactor:', 'Sfactor:'), + ('timser_id', 've_inp_inflows_poll', 'form_feature', 'tab_none', 'Timser id:', 'Timser id:'), + ('apond', 've_inp_junction', 'form_feature', 'tab_none', 'Apond:', 'Apond:'), + ('custom_elev', 've_inp_junction', 'form_feature', 'tab_none', 'Custom elev:', 'Custom elev:'), + ('custom_top_elev', 've_inp_junction', 'form_feature', 'tab_none', 'Custom top elev:', 'Custom top elev:'), + ('custom_ymax', 've_inp_junction', 'form_feature', 'tab_none', 'Custom ymax:', 'Custom ymax:'), + ('elev', 've_inp_junction', 'form_feature', 'tab_none', 'Elev:', 'Elev:'), + ('outfallparam', 've_inp_junction', 'form_feature', 'tab_none', 'Outfallparam:', 'Outfallparam:'), + ('sys_elev', 've_inp_junction', 'form_feature', 'tab_none', 'Sys elev:', 'Sys elev:'), + ('y0', 've_inp_junction', 'form_feature', 'tab_none', 'Y0:', 'Y0:'), + ('ymax', 've_inp_junction', 'form_feature', 'tab_none', 'Ymax:', 'Ymax:'), + ('ysur', 've_inp_junction', 'form_feature', 'tab_none', 'Ysur:', 'Ysur:'), + ('area', 've_inp_lid_usage', 'form_feature', 'tab_none', 'Area:', 'Area:'), + ('descript', 've_inp_lid_usage', 'form_feature', 'tab_none', 'Descript:', 'Descript:'), + ('fromimp', 've_inp_lid_usage', 'form_feature', 'tab_none', 'Fromimp:', 'Fromimp:'), + ('hydrology_id', 've_inp_lid_usage', 'form_feature', 'tab_none', 'Hydrology id:', 'Hydrology id:'), + ('initsat', 've_inp_lid_usage', 'form_feature', 'tab_none', 'Initsat:', 'Initsat:'), + ('lidco_id', 've_inp_lid_usage', 'form_feature', 'tab_none', 'Lidco id:', 'Lidco id:'), + ('numelem', 've_inp_lid_usage', 'form_feature', 'tab_none', 'Numelem:', 'Numelem:'), + ('rptfile', 've_inp_lid_usage', 'form_feature', 'tab_none', 'Rptfile:', 'Rptfile:'), + ('subc_id', 've_inp_lid_usage', 'form_feature', 'tab_none', 'Subc id:', 'Subc id:'), + ('toperv', 've_inp_lid_usage', 'form_feature', 'tab_none', 'Toperv:', 'Toperv:'), + ('width', 've_inp_lid_usage', 'form_feature', 'tab_none', 'Width:', 'Width:'), + ('annotation', 've_inp_netgully', 'form_feature', 'tab_data', 'Annotation:', 'annotation - Annotations related to gully. Additional information'), + ('code', 've_inp_netgully', 'form_feature', 'tab_data', 'Code:', 'Code:'), + ('custom_depth', 've_inp_netgully', 'form_feature', 'tab_data', 'Custom depth:', 'Custom depth'), + ('custom_top_elev', 've_inp_netgully', 'form_feature', 'tab_data', 'Custom top elevation:', 'Custom top elevation'), + ('custom_width', 've_inp_netgully', 'form_feature', 'tab_data', 'Custom width:', 'Custom width'), + ('depth', 've_inp_netgully', 'form_feature', 'tab_data', 'Depth:', 'Depth'), + ('expl_id', 've_inp_netgully', 'form_feature', 'tab_data', 'Exploitation:', 'Exploitation:'), + ('grate_length', 've_inp_netgully', 'form_feature', 'tab_data', 'Grate length:', 'Grate length'), + ('grate_width', 've_inp_netgully', 'form_feature', 'tab_data', 'Grate width:', 'Grate width'), + ('groove', 've_inp_netgully', 'form_feature', 'tab_data', 'Groove:', 'Groove:'), + ('groove_height', 've_inp_netgully', 'form_feature', 'tab_data', 'Groove height:', 'Groove height:'), + ('groove_length', 've_inp_netgully', 'form_feature', 'tab_data', 'Groove length:', 'Groove length:'), + ('gully_method', 've_inp_netgully', 'form_feature', 'tab_data', 'Method:', 'Method'), + ('gullycat_id', 've_inp_netgully', 'form_feature', 'tab_data', 'Gullycat id:', 'Gullycat id:'), + ('node_id', 've_inp_netgully', 'form_feature', 'tab_data', 'Node id:', 'node_id - Identifier of the node. It is not necessary to enter it, it is an automatic serial'), + ('node_type', 've_inp_netgully', 'form_feature', 'tab_data', 'Node type:', 'node_type - Type of node. To be selected from the catalog of node types.'), + ('orifice_cd', 've_inp_netgully', 'form_feature', 'tab_data', 'Orifice cd:', 'Orifice cd'), + ('outlet_type', 've_inp_netgully', 'form_feature', 'tab_data', 'Outlet type:', 'Outlet type'), + ('sector_id', 've_inp_netgully', 'form_feature', 'tab_data', 'Sector Id:', 'Sector_id - Hydraulic sector identifier related to the primary key of sector table'), + ('state', 've_inp_netgully', 'form_feature', 'tab_data', 'State:', 'state - State of the element. To choose between the 3 types of states available'), + ('state_type', 've_inp_netgully', 'form_feature', 'tab_data', 'State type:', 'State type:'), + ('top_elev', 've_inp_netgully', 'form_feature', 'tab_data', 'Top elevation:', 'top_elev - Elevation of the gully in ft or m.'), + ('total_length', 've_inp_netgully', 'form_feature', 'tab_data', 'Total length:', 'Total length'), + ('total_width', 've_inp_netgully', 'form_feature', 'tab_data', 'Total width:', 'Total width'), + ('units', 've_inp_netgully', 'form_feature', 'tab_data', 'Units:', 'Units:'), + ('units_placement', 've_inp_netgully', 'form_feature', 'tab_data', 'Units placement:', 'Units placement:'), + ('weir_cd', 've_inp_netgully', 'form_feature', 'tab_data', 'Weir cd:', 'Weir cd'), + ('a_param', 've_inp_netgully', 'form_feature', 'tab_none', 'A param:', 'A param:'), + ('apond', 've_inp_netgully', 'form_feature', 'tab_none', 'Apond:', 'Apond:'), + ('b_param', 've_inp_netgully', 'form_feature', 'tab_none', 'B param:', 'B param:'), + ('custom_a_param', 've_inp_netgully', 'form_feature', 'tab_none', 'Custom a param:', 'Custom a param:'), + ('custom_b_param', 've_inp_netgully', 'form_feature', 'tab_none', 'Custom b param:', 'Custom b param:'), + ('custom_elev', 've_inp_netgully', 'form_feature', 'tab_none', 'Custom elev:', 'Custom elev:'), + ('custom_length', 've_inp_netgully', 'form_feature', 'tab_none', 'Custom length:', 'Custom length:'), + ('custom_ymax', 've_inp_netgully', 'form_feature', 'tab_none', 'Custom ymax:', 'Custom ymax:'), + ('efficiency', 've_inp_netgully', 'form_feature', 'tab_none', 'Efficiency:', 'Efficiency:'), + ('elev', 've_inp_netgully', 'form_feature', 'tab_none', 'Elev:', 'Elev:'), + ('nodecat_id', 've_inp_netgully', 'form_feature', 'tab_none', 'Nodecat id:', 'Nodecat id:'), + ('sys_elev', 've_inp_netgully', 'form_feature', 'tab_none', 'Sys elev:', 'Sys elev:'), + ('y0', 've_inp_netgully', 'form_feature', 'tab_none', 'Y0:', 'Y0:'), + ('ymax', 've_inp_netgully', 'form_feature', 'tab_none', 'Ymax:', 'Ymax:'), + ('ysur', 've_inp_netgully', 'form_feature', 'tab_none', 'Ysur:', 'Ysur:'), + ('annotation', 've_inp_orifice', 'form_feature', 'tab_none', 'Annotation:', 'Annotation:'), + ('arc_id', 've_inp_orifice', 'form_feature', 'tab_none', 'Arc id:', 'Arc id:'), + ('arccat_id', 've_inp_orifice', 'form_feature', 'tab_none', 'Arccat id:', 'Arccat id:'), + ('cd', 've_inp_orifice', 'form_feature', 'tab_none', 'Cd:', 'Cd:'), + ('close_time', 've_inp_orifice', 'form_feature', 'tab_none', 'Close time:', 'Close time:'), + ('custom_elev1', 've_inp_orifice', 'form_feature', 'tab_none', 'Custom elev1:', 'Custom elev1:'), + ('custom_elev2', 've_inp_orifice', 'form_feature', 'tab_none', 'Custom elev2:', 'Custom elev2:'), + ('custom_length', 've_inp_orifice', 'form_feature', 'tab_none', 'Custom length:', 'Custom length:'), + ('custom_y1', 've_inp_orifice', 'form_feature', 'tab_none', 'Custom y1:', 'Custom y1:'), + ('custom_y2', 've_inp_orifice', 'form_feature', 'tab_none', 'Custom y2:', 'Custom y2:'), + ('elev1', 've_inp_orifice', 'form_feature', 'tab_none', 'Elev1:', 'Elev1:'), + ('elev2', 've_inp_orifice', 'form_feature', 'tab_none', 'Elev2:', 'Elev2:'), + ('expl_id', 've_inp_orifice', 'form_feature', 'tab_none', 'Expl id:', 'Expl id:'), + ('flap', 've_inp_orifice', 'form_feature', 'tab_none', 'Flap:', 'Flap:'), + ('geom1', 've_inp_orifice', 'form_feature', 'tab_none', 'Geom1:', 'Geom1:'), + ('geom2', 've_inp_orifice', 'form_feature', 'tab_none', 'Geom2:', 'Geom2:'), + ('geom3', 've_inp_orifice', 'form_feature', 'tab_none', 'Geom3:', 'Geom3:'), + ('geom4', 've_inp_orifice', 'form_feature', 'tab_none', 'Geom4:', 'Geom4:'), + ('gis_length', 've_inp_orifice', 'form_feature', 'tab_none', 'Gis length:', 'Gis length:'), + ('inverted_slope', 've_inp_orifice', 'form_feature', 'tab_none', 'Inverted slope:', 'Inverted slope:'), + ('macrosector_id', 've_inp_orifice', 'form_feature', 'tab_none', 'Macrosector id:', 'Macrosector id:'), + ('node_1', 've_inp_orifice', 'form_feature', 'tab_none', 'Node 1:', 'Node 1:'), + ('node_2', 've_inp_orifice', 'form_feature', 'tab_none', 'Node 2:', 'Node 2:'), + ('offsetval', 've_inp_orifice', 'form_feature', 'tab_none', 'Offset:', 'Offset:'), + ('orate', 've_inp_orifice', 'form_feature', 'tab_none', 'Orate:', 'Orate:'), + ('ori_type', 've_inp_orifice', 'form_feature', 'tab_none', 'Ori type:', 'Ori type:'), + ('sector_id', 've_inp_orifice', 'form_feature', 'tab_none', 'Sector id:', 'Sector id:'), + ('shape', 've_inp_orifice', 'form_feature', 'tab_none', 'Shape:', 'Shape:'), + ('state', 've_inp_orifice', 'form_feature', 'tab_none', 'State:', 'State:'), + ('state_type', 've_inp_orifice', 'form_feature', 'tab_none', 'State type:', 'State type:'), + ('sys_elev1', 've_inp_orifice', 'form_feature', 'tab_none', 'Sys elev1:', 'Sys elev1:'), + ('sys_elev2', 've_inp_orifice', 'form_feature', 'tab_none', 'Sys elev2:', 'Sys_elev2 - Input level of the final node selected for the calculation'), + ('y1', 've_inp_orifice', 'form_feature', 'tab_none', 'Y1:', 'Y1:'), + ('y2', 've_inp_orifice', 'form_feature', 'tab_none', 'Y2:', 'Y2:'), + ('annotation', 've_inp_outfall', 'form_feature', 'tab_none', 'Annotation:', 'Annotation:'), + ('curve_id', 've_inp_outfall', 'form_feature', 'tab_none', 'Curve id:', 'Curve id:'), + ('custom_elev', 've_inp_outfall', 'form_feature', 'tab_none', 'Custom elev:', 'Custom elev:'), + ('custom_top_elev', 've_inp_outfall', 'form_feature', 'tab_none', 'Custom top elev:', 'Custom top elev:'), + ('custom_ymax', 've_inp_outfall', 'form_feature', 'tab_none', 'Custom ymax:', 'Custom ymax:'), + ('elev', 've_inp_outfall', 'form_feature', 'tab_none', 'Elev:', 'Elev:'), + ('expl_id', 've_inp_outfall', 'form_feature', 'tab_none', 'Exploitation:', 'Exploitation:'), + ('gate', 've_inp_outfall', 'form_feature', 'tab_none', 'Gate:', 'Gate:'), + ('macrosector_id', 've_inp_outfall', 'form_feature', 'tab_none', 'Macrosector id:', 'Macrosector id:'), + ('node_id', 've_inp_outfall', 'form_feature', 'tab_none', 'Node id:', 'Node id:'), + ('nodecat_id', 've_inp_outfall', 'form_feature', 'tab_none', 'Nodecat id:', 'Nodecat id:'), + ('outfall_type', 've_inp_outfall', 'form_feature', 'tab_none', 'Outfall type:', 'Outfall type:'), + ('sector_id', 've_inp_outfall', 'form_feature', 'tab_none', 'Sector id:', 'Sector id:'), + ('stage', 've_inp_outfall', 'form_feature', 'tab_none', 'Stage:', 'Stage:'), + ('state', 've_inp_outfall', 'form_feature', 'tab_none', 'State:', 'State:'), + ('state_type', 've_inp_outfall', 'form_feature', 'tab_none', 'State type:', 'State type:'), + ('sys_elev', 've_inp_outfall', 'form_feature', 'tab_none', 'Sys elev:', 'Sys elev:'), + ('timser_id', 've_inp_outfall', 'form_feature', 'tab_none', 'Timser id:', 'Timser id:'), + ('top_elev', 've_inp_outfall', 'form_feature', 'tab_none', 'Top elev:', 'Top elev:'), + ('ymax', 've_inp_outfall', 'form_feature', 'tab_none', 'Ymax:', 'Ymax:'), + ('annotation', 've_inp_outlet', 'form_feature', 'tab_none', 'Annotation:', 'Annotation:'), + ('arc_id', 've_inp_outlet', 'form_feature', 'tab_none', 'Arc id:', 'Arc id:'), + ('arccat_id', 've_inp_outlet', 'form_feature', 'tab_none', 'Arccat id:', 'Arccat id:'), + ('cd1', 've_inp_outlet', 'form_feature', 'tab_none', 'Cd1:', 'Cd1:'), + ('cd2', 've_inp_outlet', 'form_feature', 'tab_none', 'Cd2:', 'Cd2:'), + ('curve_id', 've_inp_outlet', 'form_feature', 'tab_none', 'Curve id:', 'Curve id:'), + ('custom_elev1', 've_inp_outlet', 'form_feature', 'tab_none', 'Custom elev1:', 'Custom elev1:'), + ('custom_elev2', 've_inp_outlet', 'form_feature', 'tab_none', 'Custom elev2:', 'Custom elev2:'), + ('custom_length', 've_inp_outlet', 'form_feature', 'tab_none', 'Custom length:', 'Custom length:'), + ('custom_y1', 've_inp_outlet', 'form_feature', 'tab_none', 'Custom y1:', 'Custom y1:'), + ('custom_y2', 've_inp_outlet', 'form_feature', 'tab_none', 'Custom y2:', 'Custom y2:'), + ('elev1', 've_inp_outlet', 'form_feature', 'tab_none', 'Elev1:', 'Elev1:'), + ('elev2', 've_inp_outlet', 'form_feature', 'tab_none', 'Elev2:', 'Elev2:'), + ('expl_id', 've_inp_outlet', 'form_feature', 'tab_none', 'Expl id:', 'Expl id:'), + ('flap', 've_inp_outlet', 'form_feature', 'tab_none', 'Flap:', 'Flap:'), + ('gis_length', 've_inp_outlet', 'form_feature', 'tab_none', 'Gis length:', 'Gis length:'), + ('inverted_slope', 've_inp_outlet', 'form_feature', 'tab_none', 'Inverted slope:', 'Inverted slope:'), + ('macrosector_id', 've_inp_outlet', 'form_feature', 'tab_none', 'Macrosector id:', 'Macrosector id:'), + ('node_1', 've_inp_outlet', 'form_feature', 'tab_none', 'Node 1:', 'Node 1:'), + ('node_2', 've_inp_outlet', 'form_feature', 'tab_none', 'Node 2:', 'Node 2:'), + ('offsetval', 've_inp_outlet', 'form_feature', 'tab_none', 'Offset:', 'Offset:'), + ('outlet_type', 've_inp_outlet', 'form_feature', 'tab_none', 'Outlet type:', 'Outlet type:'), + ('sector_id', 've_inp_outlet', 'form_feature', 'tab_none', 'Sector id:', 'Sector id:'), + ('state', 've_inp_outlet', 'form_feature', 'tab_none', 'State:', 'State:'), + ('state_type', 've_inp_outlet', 'form_feature', 'tab_none', 'State type:', 'State type:'), + ('sys_elev1', 've_inp_outlet', 'form_feature', 'tab_none', 'Sys elev1:', 'Sys elev1:'), + ('sys_elev2', 've_inp_outlet', 'form_feature', 'tab_none', 'Sys elev2:', 'Sys_elev2 - Input level of the final node selected for the calculation'), + ('y1', 've_inp_outlet', 'form_feature', 'tab_none', 'Y1:', 'Y1:'), + ('y2', 've_inp_outlet', 'form_feature', 'tab_none', 'Y2:', 'Y2:'), + ('active', 've_inp_pattern', 'form_feature', 'tab_none', 'Active:', 'Active:'), + ('pattern_type', 've_inp_pattern', 'form_feature', 'tab_none', 'Pattern type:', 'Pattern type:'), + ('log', 've_inp_pattern_value', 'form_feature', 'tab_none', 'Log:', 'Log:'), + ('pattern_type', 've_inp_pattern_value', 'form_feature', 'tab_none', 'Pattern type:', 'Pattern type:'), + ('arc_id', 've_inp_pump', 'form_feature', 'tab_none', 'Arc id:', 'Arc id:'), + ('arccat_id', 've_inp_pump', 'form_feature', 'tab_none', 'Arccat id:', 'Arccat id:'), + ('custom_elev1', 've_inp_pump', 'form_feature', 'tab_none', 'Custom elev1:', 'Custom elev1:'), + ('custom_elev2', 've_inp_pump', 'form_feature', 'tab_none', 'Custom elev2:', 'Custom elev2:'), + ('custom_length', 've_inp_pump', 'form_feature', 'tab_none', 'Custom length:', 'Custom length:'), + ('custom_y1', 've_inp_pump', 'form_feature', 'tab_none', 'Custom y1:', 'Custom y1:'), + ('custom_y2', 've_inp_pump', 'form_feature', 'tab_none', 'Custom y2:', 'Custom y2:'), + ('elev1', 've_inp_pump', 'form_feature', 'tab_none', 'Elev1:', 'Elev1:'), + ('elev2', 've_inp_pump', 'form_feature', 'tab_none', 'Elev2:', 'Elev2:'), + ('expl_id', 've_inp_pump', 'form_feature', 'tab_none', 'Expl id:', 'Expl id:'), + ('gis_length', 've_inp_pump', 'form_feature', 'tab_none', 'Gis length:', 'Gis length:'), + ('inverted_slope', 've_inp_pump', 'form_feature', 'tab_none', 'Inverted slope:', 'Inverted slope:'), + ('node_1', 've_inp_pump', 'form_feature', 'tab_none', 'Node 1:', 'Node 1:'), + ('node_2', 've_inp_pump', 'form_feature', 'tab_none', 'Node 2:', 'Node 2:'), + ('shutoff', 've_inp_pump', 'form_feature', 'tab_none', 'Shutoff:', 'Shutoff:'), + ('startup', 've_inp_pump', 'form_feature', 'tab_none', 'Startup:', 'Startup:'), + ('sys_elev1', 've_inp_pump', 'form_feature', 'tab_none', 'Sys elev1:', 'Sys elev1:'), + ('sys_elev2', 've_inp_pump', 'form_feature', 'tab_none', 'Sys elev2:', 'Sys_elev2 - Input level of the final node selected for the calculation'), + ('y1', 've_inp_pump', 'form_feature', 'tab_none', 'Y1:', 'Y1:'), + ('y2', 've_inp_pump', 'form_feature', 'tab_none', 'Y2:', 'Y2:'), + ('a0', 've_inp_storage', 'form_feature', 'tab_none', 'A0:', 'A0:'), + ('a1', 've_inp_storage', 'form_feature', 'tab_none', 'A1:', 'A1:'), + ('a2', 've_inp_storage', 'form_feature', 'tab_none', 'A2:', 'A2:'), + ('annotation', 've_inp_storage', 'form_feature', 'tab_none', 'Annotation:', 'Annotation:'), + ('apond', 've_inp_storage', 'form_feature', 'tab_none', 'Apond:', 'Apond:'), + ('curve_id', 've_inp_storage', 'form_feature', 'tab_none', 'Curve id:', 'Curve id:'), + ('custom_elev', 've_inp_storage', 'form_feature', 'tab_none', 'Custom elev:', 'Custom elev:'), + ('custom_top_elev', 've_inp_storage', 'form_feature', 'tab_none', 'Custom top elev:', 'Custom top elev:'), + ('custom_ymax', 've_inp_storage', 'form_feature', 'tab_none', 'Custom ymax:', 'Custom ymax:'), + ('elev', 've_inp_storage', 'form_feature', 'tab_none', 'Elev:', 'Elev:'), + ('expl_id', 've_inp_storage', 'form_feature', 'tab_none', 'Exploitation:', 'Exploitation:'), + ('fevap', 've_inp_storage', 'form_feature', 'tab_none', 'Fevap:', 'Fevap:'), + ('hc', 've_inp_storage', 'form_feature', 'tab_none', 'Hc:', 'Hc:'), + ('imd', 've_inp_storage', 'form_feature', 'tab_none', 'Imd:', 'Imd:'), + ('macrosector_id', 've_inp_storage', 'form_feature', 'tab_none', 'Macrosector id:', 'Macrosector id:'), + ('node_id', 've_inp_storage', 'form_feature', 'tab_none', 'Node id:', 'Node id:'), + ('nodecat_id', 've_inp_storage', 'form_feature', 'tab_none', 'Nodecat id:', 'Nodecat id:'), + ('sector_id', 've_inp_storage', 'form_feature', 'tab_none', 'Sector id:', 'Sector id:'), + ('sh', 've_inp_storage', 'form_feature', 'tab_none', 'Sh:', 'Sh:'), + ('state', 've_inp_storage', 'form_feature', 'tab_none', 'State:', 'State:'), + ('state_type', 've_inp_storage', 'form_feature', 'tab_none', 'State type:', 'State type:'), + ('storage_type', 've_inp_storage', 'form_feature', 'tab_none', 'Storage type:', 'Storage type:'), + ('sys_elev', 've_inp_storage', 'form_feature', 'tab_none', 'Sys elev:', 'Sys elev:'), + ('top_elev', 've_inp_storage', 'form_feature', 'tab_none', 'Top elev:', 'Top elev:'), + ('y0', 've_inp_storage', 'form_feature', 'tab_none', 'Y0:', 'Y0:'), + ('ymax', 've_inp_storage', 'form_feature', 'tab_none', 'Ymax:', 'Ymax:'), + ('ysur', 've_inp_storage', 'form_feature', 'tab_none', 'Ysur:', 'Ysur:'), + ('area', 've_inp_subcatchment', 'form_feature', 'tab_none', 'Area:', 'Area:'), + ('clength', 've_inp_subcatchment', 'form_feature', 'tab_none', 'Clength:', 'Clength:'), + ('conduct', 've_inp_subcatchment', 'form_feature', 'tab_none', 'Conduct:', 'Conduct:'), + ('conduct_2', 've_inp_subcatchment', 'form_feature', 'tab_none', 'Conduct 2:', 'Conduct 2:'), + ('curveno', 've_inp_subcatchment', 'form_feature', 'tab_none', 'Curveno:', 'Curveno:'), + ('decay', 've_inp_subcatchment', 'form_feature', 'tab_none', 'Decay:', 'Decay:'), + ('descript', 've_inp_subcatchment', 'form_feature', 'tab_none', 'Descript:', 'Descript:'), + ('drytime', 've_inp_subcatchment', 'form_feature', 'tab_none', 'Drytime:', 'Drytime:'), + ('drytime_2', 've_inp_subcatchment', 'form_feature', 'tab_none', 'Drytime 2:', 'Drytime 2:'), + ('hydrology_id', 've_inp_subcatchment', 'form_feature', 'tab_none', 'Hydrology id:', 'Hydrology id:'), + ('imperv', 've_inp_subcatchment', 'form_feature', 'tab_none', 'Imperv:', 'Imperv:'), + ('initdef', 've_inp_subcatchment', 'form_feature', 'tab_none', 'Initdef:', 'Initdef:'), + ('maxinfil', 've_inp_subcatchment', 'form_feature', 'tab_none', 'Maxinfil:', 'Maxinfil:'), + ('maxrate', 've_inp_subcatchment', 'form_feature', 'tab_none', 'Maxrate:', 'Maxrate:'), + ('minrate', 've_inp_subcatchment', 'form_feature', 'tab_none', 'Minrate:', 'Minrate:'), + ('nimp', 've_inp_subcatchment', 'form_feature', 'tab_none', 'Nimp:', 'Nimp:'), + ('nperv', 've_inp_subcatchment', 'form_feature', 'tab_none', 'Nperv:', 'Nperv:'), + ('outlet_id', 've_inp_subcatchment', 'form_feature', 'tab_none', 'Outlet id:', 'Outlet id:'), + ('rg_id', 've_inp_subcatchment', 'form_feature', 'tab_none', 'Rg id:', 'Rg id:'), + ('routeto', 've_inp_subcatchment', 'form_feature', 'tab_none', 'Routeto:', 'Routeto:'), + ('rted', 've_inp_subcatchment', 'form_feature', 'tab_none', 'Rted:', 'Rted:'), + ('sector_id', 've_inp_subcatchment', 'form_feature', 'tab_none', 'Sector id:', 'Sector id:'), + ('simp', 've_inp_subcatchment', 'form_feature', 'tab_none', 'Simp:', 'Simp:'), + ('slope', 've_inp_subcatchment', 'form_feature', 'tab_none', 'Slope:', 'Slope:'), + ('snow_id', 've_inp_subcatchment', 'form_feature', 'tab_none', 'Snow id:', 'Snow id:'), + ('sperv', 've_inp_subcatchment', 'form_feature', 'tab_none', 'Sperv:', 'Sperv:'), + ('subc_id', 've_inp_subcatchment', 'form_feature', 'tab_none', 'Subc id:', 'Subc id:'), + ('suction', 've_inp_subcatchment', 'form_feature', 'tab_none', 'Suction:', 'Suction:'), + ('width', 've_inp_subcatchment', 'form_feature', 'tab_none', 'Width:', 'Width:'), + ('zero', 've_inp_subcatchment', 'form_feature', 'tab_none', 'Zero:', 'Zero:'), + ('active', 've_inp_timeseries', 'form_feature', 'tab_none', 'Active:', 'Active:'), + ('descript', 've_inp_timeseries', 'form_feature', 'tab_none', 'Descript:', 'Descript:'), + ('expl_id', 've_inp_timeseries', 'form_feature', 'tab_none', 'Expl id:', 'Expl id:'), + ('fname', 've_inp_timeseries', 'form_feature', 'tab_none', 'Fname:', 'Fname:'), + ('id', 've_inp_timeseries', 'form_feature', 'tab_none', 'Id:', 'Id:'), + ('idval', 've_inp_timeseries', 'form_feature', 'tab_none', 'Idval:', 'Idval:'), + ('log', 've_inp_timeseries', 'form_feature', 'tab_none', 'Log:', 'Log:'), + ('times_type', 've_inp_timeseries', 'form_feature', 'tab_none', 'Times type:', 'Times type:'), + ('timser_type', 've_inp_timeseries', 'form_feature', 'tab_none', 'Timser type:', 'Timser type:'), + ('date', 've_inp_timeseries_value', 'form_feature', 'tab_none', 'Date:', 'Date:'), + ('expl_id', 've_inp_timeseries_value', 'form_feature', 'tab_none', 'Expl id:', 'Expl id:'), + ('hour', 've_inp_timeseries_value', 'form_feature', 'tab_none', 'Hour:', 'Hour:'), + ('id', 've_inp_timeseries_value', 'form_feature', 'tab_none', 'Id:', 'Id:'), + ('idval', 've_inp_timeseries_value', 'form_feature', 'tab_none', 'Idval:', 'Idval:'), + ('time', 've_inp_timeseries_value', 'form_feature', 'tab_none', 'Time:', 'Time:'), + ('times_type', 've_inp_timeseries_value', 'form_feature', 'tab_none', 'Times type:', 'Times type:'), + ('timser_id', 've_inp_timeseries_value', 'form_feature', 'tab_none', 'Timser id:', 'Timser id:'), + ('timser_type', 've_inp_timeseries_value', 'form_feature', 'tab_none', 'Timser type:', 'Timser type:'), + ('value', 've_inp_timeseries_value', 'form_feature', 'tab_none', 'Value:', 'Value:'), + ('sector_id', 've_inp_transects', 'form_feature', 'tab_data', 'Sector:', 'Sector:'), + ('id', 've_inp_transects', 'form_feature', 'tab_none', 'Id:', 'Id:'), + ('text', 've_inp_transects', 'form_feature', 'tab_none', 'Text:', 'Text:'), + ('tsect_id', 've_inp_transects', 'form_feature', 'tab_none', 'Tsect id:', 'Tsect id:'), + ('function', 've_inp_treatment', 'form_feature', 'tab_none', 'Function:', 'Function:'), + ('node_id', 've_inp_treatment', 'form_feature', 'tab_none', 'Node id:', 'Node id:'), + ('poll_id', 've_inp_treatment', 'form_feature', 'tab_none', 'Poll id:', 'Poll id:'), + ('add_length', 've_inp_virtual', 'form_feature', 'tab_none', 'Add length:', 'Add length:'), + ('arc_id', 've_inp_virtual', 'form_feature', 'tab_none', 'Arc id:', 'Arc id:'), + ('expl_id', 've_inp_virtual', 'form_feature', 'tab_none', 'Expl id:', 'Expl id:'), + ('fusion_node', 've_inp_virtual', 'form_feature', 'tab_none', 'Fusion node:', 'Fusion node:'), + ('gis_length', 've_inp_virtual', 'form_feature', 'tab_none', 'Gis length:', 'Gis length:'), + ('macrosector_id', 've_inp_virtual', 'form_feature', 'tab_none', 'Macrosector id:', 'Macrosector id:'), + ('node_1', 've_inp_virtual', 'form_feature', 'tab_none', 'Node 1:', 'Node 1:'), + ('node_2', 've_inp_virtual', 'form_feature', 'tab_none', 'Node 2:', 'Node 2:'), + ('sector_id', 've_inp_virtual', 'form_feature', 'tab_none', 'Sector id:', 'Sector id:'), + ('state', 've_inp_virtual', 'form_feature', 'tab_none', 'State:', 'State:'), + ('state_type', 've_inp_virtual', 'form_feature', 'tab_none', 'State type:', 'State type:'), + ('annotation', 've_inp_weir', 'form_feature', 'tab_none', 'Annotation:', 'Annotation:'), + ('arc_id', 've_inp_weir', 'form_feature', 'tab_none', 'Arc id:', 'Arc id:'), + ('arccat_id', 've_inp_weir', 'form_feature', 'tab_none', 'Arccat id:', 'Arccat id:'), + ('cd', 've_inp_weir', 'form_feature', 'tab_none', 'Cd:', 'Cd:'), + ('cd2', 've_inp_weir', 'form_feature', 'tab_none', 'Cd2:', 'Cd2:'), + ('coef_curve', 've_inp_weir', 'form_feature', 'tab_none', 'Coef curve:', 'Coef curve:'), + ('custom_elev1', 've_inp_weir', 'form_feature', 'tab_none', 'Custom elev1:', 'Custom elev1:'), + ('custom_elev2', 've_inp_weir', 'form_feature', 'tab_none', 'Custom elev2:', 'Custom elev2:'), + ('custom_length', 've_inp_weir', 'form_feature', 'tab_none', 'Custom length:', 'Custom length:'), + ('custom_y1', 've_inp_weir', 'form_feature', 'tab_none', 'Custom y1:', 'Custom y1:'), + ('custom_y2', 've_inp_weir', 'form_feature', 'tab_none', 'Custom y2:', 'Custom y2:'), + ('ec', 've_inp_weir', 'form_feature', 'tab_none', 'Ec:', 'Ec:'), + ('elev1', 've_inp_weir', 'form_feature', 'tab_none', 'Elev1:', 'Elev1:'), + ('elev2', 've_inp_weir', 'form_feature', 'tab_none', 'Elev2:', 'Elev2:'), + ('expl_id', 've_inp_weir', 'form_feature', 'tab_none', 'Expl id:', 'Expl id:'), + ('flap', 've_inp_weir', 'form_feature', 'tab_none', 'Flap:', 'Flap:'), + ('geom1', 've_inp_weir', 'form_feature', 'tab_none', 'Geom1:', 'Geom1:'), + ('geom2', 've_inp_weir', 'form_feature', 'tab_none', 'Geom2:', 'Geom2:'), + ('geom3', 've_inp_weir', 'form_feature', 'tab_none', 'Geom3:', 'Geom3:'), + ('geom4', 've_inp_weir', 'form_feature', 'tab_none', 'Geom4:', 'Geom4:'), + ('gis_length', 've_inp_weir', 'form_feature', 'tab_none', 'Gis length:', 'Gis length:'), + ('inverted_slope', 've_inp_weir', 'form_feature', 'tab_none', 'Inverted slope:', 'Inverted slope:'), + ('macrosector_id', 've_inp_weir', 'form_feature', 'tab_none', 'Macrosector id:', 'Macrosector id:'), + ('node_1', 've_inp_weir', 'form_feature', 'tab_none', 'Node 1:', 'Node 1:'), + ('node_2', 've_inp_weir', 'form_feature', 'tab_none', 'Node 2:', 'Node 2:'), + ('offsetval', 've_inp_weir', 'form_feature', 'tab_none', 'Offset:', 'Offset:'), + ('road_surf', 've_inp_weir', 'form_feature', 'tab_none', 'Road surf:', 'Road surf:'), + ('road_width', 've_inp_weir', 'form_feature', 'tab_none', 'Road width:', 'Road width:'), + ('sector_id', 've_inp_weir', 'form_feature', 'tab_none', 'Sector id:', 'Sector id:'), + ('state', 've_inp_weir', 'form_feature', 'tab_none', 'State:', 'State:'), + ('state_type', 've_inp_weir', 'form_feature', 'tab_none', 'State type:', 'State type:'), + ('surcharge', 've_inp_weir', 'form_feature', 'tab_none', 'Surcharge:', 'Surcharge:'), + ('sys_elev1', 've_inp_weir', 'form_feature', 'tab_none', 'Sys elev1:', 'Sys elev1:'), + ('sys_elev2', 've_inp_weir', 'form_feature', 'tab_none', 'Sys elev2:', 'Sys_elev2 - Input level of the final node selected for the calculation'), + ('weir_type', 've_inp_weir', 'form_feature', 'tab_none', 'Weir type:', 'Weir type:'), + ('y1', 've_inp_weir', 'form_feature', 'tab_none', 'Y1:', 'Y1:'), + ('y2', 've_inp_weir', 'form_feature', 'tab_none', 'Y2:', 'Y2:'), + ('macrodma_id', 've_macrodma', 'form_feature', 'tab_none', 'Macroomzone id:', 'macroomzone_id'), + ('macroomzone_id', 've_macroomzone', 'form_feature', 'tab_none', 'Omzone id:', 'omzone_id'), + ('macrosector_id', 've_macrosector', 'form_feature', 'tab_none', 'Omzone id:', 'omzone_id'), + ('scale', 've_plan_psector', 'form_feature', 'tab_none', 'Scale:', 'Scale:'), + ('expl_id', 've_raingage', 'form_feature', 'tab_data', 'Expl id:', 'Expl id:'), + ('fname', 've_raingage', 'form_feature', 'tab_data', 'Fname:', 'Fname:'), + ('form_type', 've_raingage', 'form_feature', 'tab_data', 'Form type:', 'Form type:'), + ('intvl', 've_raingage', 'form_feature', 'tab_data', 'Intvl:', 'Intvl:'), + ('muni_id', 've_raingage', 'form_feature', 'tab_data', 'Muni id:', 'Muni id:'), + ('rg_id', 've_raingage', 'form_feature', 'tab_data', 'Rg id:', 'Rg id:'), + ('rgage_type', 've_raingage', 'form_feature', 'tab_data', 'Rgage type:', 'Rgage type:'), + ('scf', 've_raingage', 'form_feature', 'tab_data', 'Scf:', 'Scf:'), + ('sta', 've_raingage', 'form_feature', 'tab_data', 'Sta:', 'Sta:'), + ('timser_id', 've_raingage', 'form_feature', 'tab_data', 'Timser id:', 'Timser id:'), + ('units', 've_raingage', 'form_feature', 'tab_data', 'Units:', 'Units:'), + ('arc_type', 've_review_arc', 'form_feature', 'tab_none', 'Arc type:', 'Arc type:'), + ('matcat_id', 've_review_arc', 'form_feature', 'tab_none', 'Matcat id:', 'Matcat id:'), + ('node_1', 've_review_arc', 'form_feature', 'tab_none', 'Node 1:', 'Node 1:'), + ('node_2', 've_review_arc', 'form_feature', 'tab_none', 'Node 2:', 'Node 2:'), + ('y1', 've_review_arc', 'form_feature', 'tab_none', 'Y1:', 'Y1:'), + ('y2', 've_review_arc', 'form_feature', 'tab_none', 'Y2:', 'Y2:'), + ('new_arc_type', 've_review_audit_arc', 'form_feature', 'tab_none', 'New arc type:', 'New arc type:'), + ('new_matcat_id', 've_review_audit_arc', 'form_feature', 'tab_none', 'New matcat id:', 'New matcat id:'), + ('new_y1', 've_review_audit_arc', 'form_feature', 'tab_none', 'New y1:', 'New y1:'), + ('new_y2', 've_review_audit_arc', 'form_feature', 'tab_none', 'New y2:', 'New y2:'), + ('old_arc_type', 've_review_audit_arc', 'form_feature', 'tab_none', 'Old arc type:', 'Old arc type:'), + ('old_matcat_id', 've_review_audit_arc', 'form_feature', 'tab_none', 'Old matcat id:', 'Old matcat id:'), + ('old_y1', 've_review_audit_arc', 'form_feature', 'tab_none', 'Old y1:', 'Old y1:'), + ('old_y2', 've_review_audit_arc', 'form_feature', 'tab_none', 'Old y2:', 'Old y2:'), + ('new_connec_type', 've_review_audit_connec', 'form_feature', 'tab_none', 'New connec type:', 'New connec type:'), + ('new_matcat_id', 've_review_audit_connec', 'form_feature', 'tab_none', 'New matcat id:', 'New matcat id:'), + ('new_y1', 've_review_audit_connec', 'form_feature', 'tab_none', 'New y1:', 'New y1:'), + ('new_y2', 've_review_audit_connec', 'form_feature', 'tab_none', 'New y2:', 'New y2:'), + ('old_connec_type', 've_review_audit_connec', 'form_feature', 'tab_none', 'Old connec type:', 'Old connec type:'), + ('old_matcat_id', 've_review_audit_connec', 'form_feature', 'tab_none', 'Old matcat id:', 'Old matcat id:'), + ('old_y1', 've_review_audit_connec', 'form_feature', 'tab_none', 'Old y1:', 'Old y1:'), + ('old_y2', 've_review_audit_connec', 'form_feature', 'tab_none', 'Old y2:', 'Old y2:'), + ('expl_id', 've_review_audit_gully', 'form_feature', 'tab_none', 'Expl id:', 'Expl id:'), + ('field_date', 've_review_audit_gully', 'form_feature', 'tab_none', 'Field date:', 'Field date:'), + ('field_user', 've_review_audit_gully', 'form_feature', 'tab_none', 'Field user:', 'Field user:'), + ('gully_id', 've_review_audit_gully', 'form_feature', 'tab_none', 'Gully id:', 'Gully id:'), + ('id', 've_review_audit_gully', 'form_feature', 'tab_none', 'Id:', 'Id:'), + ('is_validated', 've_review_audit_gully', 'form_feature', 'tab_none', 'Is validated:', 'Is validated:'), + ('new_annotation', 've_review_audit_gully', 'form_feature', 'tab_none', 'New annotation:', 'New annotation:'), + ('new_connec_arccat_id', 've_review_audit_gully', 'form_feature', 'tab_none', 'New connec arccat id:', 'New connec arccat id:'), + ('new_feature_id', 've_review_audit_gully', 'form_feature', 'tab_none', 'New feature id:', 'New feature id:'), + ('new_featurecat_id', 've_review_audit_gully', 'form_feature', 'tab_none', 'New featurecat id:', 'New featurecat id:'), + ('new_gratecat_id', 've_review_audit_gully', 'form_feature', 'tab_none', 'New gratecat id:', 'New gratecat id:'), + ('new_groove', 've_review_audit_gully', 'form_feature', 'tab_none', 'New groove:', 'New groove:'), + ('new_gully_type', 've_review_audit_gully', 'form_feature', 'tab_none', 'New gully type:', 'New gully type:'), + ('new_matcat_id', 've_review_audit_gully', 'form_feature', 'tab_none', 'New matcat id:', 'New matcat id:'), + ('new_observ', 've_review_audit_gully', 'form_feature', 'tab_none', 'New observ:', 'New observ:'), + ('new_sandbox', 've_review_audit_gully', 'form_feature', 'tab_none', 'New sandbox:', 'New sandbox:'), + ('new_siphon', 've_review_audit_gully', 'form_feature', 'tab_none', 'New siphon:', 'New siphon:'), + ('new_top_elev', 've_review_audit_gully', 'form_feature', 'tab_none', 'New top elev:', 'New top elev:'), + ('new_units', 've_review_audit_gully', 'form_feature', 'tab_none', 'New units:', 'New units:'), + ('new_ymax', 've_review_audit_gully', 'form_feature', 'tab_none', 'New ymax:', 'New ymax:'), + ('old_annotation', 've_review_audit_gully', 'form_feature', 'tab_none', 'Old annotation:', 'Old annotation:'), + ('old_connec_arccat_id', 've_review_audit_gully', 'form_feature', 'tab_none', 'Old connec arccat id:', 'Old connec arccat id:'), + ('old_feature_id', 've_review_audit_gully', 'form_feature', 'tab_none', 'Old feature id:', 'Old feature id:'), + ('old_featurecat_id', 've_review_audit_gully', 'form_feature', 'tab_none', 'Old featurecat id:', 'Old featurecat id:'), + ('old_gratecat_id', 've_review_audit_gully', 'form_feature', 'tab_none', 'Old gratecat id:', 'Old gratecat id:'), + ('old_groove', 've_review_audit_gully', 'form_feature', 'tab_none', 'Old groove:', 'Old groove:'), + ('old_gully_type', 've_review_audit_gully', 'form_feature', 'tab_none', 'Old gully type:', 'Old gully type:'), + ('old_matcat_id', 've_review_audit_gully', 'form_feature', 'tab_none', 'Old matcat id:', 'Old matcat id:'), + ('old_observ', 've_review_audit_gully', 'form_feature', 'tab_none', 'Old observ:', 'Old observ:'), + ('old_sandbox', 've_review_audit_gully', 'form_feature', 'tab_none', 'Old sandbox:', 'Old sandbox:'), + ('old_siphon', 've_review_audit_gully', 'form_feature', 'tab_none', 'Old siphon:', 'Old siphon:'), + ('old_top_elev', 've_review_audit_gully', 'form_feature', 'tab_none', 'Old top elev:', 'Old top elev:'), + ('old_units', 've_review_audit_gully', 'form_feature', 'tab_none', 'Old units:', 'Old units:'), + ('old_ymax', 've_review_audit_gully', 'form_feature', 'tab_none', 'Old ymax:', 'Old ymax:'), + ('review_status_id', 've_review_audit_gully', 'form_feature', 'tab_none', 'Review status id:', 'Review status id:'), + ('new_matcat_id', 've_review_audit_node', 'form_feature', 'tab_none', 'New matcat id:', 'New matcat id:'), + ('new_node_type', 've_review_audit_node', 'form_feature', 'tab_none', 'New node type:', 'New node type:'), + ('new_top_elev', 've_review_audit_node', 'form_feature', 'tab_none', 'New top elev:', 'New top elev:'), + ('new_ymax', 've_review_audit_node', 'form_feature', 'tab_none', 'New ymax:', 'New ymax:'), + ('old_matcat_id', 've_review_audit_node', 'form_feature', 'tab_none', 'Old matcat id:', 'Old matcat id:'), + ('old_node_type', 've_review_audit_node', 'form_feature', 'tab_none', 'Old node type:', 'Old node type:'), + ('old_top_elev', 've_review_audit_node', 'form_feature', 'tab_none', 'Old top elev:', 'Old top elev:'), + ('old_ymax', 've_review_audit_node', 'form_feature', 'tab_none', 'Old ymax:', 'Old ymax:'), + ('connec_type', 've_review_connec', 'form_feature', 'tab_none', 'Connec type:', 'Connec type:'), + ('matcat_id', 've_review_connec', 'form_feature', 'tab_none', 'Matcat id:', 'Matcat id:'), + ('y1', 've_review_connec', 'form_feature', 'tab_none', 'Y1:', 'Y1:'), + ('y2', 've_review_connec', 'form_feature', 'tab_none', 'Y2:', 'Y2:'), + ('annotation', 've_review_gully', 'form_feature', 'tab_none', 'Annotation:', 'Annotation:'), + ('connec_arccat_id', 've_review_gully', 'form_feature', 'tab_none', 'Connec arccat id:', 'Connec arccat id:'), + ('expl_id', 've_review_gully', 'form_feature', 'tab_none', 'Expl id:', 'Expl id:'), + ('feature_id', 've_review_gully', 'form_feature', 'tab_none', 'Feature id:', 'Feature id:'), + ('featurecat_id', 've_review_gully', 'form_feature', 'tab_none', 'Featurecat id:', 'Featurecat id:'), + ('field_checked', 've_review_gully', 'form_feature', 'tab_none', 'Field checked:', 'Field checked:'), + ('groove', 've_review_gully', 'form_feature', 'tab_none', 'Groove:', 'Groove:'), + ('gully_id', 've_review_gully', 'form_feature', 'tab_none', 'Gully id:', 'Gully id:'), + ('gully_type', 've_review_gully', 'form_feature', 'tab_none', 'Gully type:', 'Gully type:'), + ('gullycat_id', 've_review_gully', 'form_feature', 'tab_none', 'Gullycat id:', 'Gullycat id:'), + ('is_validated', 've_review_gully', 'form_feature', 'tab_none', 'Is validated:', 'Is validated:'), + ('matcat_id', 've_review_gully', 'form_feature', 'tab_none', 'Matcat id:', 'Matcat id:'), + ('observ', 've_review_gully', 'form_feature', 'tab_none', 'Observ:', 'Observ:'), + ('review_obs', 've_review_gully', 'form_feature', 'tab_none', 'Review obs:', 'Review obs:'), + ('sandbox', 've_review_gully', 'form_feature', 'tab_none', 'Sandbox:', 'Sandbox:'), + ('siphon', 've_review_gully', 'form_feature', 'tab_none', 'Siphon:', 'Siphon:'), + ('top_elev', 've_review_gully', 'form_feature', 'tab_none', 'Top elev:', 'Top elev:'), + ('units', 've_review_gully', 'form_feature', 'tab_none', 'Units:', 'Units:'), + ('ymax', 've_review_gully', 'form_feature', 'tab_none', 'Ymax:', 'Ymax:'), + ('matcat_id', 've_review_node', 'form_feature', 'tab_none', 'Matcat id:', 'Matcat id:'), + ('node_type', 've_review_node', 'form_feature', 'tab_none', 'Node type:', 'Node type:'), + ('ymax', 've_review_node', 'form_feature', 'tab_none', 'Ymax:', 'Ymax:'), + ('macrodma_id', 've_samplepoint', 'form_feature', 'tab_none', 'Macroomzone id:', 'macroomzone_id'), + ('omzone_id', 've_samplepoint', 'form_feature', 'tab_none', 'Omzone:', 'Omzone:'), + ('omzone_id', 've_vnode', 'form_feature', 'tab_none', 'Omzone:', 'Omzone:'), + ('btn_doc_delete', 'arc', 'form_feature', 'tab_documents', NULL, 'Delete document'), + ('btn_doc_insert', 'arc', 'form_feature', 'tab_documents', NULL, 'Insert document'), + ('btn_doc_new', 'arc', 'form_feature', 'tab_documents', NULL, 'New document'), + ('date_from', 'arc', 'form_feature', 'tab_documents', 'Date from:', 'Date from:'), + ('date_to', 'arc', 'form_feature', 'tab_documents', 'Date to:', 'Date to:'), + ('doc_name', 'arc', 'form_feature', 'tab_documents', 'Doc id:', 'Doc id:'), + ('doc_type', 'arc', 'form_feature', 'tab_documents', 'Doc type:', 'Doc type:'), + ('open_doc', 'arc', 'form_feature', 'tab_documents', NULL, 'Open document'), + ('btn_link', 'arc', 'form_feature', 'tab_elements', NULL, 'Open link'), + ('delete_element', 'arc', 'form_feature', 'tab_elements', NULL, 'Delete element'), + ('element_id', 'arc', 'form_feature', 'tab_elements', 'Element id:', 'Element id'), + ('insert_element', 'arc', 'form_feature', 'tab_elements', NULL, 'Insert element'), + ('new_element', 'arc', 'form_feature', 'tab_elements', NULL, 'New element'), + ('open_element', 'arc', 'form_feature', 'tab_elements', NULL, 'Open element'), + ('btn_new_visit', 'arc', 'form_feature', 'tab_event', NULL, 'New visit'), + ('btn_open_gallery', 'arc', 'form_feature', 'tab_event', NULL, 'Open gallery'), + ('btn_open_visit', 'arc', 'form_feature', 'tab_event', NULL, 'Open visit'), + ('btn_open_visit_doc', 'arc', 'form_feature', 'tab_event', NULL, 'Open visit document'), + ('btn_open_visit_event', 'arc', 'form_feature', 'tab_event', NULL, 'Open visit event'), + ('date_event_from', 'arc', 'form_feature', 'tab_event', 'From:', 'From:'), + ('date_event_to', 'arc', 'form_feature', 'tab_event', 'To:', 'To:'), + ('parameter_id', 'arc', 'form_feature', 'tab_event', 'Parameter:', 'Parameter:'), + ('parameter_type', 'arc', 'form_feature', 'tab_event', 'Parameter type:', 'Parameter type:'), + ('btn_accept', 'arc', 'form_feature', 'tab_none', NULL, 'Accept'), + ('btn_apply', 'arc', 'form_feature', 'tab_none', NULL, 'Apply'), + ('btn_cancel', 'arc', 'form_feature', 'tab_none', NULL, 'Cancel'), + ('date_visit_from', 'arc', 'form_feature', 'tab_visit', 'From:', 'From:'), + ('date_visit_to', 'arc', 'form_feature', 'tab_visit', 'To:', 'To:'), + ('open_gallery', 'arc', 'form_feature', 'tab_visit', NULL, 'Open gallery'), + ('visit_class', 'arc', 'form_feature', 'tab_visit', 'Visit class:', 'Visit class:'), + ('acoeff', 'cat_arc', 'form_feature', 'tab_none', 'Acoeff:', 'Acoeff:'), + ('active', 'cat_arc', 'form_feature', 'tab_none', 'Active:', 'Active:'), + ('arc_type', 'cat_arc', 'form_feature', 'tab_none', 'Arc type:', 'Arc type:'), + ('area', 'cat_arc', 'form_feature', 'tab_none', 'Area:', 'Area:'), + ('brand_id', 'cat_arc', 'form_feature', 'tab_none', 'Brand:', 'brand'), + ('bulk', 'cat_arc', 'form_feature', 'tab_none', 'Bulk:', 'Bulk:'), + ('cost', 'cat_arc', 'form_feature', 'tab_none', 'Cost:', 'Cost:'), + ('cost_unit', 'cat_arc', 'form_feature', 'tab_none', 'Cost unit:', 'Cost unit:'), + ('descript', 'cat_arc', 'form_feature', 'tab_none', 'Descript:', 'Descript:'), + ('estimated_depth', 'cat_arc', 'form_feature', 'tab_none', 'Estimated depth:', 'Estimated depth:'), + ('id', 'cat_arc', 'form_feature', 'tab_none', 'Id:', 'Id:'), + ('label', 'cat_arc', 'form_feature', 'tab_none', 'Label:', 'Label:'), + ('link', 'cat_arc', 'form_feature', 'tab_none', 'Link:', 'Link:'), + ('m2bottom_cost', 'cat_arc', 'form_feature', 'tab_none', 'M2bottom cost:', 'M2bottom cost:'), + ('m3protec_cost', 'cat_arc', 'form_feature', 'tab_none', 'M3protec cost:', 'M3protec cost:'), + ('matcat_id', 'cat_arc', 'form_feature', 'tab_none', 'Matcat id:', 'Matcat id:'), + ('model_id', 'cat_arc', 'form_feature', 'tab_none', 'Model:', 'model'), + ('shape', 'cat_arc', 'form_feature', 'tab_none', 'Shape:', 'Shape:'), + ('svg', 'cat_arc', 'form_feature', 'tab_none', 'Svg:', 'Svg:'), + ('width', 'cat_arc', 'form_feature', 'tab_none', 'Width:', 'Width:'), + ('z1', 'cat_arc', 'form_feature', 'tab_none', 'Z1:', 'Z1:'), + ('z2', 'cat_arc', 'form_feature', 'tab_none', 'Z2:', 'Z2:'), + ('active', 'cat_brand', 'form_feature', 'tab_none', 'Active:', 'Active:'), + ('descript', 'cat_brand', 'form_feature', 'tab_none', 'Descript:', 'Descript:'), + ('id', 'cat_brand', 'form_feature', 'tab_none', 'Id:', 'Id:'), + ('link', 'cat_brand', 'form_feature', 'tab_none', 'Link:', 'Link:'), + ('active', 'cat_brand_model', 'form_feature', 'tab_none', 'Active:', 'Active:'), + ('catbrand_id', 'cat_brand_model', 'form_feature', 'tab_none', 'Catbrand id:', 'Catbrand id:'), + ('descript', 'cat_brand_model', 'form_feature', 'tab_none', 'Descript:', 'Descript:'), + ('id', 'cat_brand_model', 'form_feature', 'tab_none', 'Id:', 'Id:'), + ('link', 'cat_brand_model', 'form_feature', 'tab_none', 'Link:', 'Link:'), + ('active', 'cat_connec', 'form_feature', 'tab_none', 'Active:', 'Active:'), + ('brand_id', 'cat_connec', 'form_feature', 'tab_none', 'Brand:', 'brand'), + ('connec_type', 'cat_connec', 'form_feature', 'tab_none', 'Connec type:', 'Connec type:'), + ('cost_m3', 'cat_connec', 'form_feature', 'tab_none', 'Cost m3:', 'Cost m3:'), + ('cost_ml', 'cat_connec', 'form_feature', 'tab_none', 'Cost ml:', 'Cost ml:'), + ('cost_ut', 'cat_connec', 'form_feature', 'tab_none', 'Cost ut:', 'Cost ut:'), + ('descript', 'cat_connec', 'form_feature', 'tab_none', 'Descript:', 'Descript:'), + ('estimated_depth', 'cat_connec', 'form_feature', 'tab_none', 'Estimated depth:', 'Estimated depth'), + ('id', 'cat_connec', 'form_feature', 'tab_none', 'Id:', 'Id:'), + ('label', 'cat_connec', 'form_feature', 'tab_none', 'Label:', 'Label:'), + ('link', 'cat_connec', 'form_feature', 'tab_none', 'Link:', 'Link:'), + ('matcat_id', 'cat_connec', 'form_feature', 'tab_none', 'Matcat id:', 'Matcat id:'), + ('model_id', 'cat_connec', 'form_feature', 'tab_none', 'Model:', 'model'), + ('svg', 'cat_connec', 'form_feature', 'tab_none', 'Svg:', 'Svg:'), + ('active', 'cat_dscenario', 'form_feature', 'tab_none', 'Active:', 'Active:'), + ('descript', 'cat_dscenario', 'form_feature', 'tab_none', 'Descript:', 'Descript:'), + ('dscenario_id', 'cat_dscenario', 'form_feature', 'tab_none', 'Dscenario id:', 'Dscenario id:'), + ('dscenario_type', 'cat_dscenario', 'form_feature', 'tab_none', 'Dscenario type:', 'Dscenario type:'), + ('expl_id', 'cat_dscenario', 'form_feature', 'tab_none', 'Exploitation:', 'Exploitation:'), + ('log', 'cat_dscenario', 'form_feature', 'tab_none', 'Log:', 'Log:'), + ('name', 'cat_dscenario', 'form_feature', 'tab_none', 'Name:', 'Name:'), + ('parent_id', 'cat_dscenario', 'form_feature', 'tab_none', 'Parent id:', 'Parent id:'), + ('active', 'cat_element', 'form_feature', 'tab_none', 'Active:', 'Active:'), + ('brand', 'cat_element', 'form_feature', 'tab_none', 'Brand:', 'Brand:'), + ('descript', 'cat_element', 'form_feature', 'tab_none', 'Descript:', 'Descript:'), + ('elementtype_id', 'cat_element', 'form_feature', 'tab_none', 'Elementtype id:', 'Elementtype id:'), + ('geometry', 'cat_element', 'form_feature', 'tab_none', 'Geometry:', 'Geometry:'), + ('id', 'cat_element', 'form_feature', 'tab_none', 'Id:', 'Id:'), + ('link', 'cat_element', 'form_feature', 'tab_none', 'Link:', 'Link:'), + ('matcat_id', 'cat_element', 'form_feature', 'tab_none', 'Matcat id:', 'Matcat id:'), + ('model', 'cat_element', 'form_feature', 'tab_none', 'Model:', 'Model:'), + ('svg', 'cat_element', 'form_feature', 'tab_none', 'Svg:', 'Svg:'), + ('type', 'cat_element', 'form_feature', 'tab_none', 'Type:', 'Type:'), + ('active', 'cat_feature', 'form_feature', 'tab_none', 'Active:', 'Active:'), + ('child_layer', 'cat_feature', 'form_feature', 'tab_none', 'Child layer:', 'Child layer:'), + ('code_autofill', 'cat_feature', 'form_feature', 'tab_none', 'Code autofill:', 'Code autofill:'), + ('descript', 'cat_feature', 'form_feature', 'tab_none', 'Descript:', 'Descript:'), + ('feature_type', 'cat_feature', 'form_feature', 'tab_none', 'Feature type:', 'Feature type:'), + ('id', 'cat_feature', 'form_feature', 'tab_none', 'Id:', 'Id:'), + ('link_path', 'cat_feature', 'form_feature', 'tab_none', 'Link path:', 'Link path:'), + ('parent_layer', 'cat_feature', 'form_feature', 'tab_none', 'Parent layer:', 'Parent layer:'), + ('shortcut_key', 'cat_feature', 'form_feature', 'tab_none', 'Shortcut:', 'Shortcut:'), + ('system_id', 'cat_feature', 'form_feature', 'tab_none', 'System id:', 'System id:'), + ('epa_default', 'cat_feature_arc', 'form_feature', 'tab_none', 'Epa default:', 'Epa default:'), + ('id', 'cat_feature_arc', 'form_feature', 'tab_none', 'Id:', 'Id:'), + ('type', 'cat_feature_arc', 'form_feature', 'tab_none', 'Type:', 'Type:'), + ('id', 'cat_feature_connec', 'form_feature', 'tab_none', 'Id:', 'Id:'), + ('type', 'cat_feature_connec', 'form_feature', 'tab_none', 'Type:', 'Type:'), + ('choose_hemisphere', 'cat_feature_node', 'form_feature', 'tab_none', 'Choose hemisphere:', 'Choose hemisphere:'), + ('epa_default', 'cat_feature_node', 'form_feature', 'tab_none', 'Epa default:', 'Epa default:'), + ('graph_delimiter', 'cat_feature_node', 'form_feature', 'tab_none', 'Graph delimiter:', 'Graph delimiter:'), + ('id', 'cat_feature_node', 'form_feature', 'tab_none', 'Id:', 'Id:'), + ('isarcdivide', 'cat_feature_node', 'form_feature', 'tab_none', 'Divides arc:', 'Divides arc:'), + ('isprofilesurface', 'cat_feature_node', 'form_feature', 'tab_none', 'Profile surface:', 'Profile surface:'), + ('num_arcs', 'cat_feature_node', 'form_feature', 'tab_none', 'Arcs number:', 'Arcs number:'), + ('type', 'cat_feature_node', 'form_feature', 'tab_none', 'Type:', 'Type:'), + ('active', 'cat_link', 'form_feature', 'tab_none', 'Active:', 'Active'), + ('area', 'cat_link', 'form_feature', 'tab_none', 'Area:', 'Area'), + ('brand_id', 'cat_link', 'form_feature', 'tab_none', 'Brand:', 'Brand'), + ('cost', 'cat_link', 'form_feature', 'tab_none', 'Cost:', '(Price_compost.id) of full cost of conduit''s subministration and installation'), + ('cost_unit', 'cat_link', 'form_feature', 'tab_none', 'Cost unit:', 'Units measurements. (Only ml or ut. are allowed values). Sometimes the budget of an link could be treated as unitary price (applied using length=1)'), + ('descript', 'cat_link', 'form_feature', 'tab_none', 'Descript:', 'descript - Field to store additional information about the feature.'), + ('dext', 'cat_link', 'form_feature', 'tab_none', 'External diameter:', 'External diameter'), + ('dint', 'cat_link', 'form_feature', 'tab_none', 'Internal diameter:', 'Internal diameter'), + ('dnom', 'cat_link', 'form_feature', 'tab_none', 'Dnom:', 'Dnom:'), + ('estimated_depth', 'cat_link', 'form_feature', 'tab_none', 'Estimated depth:', 'Estimated depth'), + ('id', 'cat_link', 'form_feature', 'tab_none', 'Id:', 'Id'), + ('label', 'cat_link', 'form_feature', 'tab_none', 'Catalog label:', 'label - Label from the catalog of links, therefore it will not be editable in the form'), + ('link', 'cat_link', 'form_feature', 'tab_none', 'Link:', 'link - URL of the link that will open when clicking the button in the form bar. It must be edited from the database. link_path (from type tables) + link is concatenated'), + ('link_type', 'cat_link', 'form_feature', 'tab_none', 'Link type:', 'cat_linktype_id - Type of link. It is auto-populated based on the linkcat_id'), + ('m2bottom_cost', 'cat_link', 'form_feature', 'tab_none', 'Bottom cost:', '(Price_compost.id) of full cost of bottom''s trench arrangement'), + ('m3protec_cost', 'cat_link', 'form_feature', 'tab_none', 'Protection cost:', '(Price_compost.id) of full cost of conduit''s proteccion material'), + ('matcat_id', 'cat_link', 'form_feature', 'tab_none', 'Material:', 'matcat_id - Material of the element. It cannot be filled in. The one with the matcat_id field of the corresponding catalog is used'), + ('model_id', 'cat_link', 'form_feature', 'tab_none', 'Model:', 'Model'), + ('pnom', 'cat_link', 'form_feature', 'tab_none', 'Pnom:', 'Pnom:'), + ('svg', 'cat_link', 'form_feature', 'tab_none', 'Svg:', 'Svg'), + ('thickness', 'cat_link', 'form_feature', 'tab_none', 'Thickness:', 'Thickness:'), + ('width', 'cat_link', 'form_feature', 'tab_none', 'Width:', 'Width'), + ('z1', 'cat_link', 'form_feature', 'tab_none', 'Z1:', 'Z1:'), + ('z2', 'cat_link', 'form_feature', 'tab_none', 'Z2:', 'Z2:'), + ('active', 'cat_mat_arc', 'form_feature', 'tab_none', 'Active:', 'Active:'), + ('descript', 'cat_mat_arc', 'form_feature', 'tab_none', 'Descript:', 'Descript:'), + ('id', 'cat_mat_arc', 'form_feature', 'tab_none', 'Id:', 'Id:'), + ('link', 'cat_mat_arc', 'form_feature', 'tab_none', 'Link:', 'Link:'), + ('active', 'cat_mat_element', 'form_feature', 'tab_none', 'Active:', 'Active:'), + ('descript', 'cat_mat_element', 'form_feature', 'tab_none', 'Descript:', 'Descript:'), + ('id', 'cat_mat_element', 'form_feature', 'tab_none', 'Id:', 'Id:'), + ('link', 'cat_mat_element', 'form_feature', 'tab_none', 'Link:', 'Link:'), + ('active', 'cat_mat_node', 'form_feature', 'tab_none', 'Active:', 'Active:'), + ('descript', 'cat_mat_node', 'form_feature', 'tab_none', 'Descript:', 'Descript:'), + ('id', 'cat_mat_node', 'form_feature', 'tab_none', 'Id:', 'Id:'), + ('link', 'cat_mat_node', 'form_feature', 'tab_none', 'Link:', 'Link:'), + ('active', 'cat_material', 'form_feature', 'tab_none', 'Active:', 'id - Id'), + ('descript', 'cat_material', 'form_feature', 'tab_none', 'Descript:', 'id - Id'), + ('feature_type', 'cat_material', 'form_feature', 'tab_none', 'Feature type:', 'feature_type - Feature Type'), + ('featurecat_id', 'cat_material', 'form_feature', 'tab_none', 'Featurecat id:', 'Featurecat id:'), + ('id', 'cat_material', 'form_feature', 'tab_none', 'Id:', 'id - Id'), + ('link', 'cat_material', 'form_feature', 'tab_none', 'Link:', 'id - Id'), + ('n', 'cat_material', 'form_feature', 'tab_none', 'N:', 'id - Id'), + ('active', 'cat_node', 'form_feature', 'tab_none', 'Active:', 'Active:'), + ('brand_id', 'cat_node', 'form_feature', 'tab_none', 'Brand:', 'brand'), + ('cost', 'cat_node', 'form_feature', 'tab_none', 'Cost:', 'Cost:'), + ('cost_unit', 'cat_node', 'form_feature', 'tab_none', 'Cost unit:', 'Cost unit:'), + ('descript', 'cat_node', 'form_feature', 'tab_none', 'Descript:', 'Descript:'), + ('id', 'cat_node', 'form_feature', 'tab_none', 'Id:', 'Id:'), + ('label', 'cat_node', 'form_feature', 'tab_none', 'Label:', 'Label:'), + ('link', 'cat_node', 'form_feature', 'tab_none', 'Link:', 'Link:'), + ('matcat_id', 'cat_node', 'form_feature', 'tab_none', 'Matcat id:', 'Matcat id:'), + ('model_id', 'cat_node', 'form_feature', 'tab_none', 'Model:', 'model'), + ('node_type', 'cat_node', 'form_feature', 'tab_none', 'Node type:', 'Node type:'), + ('shape', 'cat_node', 'form_feature', 'tab_none', 'Shape:', 'Shape:'), + ('svg', 'cat_node', 'form_feature', 'tab_none', 'Svg:', 'Svg:'), + ('active', 'cat_owner', 'form_feature', 'tab_none', 'Active:', 'Active:'), + ('descript', 'cat_owner', 'form_feature', 'tab_none', 'Descript:', 'Descript:'), + ('id', 'cat_owner', 'form_feature', 'tab_none', 'Id:', 'Id:'), + ('link', 'cat_owner', 'form_feature', 'tab_none', 'Link:', 'Link:'), + ('active', 'cat_pavement', 'form_feature', 'tab_none', 'Active:', 'Active:'), + ('descript', 'cat_pavement', 'form_feature', 'tab_none', 'Descript:', 'Descript:'), + ('id', 'cat_pavement', 'form_feature', 'tab_none', 'Id:', 'Id:'), + ('link', 'cat_pavement', 'form_feature', 'tab_none', 'Link:', 'Link:'), + ('m2_cost', 'cat_pavement', 'form_feature', 'tab_none', 'M2 cost:', 'M2 cost:'), + ('thickness', 'cat_pavement', 'form_feature', 'tab_none', 'Thickness:', 'Thickness:'), + ('active', 'cat_soil', 'form_feature', 'tab_none', 'Active:', 'Active:'), + ('b', 'cat_soil', 'form_feature', 'tab_none', 'B:', 'B:'), + ('descript', 'cat_soil', 'form_feature', 'tab_none', 'Descript:', 'Descript:'), + ('id', 'cat_soil', 'form_feature', 'tab_none', 'Id:', 'Id:'), + ('link', 'cat_soil', 'form_feature', 'tab_none', 'Link:', 'Link:'), + ('m2trenchl_cost', 'cat_soil', 'form_feature', 'tab_none', 'M2trenchl cost:', 'M2trenchl cost:'), + ('m3exc_cost', 'cat_soil', 'form_feature', 'tab_none', 'M3exc cost:', 'M3exc cost:'), + ('m3excess_cost', 'cat_soil', 'form_feature', 'tab_none', 'M3excess cost:', 'M3excess cost:'), + ('m3fill_cost', 'cat_soil', 'form_feature', 'tab_none', 'M3fill cost:', 'M3fill cost:'), + ('trenchlining', 'cat_soil', 'form_feature', 'tab_none', 'Trenchlining:', 'Trenchlining:'), + ('y_param', 'cat_soil', 'form_feature', 'tab_none', 'Y param:', 'Y param:'), + ('active', 'cat_users', 'form_feature', 'tab_none', 'Active:', 'Active:'), + ('context', 'cat_users', 'form_feature', 'tab_none', 'Context:', 'Context:'), + ('id', 'cat_users', 'form_feature', 'tab_none', 'Id:', 'Id:'), + ('name', 'cat_users', 'form_feature', 'tab_none', 'Name:', 'Name:'), + ('sys_role', 'cat_users', 'form_feature', 'tab_none', 'Sys role:', 'Sys role:'), + ('active', 'cat_work', 'form_feature', 'tab_none', 'Active:', 'Active:'), + ('builtdate', 'cat_work', 'form_feature', 'tab_none', 'Builtdate:', 'Builtdate:'), + ('descript', 'cat_work', 'form_feature', 'tab_none', 'Descript:', 'Descript:'), + ('id', 'cat_work', 'form_feature', 'tab_none', 'Id:', 'Id:'), + ('link', 'cat_work', 'form_feature', 'tab_none', 'Link:', 'Link:'), + ('workid_key1', 'cat_work', 'form_feature', 'tab_none', 'Workid key1:', 'Workid key1:'), + ('workid_key2', 'cat_work', 'form_feature', 'tab_none', 'Workid key2:', 'Workid key2:'), + ('active', 'config_visit_parameter', 'form_feature', 'tab_none', 'Active:', 'Active:'), + ('code', 'config_visit_parameter', 'form_feature', 'tab_none', 'Code:', 'Code:'), + ('critcity', 'config_visit_parameter', 'form_feature', 'tab_none', 'Critcity:', 'Critcity:'), + ('data_type', 'config_visit_parameter', 'form_feature', 'tab_none', 'Data type:', 'Data type:'), + ('descript', 'config_visit_parameter', 'form_feature', 'tab_none', 'Descript:', 'Descript:'), + ('feature_type', 'config_visit_parameter', 'form_feature', 'tab_none', 'Feature type:', 'Feature type:'), + ('form_type', 'config_visit_parameter', 'form_feature', 'tab_none', 'Form type:', 'Form type:'), + ('id', 'config_visit_parameter', 'form_feature', 'tab_none', 'Id:', 'Id:'), + ('ismultifeature', 'config_visit_parameter', 'form_feature', 'tab_none', 'Is multifeature:', 'Is multifeature:'), + ('parameter_type', 'config_visit_parameter', 'form_feature', 'tab_none', 'Parameter type:', 'Parameter type:'), + ('short_descript', 'config_visit_parameter', 'form_feature', 'tab_none', 'Short descript:', 'Short descript:'), + ('vdefault', 'config_visit_parameter', 'form_feature', 'tab_none', 'Default:', 'Default:'), + ('btn_doc_delete', 'connec', 'form_feature', 'tab_documents', NULL, 'Delete document'), + ('btn_doc_insert', 'connec', 'form_feature', 'tab_documents', NULL, 'Insert document'), + ('btn_doc_new', 'connec', 'form_feature', 'tab_documents', NULL, 'New document'), + ('date_from', 'connec', 'form_feature', 'tab_documents', 'Date from:', 'Date from:'), + ('date_to', 'connec', 'form_feature', 'tab_documents', 'Date to:', 'Date to:'), + ('doc_name', 'connec', 'form_feature', 'tab_documents', 'Doc id:', 'Doc id:'), + ('doc_type', 'connec', 'form_feature', 'tab_documents', 'Doc type:', 'Doc type:'), + ('open_doc', 'connec', 'form_feature', 'tab_documents', NULL, 'Open document'), + ('btn_link', 'connec', 'form_feature', 'tab_elements', NULL, 'Open link'), + ('delete_element', 'connec', 'form_feature', 'tab_elements', NULL, 'Delete element'), + ('element_id', 'connec', 'form_feature', 'tab_elements', 'Element id:', 'Element id'), + ('insert_element', 'connec', 'form_feature', 'tab_elements', NULL, 'Insert element'), + ('new_element', 'connec', 'form_feature', 'tab_elements', NULL, 'New element'), + ('open_element', 'connec', 'form_feature', 'tab_elements', NULL, 'Open element'), + ('btn_new_visit', 'connec', 'form_feature', 'tab_event', NULL, 'New visit'), + ('btn_open_gallery', 'connec', 'form_feature', 'tab_event', NULL, 'Open gallery'), + ('btn_open_visit', 'connec', 'form_feature', 'tab_event', NULL, 'Open visit'), + ('btn_open_visit_doc', 'connec', 'form_feature', 'tab_event', NULL, 'Open visit document'), + ('btn_open_visit_event', 'connec', 'form_feature', 'tab_event', NULL, 'Open visit event'), + ('date_event_from', 'connec', 'form_feature', 'tab_event', 'From:', 'From:'), + ('date_event_to', 'connec', 'form_feature', 'tab_event', 'To:', 'To:'), + ('parameter_id', 'connec', 'form_feature', 'tab_event', 'Parameter:', 'Parameter:'), + ('parameter_type', 'connec', 'form_feature', 'tab_event', 'Parameter type:', 'Parameter type:'), + ('btn_link', 'connec', 'form_feature', 'tab_hydrometer', NULL, 'Open link'), + ('hydrometer_id', 'connec', 'form_feature', 'tab_hydrometer', 'Customer code:', 'Customer code'), + ('cat_period_id', 'connec', 'form_feature', 'tab_hydrometer_val', 'Cat period filter:', 'Cat period filter:'), + ('hydrometer_customer_code', 'connec', 'form_feature', 'tab_hydrometer_val', 'Customer code:', 'Customer code:'), + ('btn_accept', 'connec', 'form_feature', 'tab_none', NULL, 'Accept'), + ('btn_apply', 'connec', 'form_feature', 'tab_none', NULL, 'Apply'), + ('btn_cancel', 'connec', 'form_feature', 'tab_none', NULL, 'Cancel'), + ('date_visit_from', 'connec', 'form_feature', 'tab_visit', 'From:', 'From:'), + ('date_visit_to', 'connec', 'form_feature', 'tab_visit', 'To:', 'To:'), + ('open_gallery', 'connec', 'form_feature', 'tab_visit', NULL, 'Open gallery'), + ('visit_class', 'connec', 'form_feature', 'tab_visit', 'Visit class:', 'Visit class:'), + ('cancel', 'element_manager', 'form_element', 'tab_none', NULL, 'Close'), + ('create', 'element_manager', 'form_element', 'tab_none', NULL, 'Create'), + ('delete', 'element_manager', 'form_element', 'tab_none', NULL, 'Delete'), + ('element_id', 'element_manager', 'form_element', 'tab_none', 'Filter by: Element id:', 'Filter by: Element id:'), + ('class', 'ext_cat_hydrometer', 'form_feature', 'tab_none', 'Class:', 'Class:'), + ('code', 'ext_cat_hydrometer', 'form_feature', 'tab_none', 'Code:', 'Code:'), + ('dnom', 'ext_cat_hydrometer', 'form_feature', 'tab_none', 'Dnom:', 'Dnom:'), + ('hydrometer_type', 'ext_cat_hydrometer', 'form_feature', 'tab_none', 'Hydrometer type:', 'Hydrometer type:'), + ('id', 'ext_cat_hydrometer', 'form_feature', 'tab_none', 'Id:', 'Id:'), + ('link', 'ext_cat_hydrometer', 'form_feature', 'tab_none', 'Link:', 'Link:'), + ('madeby', 'ext_cat_hydrometer', 'form_feature', 'tab_none', 'Madeby:', 'Madeby:'), + ('multi_jet_flow', 'ext_cat_hydrometer', 'form_feature', 'tab_none', 'Multi jet flow:', 'Multi jet flow:'), + ('observ', 'ext_cat_hydrometer', 'form_feature', 'tab_none', 'Observ:', 'Observ:'), + ('picture', 'ext_cat_hydrometer', 'form_feature', 'tab_none', 'Picture:', 'Picture:'), + ('svg', 'ext_cat_hydrometer', 'form_feature', 'tab_none', 'Svg:', 'Svg:'), + ('ulmc', 'ext_cat_hydrometer', 'form_feature', 'tab_none', 'Ulmc:', 'Ulmc:'), + ('url', 'ext_cat_hydrometer', 'form_feature', 'tab_none', 'Url:', 'Url:'), + ('voltman_flow', 'ext_cat_hydrometer', 'form_feature', 'tab_none', 'Voltman flow:', 'Voltman flow:'), + ('code', 'ext_cat_period', 'form_feature', 'tab_none', 'Code:', 'Code:'), + ('comment', 'ext_cat_period', 'form_feature', 'tab_none', 'Comment:', 'Comment:'), + ('end_date', 'ext_cat_period', 'form_feature', 'tab_none', 'End date:', 'End date:'), + ('expl_id', 'ext_cat_period', 'form_feature', 'tab_none', 'Expl id:', 'Expl id:'), + ('id', 'ext_cat_period', 'form_feature', 'tab_none', 'Id:', 'Id:'), + ('period_name', 'ext_cat_period', 'form_feature', 'tab_none', 'Period name:', 'Period name:'), + ('period_seconds', 'ext_cat_period', 'form_feature', 'tab_none', 'Period seconds:', 'Period seconds:'), + ('period_type', 'ext_cat_period', 'form_feature', 'tab_none', 'Period type:', 'Period type:'), + ('period_year', 'ext_cat_period', 'form_feature', 'tab_none', 'Period year:', 'Period year:'), + ('start_date', 'ext_cat_period', 'form_feature', 'tab_none', 'Start date:', 'Start date:'), + ('active', 'ext_municipality', 'form_feature', 'tab_none', 'Active:', 'Active:'), + ('muni_id', 'ext_municipality', 'form_feature', 'tab_none', 'Muni id:', 'Muni id:'), + ('name', 'ext_municipality', 'form_feature', 'tab_none', 'Name:', 'Name:'), + ('observ', 'ext_municipality', 'form_feature', 'tab_none', 'Observ:', 'Observ:'), + ('btn_close', 'generic', 'audit', 'tab_none', NULL, 'Close'), + ('btn_close', 'generic', 'audit_manager', 'tab_none', NULL, 'Close'), + ('btn_open', 'generic', 'audit_manager', 'tab_none', NULL, 'Open'), + ('btn_open_date', 'generic', 'audit_manager', 'tab_none', NULL, 'Open'), + ('date_to', 'generic', 'audit_manager', 'tab_none', 'Select date:', 'Select date'), + ('admin_check', 'generic', 'check_project', 'tab_data', 'Check admin data:', 'Check admin data:'), + ('epa_check', 'generic', 'check_project', 'tab_data', 'Check EPA data:', 'Check EPA data:'), + ('graph_check', 'generic', 'check_project', 'tab_data', 'Check graph data:', 'Check graph data:'), + ('om_check', 'generic', 'check_project', 'tab_data', 'Check om data:', 'Check om data:'), + ('plan_check', 'generic', 'check_project', 'tab_data', 'Check plan data:', 'Check plan data:'), + ('qgisproj_check', 'generic', 'check_project', 'tab_data', 'Qgis Project:', 'Qgis Project:'), + ('verified_exceptions', 'generic', 'check_project', 'tab_data', 'Ignore verified exception:', 'Ignore verified exception:'), + ('versions_check', 'generic', 'check_project', 'tab_data', 'Versions:', 'Versions:'), + ('active', 'generic', 'create_organization', 'tab_none', 'Active:', 'Active'), + ('btn_accept', 'generic', 'create_organization', 'tab_none', ':', 'Accept'), + ('btn_close', 'generic', 'create_organization', 'tab_none', ':', 'Close'), + ('descript', 'generic', 'create_organization', 'tab_none', 'Description:', 'Description'), + ('name', 'generic', 'create_organization', 'tab_none', 'Name:', 'Name'), + ('spacer_1', 'generic', 'create_organization', 'tab_none', ':', ':'), + ('tbl_controls', 'generic', 'dscenario', 'tab_controls', ':', 'Table'), + ('tbl_junction', 'generic', 'dscenario', 'tab_junction', ':', 'Table'), + ('btn_close', 'generic', 'dscenario', 'tab_none', NULL, 'Close'), + ('tbl_pump', 'generic', 'dscenario', 'tab_pump', ':', 'Table'), + ('btn_close', 'generic', 'dscenario_manager', 'tab_none', NULL, 'Close'), + ('chk_show_inactive', 'generic', 'dscenario_manager', 'tab_none', 'Show inactive:', 'Show inactive'), + ('table_view', 'generic', 'dscenario_manager', 'tab_none', ':', 'Table'), + ('btn_close', 'generic', 'epa_manager', 'tab_none', NULL, 'Close'), + ('table_view', 'generic', 'epa_manager', 'tab_none', ':', 'Table'), + ('txt_info', 'generic', 'epa_manager', 'tab_none', 'Info:', 'Table'), + ('btn_accept', 'generic', 'epa_selector', 'tab_none', NULL, 'Accept'), + ('btn_cancel', 'generic', 'epa_selector', 'tab_none', NULL, 'Cancel'), + ('result_name_compare', 'generic', 'epa_selector', 'tab_result', 'Result name (to compare):', 'Result name (to compare)'), + ('result_name_show', 'generic', 'epa_selector', 'tab_result', 'Result name (to show):', 'Result name'), + ('category_type', 'generic', 'form_featuretype_change', 'tab_none', 'Category:', 'Category'), + ('feature_type', 'generic', 'form_featuretype_change', 'tab_none', 'Current feature type:', 'Current feature type'), + ('feature_type_new', 'generic', 'form_featuretype_change', 'tab_none', 'New feature type:', 'New feature type'), + ('featurecat_id', 'generic', 'form_featuretype_change', 'tab_none', 'Catalog id:', 'Catalog id'), + ('function_type', 'generic', 'form_featuretype_change', 'tab_none', 'Function:', 'Function'), + ('location_type', 'generic', 'form_featuretype_change', 'tab_none', 'Location:', 'Location'), + ('visit_id', 'generic', 'form_visit', 'tab_data', 'Visit id:', 'Visit id:'), + ('btn_options', 'generic', 'go2epa', 'tab_data', NULL, 'Configure EPA options'), + ('btn_selector', 'generic', 'go2epa', 'tab_data', NULL, 'Open selector dialog'), + ('resultId', 'generic', 'go2epa', 'tab_data', 'Result Name:', 'Name for the EPA result'), + ('btn_download_inp', 'generic', 'go2epa', 'tab_log', NULL, 'Download INP file'), + ('btn_download_rpt', 'generic', 'go2epa', 'tab_log', NULL, 'Download RPT file'), + ('btn_close', 'generic', 'go2epa', 'tab_none', NULL, 'Close dialog'), + ('btn_execute_epa', 'generic', 'go2epa', 'tab_none', NULL, 'Execute EPA logic'), + ('arc_id', 'generic', 'link_to_connec', 'tab_none', 'Connect to arc:', 'Arc Id'), + ('btn_accept', 'generic', 'link_to_connec', 'tab_none', ':', 'Accept'), + ('btn_add', 'generic', 'link_to_connec', 'tab_none', NULL, 'Add'), + ('btn_close', 'generic', 'link_to_connec', 'tab_none', ':', 'Close'), + ('btn_expr_arc', 'generic', 'link_to_connec', 'tab_none', NULL, 'Select by Expression - Set closest point'), + ('btn_filter_expression', 'generic', 'link_to_connec', 'tab_none', NULL, 'Filter by expression'), + ('btn_remove', 'generic', 'link_to_connec', 'tab_none', NULL, 'Remove'), + ('btn_set_to_arc', 'generic', 'link_to_connec', 'tab_none', NULL, 'Set to arc'), + ('btn_snapping', 'generic', 'link_to_connec', 'tab_none', NULL, 'Select on canvas'), + ('id', 'generic', 'link_to_connec', 'tab_none', 'Connec Id:', 'Connec Id'), + ('linkcat', 'generic', 'link_to_connec', 'tab_none', 'Link catalog:', 'Link catalog'), + ('max_distance', 'generic', 'link_to_connec', 'tab_none', 'Max. distance:', 'Max. distance'), + ('pipe_diameter', 'generic', 'link_to_connec', 'tab_none', 'Maximum Pipe diameter:', 'Maximum Pipe diameter'), + ('active', 'generic', 'nvo_controls', 'tab_none', 'Active:', 'Active:'), + ('sector_id', 'generic', 'nvo_controls', 'tab_none', 'Sector Id:', 'Sector Id:'), + ('curve_type', 'generic', 'nvo_curves', 'tab_none', 'Curve Type:', 'Curve Type:'), + ('descript', 'generic', 'nvo_curves', 'tab_none', 'Description:', 'Description:'), + ('expl_id', 'generic', 'nvo_curves', 'tab_none', 'Exploitation Id:', 'Exploitation Id:'), + ('id', 'generic', 'nvo_curves', 'tab_none', 'Curve Id:', 'Curve Id:'), + ('btn_cancel', 'generic', 'nvo_manager', 'tab_none', NULL, 'Close'), + ('expl_id', 'generic', 'nvo_patterns', 'tab_none', 'Exploitation Id:', 'Exploitation Id:'), + ('observ', 'generic', 'nvo_patterns', 'tab_none', 'Observation:', 'Observation:'), + ('pattern_id', 'generic', 'nvo_patterns', 'tab_none', 'Pattern Id:', 'Pattern Id:'), + ('num_value', 'generic', 'psector', 'tab_add_info', 'Num value:', 'Num value'), + ('text3', 'generic', 'psector', 'tab_add_info', 'Text 3:', 'Text 3:'), + ('text4', 'generic', 'psector', 'tab_add_info', 'Text 4:', 'Text 4:'), + ('text5', 'generic', 'psector', 'tab_add_info', 'Text 5:', 'Text 5:'), + ('text6', 'generic', 'psector', 'tab_add_info', 'Text 6:', 'Text 6:'), + ('gexpenses', 'generic', 'psector', 'tab_budget', 'General expenses %:', 'General expenses %'), + ('lbl_total_arc', 'generic', 'psector', 'tab_budget', 'Total arcs:', 'Total arcs'), + ('lbl_total_node', 'generic', 'psector', 'tab_budget', 'Total nodes:', 'Total nodes'), + ('lbl_total_other', 'generic', 'psector', 'tab_budget', 'Total other prices:', 'Total other prices:'), + ('other', 'generic', 'psector', 'tab_budget', 'Other expenses %:', 'Other expenses %'), + ('pca', 'generic', 'psector', 'tab_budget', 'Total:', 'Total:'), + ('pec', 'generic', 'psector', 'tab_budget', 'Total:', 'Total:'), + ('pec_vat', 'generic', 'psector', 'tab_budget', 'Total:', 'Total:'), + ('pem', 'generic', 'psector', 'tab_budget', 'Total:', 'Total:'), + ('vat', 'generic', 'psector', 'tab_budget', 'VAT: %:', 'VAT: %'), + ('table_view_docs', 'generic', 'psector', 'tab_document', ':', 'Table'), + ('active', 'generic', 'psector', 'tab_general', 'Active:', 'Active:'), + ('atlas_id', 'generic', 'psector', 'tab_general', 'Atlas id:', 'Atlas id'), + ('chk_enable_all', 'generic', 'psector', 'tab_general', 'Show obsolete:', 'Enable all (visualize obsolete state on features related to psector)'), + ('creation_date', 'generic', 'psector', 'tab_general', 'Creation date:', 'Creation date:'), + ('descript', 'generic', 'psector', 'tab_general', 'Descript:', 'Descript'), + ('expl_id', 'generic', 'psector', 'tab_general', 'Exploitation:', 'Exploitation'), + ('ext_code', 'generic', 'psector', 'tab_general', 'Ext code: ', 'Ext code'), + ('name', 'generic', 'psector', 'tab_general', 'Name: ', 'Name'), + ('observ', 'generic', 'psector', 'tab_general', 'Observation:', 'Observation'), + ('parent_id', 'generic', 'psector', 'tab_general', 'Parent id: ', 'Parent id'), + ('priority', 'generic', 'psector', 'tab_general', 'Priority:', 'Priority'), + ('psector_id', 'generic', 'psector', 'tab_general', 'Psector id:', 'Psector id'), + ('psector_type', 'generic', 'psector', 'tab_general', 'Psector type:', 'Psector type:'), + ('rotation', 'generic', 'psector', 'tab_general', 'Rotation:', 'Rotation'), + ('scale', 'generic', 'psector', 'tab_general', 'Scale:', 'Scale'), + ('status', 'generic', 'psector', 'tab_general', 'Status: ', 'Status'), + ('text1', 'generic', 'psector', 'tab_general', 'Text 1:', 'Text 1:'), + ('text2', 'generic', 'psector', 'tab_general', 'Text 2:', 'Text 2:'), + ('workcat_id', 'generic', 'psector', 'tab_general', 'Worcat id:', 'Worcat id'), + ('workcat_id_plan', 'generic', 'psector', 'tab_general', 'Worcat id plan:', 'Worcat id plan'), + ('btn_accept', 'generic', 'psector', 'tab_none', NULL, 'Accept'), + ('btn_close', 'generic', 'psector', 'tab_none', NULL, 'Cancel'), + ('tbl_prices', 'generic', 'psector', 'tab_other_prices_all', ':', 'Table'), + ('tbl_prices_plan', 'generic', 'psector', 'tab_other_prices_mine', ':', 'Table'), + ('table_view_arc', 'generic', 'psector', 'tab_relations_arc', ':', 'Table'), + ('table_view_connec', 'generic', 'psector', 'tab_relations_connec', ':', 'Table'), + ('table_view_node', 'generic', 'psector', 'tab_relations_node', ':', 'Table'), + ('btn_close', 'generic', 'psector_manager', 'tab_none', NULL, 'Close'), + ('chk_show_inactive', 'generic', 'psector_manager', 'tab_none', 'Show inactive:', 'Show inactive'), + ('table_view', 'generic', 'psector_manager', 'tab_none', ':', 'Table'), + ('txt_info', 'generic', 'psector_manager', 'tab_none', 'Info:', 'Table'), + ('btn_close', 'generic', 'snapshot_view', 'tab_none', NULL, 'Close'), + ('btn_grid', 'generic', 'snapshot_view', 'tab_none', NULL, ' '), + ('btn_run', 'generic', 'snapshot_view', 'tab_none', NULL, 'Run'), + ('chk_arc', 'generic', 'snapshot_view', 'tab_none', 'Arcs:', 'Arcs'), + ('chk_connec', 'generic', 'snapshot_view', 'tab_none', 'Connecs:', 'Connecs'), + ('chk_doc', 'generic', 'snapshot_view', 'tab_none', 'Documents:', 'Documents'), + ('chk_element', 'generic', 'snapshot_view', 'tab_none', 'Elements:', 'Elements'), + ('chk_gully', 'generic', 'snapshot_view', 'tab_none', 'Gullies:', 'Gullies'), + ('chk_link', 'generic', 'snapshot_view', 'tab_none', 'Links:', 'Links'), + ('chk_node', 'generic', 'snapshot_view', 'tab_none', 'Nodes:', 'Nodes'), + ('date', 'generic', 'snapshot_view', 'tab_none', 'Select date:', 'Select date'), + ('extension', 'generic', 'snapshot_view', 'tab_none', 'Grid Extension:', 'Grid Extension'), + ('btn_close', 'generic', 'workspace_manager', 'tab_none', NULL, 'Close'), + ('table_view', 'generic', 'workspace_manager', 'tab_none', ':', 'Table'), + ('txt_info', 'generic', 'workspace_manager', 'tab_none', 'Info:', 'Table'), + ('btn_accept', 'generic', 'workspace_open', 'tab_none', ':', ':'), + ('btn_close', 'generic', 'workspace_open', 'tab_none', ':', ':'), + ('descript', 'generic', 'workspace_open', 'tab_none', 'Description: ', 'Description: '), + ('name', 'generic', 'workspace_open', 'tab_none', 'Workspace name: ', 'Workspace name: '), + ('private', 'generic', 'workspace_open', 'tab_none', 'Private Workspace:', 'Private Workspace:'), + ('frame1', 'infoplan', 'form_feature', 'tab_none', NULL, 'frame1'), + ('frame2', 'infoplan', 'form_feature', 'tab_none', NULL, 'frame2'), + ('initial_cost', 'infoplan', 'form_feature', 'tab_none', 'Unitary cost:', 'Unitary cost:'), + ('length', 'infoplan', 'form_feature', 'tab_none', 'Length:', 'Length:'), + ('total_cost', 'infoplan', 'form_feature', 'tab_none', 'Total cost:', 'Total cost:'), + ('active', 'inp_controls', 'form_feature', 'tab_none', 'Active:', 'Active:'), + ('id', 'inp_controls', 'form_feature', 'tab_none', 'Id:', 'Id:'), + ('sector_id', 'inp_controls', 'form_feature', 'tab_none', 'Sector id:', 'Sector id:'), + ('text', 'inp_controls', 'form_feature', 'tab_none', 'Text:', 'Text:'), + ('curve_type', 'inp_curve', 'form_feature', 'tab_none', 'Curve type:', 'Curve type:'), + ('expl_id', 'inp_curve', 'form_feature', 'tab_none', 'Expl id:', 'Expl id:'), + ('id', 'inp_curve', 'form_feature', 'tab_none', 'Id:', 'Id:'), + ('curve_id', 'inp_curve_value', 'form_feature', 'tab_none', 'Curve id:', 'Curve id:'), + ('id', 'inp_curve_value', 'form_feature', 'tab_none', 'Id:', 'Id:'), + ('x_value', 'inp_curve_value', 'form_feature', 'tab_none', 'X value:', 'X value:'), + ('y_value', 'inp_curve_value', 'form_feature', 'tab_none', 'Y value:', 'Y value:'), + ('active', 'inp_dscenario_controls', 'form_feature', 'tab_none', 'Active:', 'Active:'), + ('dscenario_id', 'inp_dscenario_controls', 'form_feature', 'tab_none', 'Dscenario id:', 'Dscenario id:'), + ('id', 'inp_dscenario_controls', 'form_feature', 'tab_none', 'Id:', 'Id:'), + ('sector_id', 'inp_dscenario_controls', 'form_feature', 'tab_none', 'Sector id:', 'Sector id:'), + ('text', 'inp_dscenario_controls', 'form_feature', 'tab_none', 'Text:', 'Text:'), + ('curve_id', 'inp_dscenario_frpump', 'form_feature', 'tab_none', 'Curve id:', 'Curve id'), + ('dscenario_id', 'inp_dscenario_frpump', 'form_feature', 'tab_none', 'Dscenario id:', 'Dscenario id'), + ('element_id', 'inp_dscenario_frpump', 'form_feature', 'tab_none', 'Element id:', 'Element id'), + ('status', 'inp_dscenario_frpump', 'form_feature', 'tab_none', 'Status:', 'Status'), + ('dscenario_id', 'inp_dscenario_junction', 'form_feature', 'tab_none', 'Dscenario id:', 'Dscenario id:'), + ('node_id', 'inp_dscenario_junction', 'form_feature', 'tab_none', 'Node id:', 'Node id:'), + ('expl_id', 'inp_pattern', 'form_feature', 'tab_none', 'Expl id:', 'Expl id:'), + ('observ', 'inp_pattern', 'form_feature', 'tab_none', 'Observ:', 'Observ:'), + ('pattern_id', 'inp_pattern', 'form_feature', 'tab_none', 'Pattern id:', 'Pattern id:'), + ('tsparameters', 'inp_pattern', 'form_feature', 'tab_none', 'Tsparameters:', 'Tsparameters:'), + ('factor_1', 'inp_pattern_value', 'form_feature', 'tab_none', 'Factor 1:', 'Factor 1:'), + ('factor_10', 'inp_pattern_value', 'form_feature', 'tab_none', 'Factor 10:', 'Factor 10:'), + ('factor_11', 'inp_pattern_value', 'form_feature', 'tab_none', 'Factor 11:', 'Factor 11:'), + ('factor_12', 'inp_pattern_value', 'form_feature', 'tab_none', 'Factor 12:', 'Factor 12:'), + ('factor_13', 'inp_pattern_value', 'form_feature', 'tab_none', 'Factor 13:', 'Factor 13:'), + ('factor_14', 'inp_pattern_value', 'form_feature', 'tab_none', 'Factor 14:', 'Factor 14:'), + ('factor_15', 'inp_pattern_value', 'form_feature', 'tab_none', 'Factor 15:', 'Factor 15:'), + ('factor_16', 'inp_pattern_value', 'form_feature', 'tab_none', 'Factor 16:', 'Factor 16:'), + ('factor_17', 'inp_pattern_value', 'form_feature', 'tab_none', 'Factor 17:', 'Factor 17:'), + ('factor_18', 'inp_pattern_value', 'form_feature', 'tab_none', 'Factor 18:', 'Factor 18:'), + ('factor_2', 'inp_pattern_value', 'form_feature', 'tab_none', 'Factor 2:', 'Factor 2:'), + ('factor_3', 'inp_pattern_value', 'form_feature', 'tab_none', 'Factor 3:', 'Factor 3:'), + ('factor_4', 'inp_pattern_value', 'form_feature', 'tab_none', 'Factor 4:', 'Factor 4:'), + ('factor_5', 'inp_pattern_value', 'form_feature', 'tab_none', 'Factor 5:', 'Factor 5:'), + ('factor_6', 'inp_pattern_value', 'form_feature', 'tab_none', 'Factor 6:', 'Factor 6:'), + ('factor_7', 'inp_pattern_value', 'form_feature', 'tab_none', 'Factor 7:', 'Factor 7:'), + ('factor_8', 'inp_pattern_value', 'form_feature', 'tab_none', 'Factor 8:', 'Factor 8:'), + ('factor_9', 'inp_pattern_value', 'form_feature', 'tab_none', 'Factor 9:', 'Factor 9:'), + ('id', 'inp_pattern_value', 'form_feature', 'tab_none', 'Id:', 'Id:'), + ('pattern_id', 'inp_pattern_value', 'form_feature', 'tab_none', 'Pattern id:', 'Pattern id:'), + ('descript', 'macroexploitation', 'form_feature', 'tab_none', 'Descript:', 'Descript:'), + ('macroexpl_id', 'macroexploitation', 'form_feature', 'tab_none', 'Macroexpl id:', 'Macroexpl id:'), + ('name', 'macroexploitation', 'form_feature', 'tab_none', 'Name:', 'Name:'), + ('builtdate', 'new_workcat', 'form_catalog', 'tab_none', 'Builtdate:', 'Builtdate:'), + ('descript', 'new_workcat', 'form_catalog', 'tab_none', 'Description:', 'Description:'), + ('id', 'new_workcat', 'form_catalog', 'tab_none', 'Work id:', 'Work id:'), + ('link', 'new_workcat', 'form_catalog', 'tab_none', 'Link:', 'Link:'), + ('workid_key1', 'new_workcat', 'form_catalog', 'tab_none', 'Workid key 1:', 'Workid key 1:'), + ('workid_key2', 'new_workcat', 'form_catalog', 'tab_none', 'Workid key 2:', 'Workid key 2:'), + ('btn_doc_delete', 'node', 'form_feature', 'tab_documents', NULL, 'Delete document'), + ('btn_doc_insert', 'node', 'form_feature', 'tab_documents', NULL, 'Insert document'), + ('btn_doc_new', 'node', 'form_feature', 'tab_documents', NULL, 'New document'), + ('date_from', 'node', 'form_feature', 'tab_documents', 'Date from:', 'Date from:'), + ('date_to', 'node', 'form_feature', 'tab_documents', 'Date to:', 'Date to:'), + ('doc_name', 'node', 'form_feature', 'tab_documents', 'Doc id:', 'Doc id:'), + ('doc_type', 'node', 'form_feature', 'tab_documents', 'Doc type:', 'Doc type:'), + ('open_doc', 'node', 'form_feature', 'tab_documents', NULL, 'Open document'), + ('btn_link', 'node', 'form_feature', 'tab_elements', NULL, 'Open link'), + ('delete_element', 'node', 'form_feature', 'tab_elements', NULL, 'Delete element'), + ('delete_from_dscenario', 'node', 'form_feature', 'tab_elements', NULL, 'Remove frelem from dscenario'), + ('element_id', 'node', 'form_feature', 'tab_elements', 'Element id:', 'Element id'), + ('insert_element', 'node', 'form_feature', 'tab_elements', NULL, 'Insert element'), + ('insert_frelem_dscenario', 'node', 'form_feature', 'tab_elements', NULL, 'Insert frelem into dscenario'), + ('new_element', 'node', 'form_feature', 'tab_elements', NULL, 'New element'), + ('open_element', 'node', 'form_feature', 'tab_elements', NULL, 'Open element'), + ('btn_new_visit', 'node', 'form_feature', 'tab_event', NULL, 'New visit'), + ('btn_open_gallery', 'node', 'form_feature', 'tab_event', NULL, 'Open gallery'), + ('btn_open_visit', 'node', 'form_feature', 'tab_event', NULL, 'Open visit'), + ('btn_open_visit_doc', 'node', 'form_feature', 'tab_event', NULL, 'Open visit document'), + ('btn_open_visit_event', 'node', 'form_feature', 'tab_event', NULL, 'Open visit event'), + ('date_event_from', 'node', 'form_feature', 'tab_event', 'From:', 'From:'), + ('date_event_to', 'node', 'form_feature', 'tab_event', 'To:', 'To:'), + ('parameter_id', 'node', 'form_feature', 'tab_event', 'Parameter:', 'Parameter:'), + ('parameter_type', 'node', 'form_feature', 'tab_event', 'Parameter type:', 'Parameter type:'), + ('btn_accept', 'node', 'form_feature', 'tab_none', NULL, 'Accept'), + ('btn_apply', 'node', 'form_feature', 'tab_none', NULL, 'Apply'), + ('btn_cancel', 'node', 'form_feature', 'tab_none', NULL, 'Cancel'), + ('date_visit_from', 'node', 'form_feature', 'tab_visit', 'From:', 'From:'), + ('date_visit_to', 'node', 'form_feature', 'tab_visit', 'To:', 'To:'), + ('open_gallery', 'node', 'form_feature', 'tab_visit', NULL, 'Open gallery'), + ('visit_class', 'node', 'form_feature', 'tab_visit', 'Visit class:', 'Visit class:'), + ('active', 'om_visit_cat', 'form_feature', 'tab_none', 'Active:', 'Active:'), + ('alias', 'om_visit_cat', 'form_feature', 'tab_none', 'Alias:', 'Alias:'), + ('descript', 'om_visit_cat', 'form_feature', 'tab_none', 'Descript:', 'Descript:'), + ('duration', 'om_visit_cat', 'form_feature', 'tab_none', 'Duration:', 'Duration:'), + ('enddate', 'om_visit_cat', 'form_feature', 'tab_none', 'End date:', 'End date:'), + ('extusercat_id', 'om_visit_cat', 'form_feature', 'tab_none', 'Extsuercat id:', 'Extsuercat id:'), + ('feature_type', 'om_visit_cat', 'form_feature', 'tab_none', 'Feature Type:', 'Feature Type:'), + ('id', 'om_visit_cat', 'form_feature', 'tab_none', 'Id:', 'Id:'), + ('name', 'om_visit_cat', 'form_feature', 'tab_none', 'Name:', 'Name:'), + ('startdate', 'om_visit_cat', 'form_feature', 'tab_none', 'Start date:', 'Start date:'), + ('backbutton', 'om_visit_event_photo', 'form_list_footer', 'tab_none', 'Enrera:', 'Enrera:'), + ('filetype', 'om_visit_event_photo', 'form_list_header', 'tab_none', 'Tipus fitxer:', 'Tipus fitxer:'), + ('limit', 'om_visit_event_photo', 'form_list_header', 'tab_none', 'Limit:', 'Limit:'), + ('arc_id', 'plan_arc_x_pavement', 'form_feature', 'tab_none', 'Arc id:', 'Arc id:'), + ('id', 'plan_arc_x_pavement', 'form_feature', 'tab_none', 'Id:', 'Id:'), + ('pavcat_id', 'plan_arc_x_pavement', 'form_feature', 'tab_none', 'Pavcat id:', 'Pavcat id:'), + ('percent', 'plan_arc_x_pavement', 'form_feature', 'tab_none', 'Percent:', 'Percent:'), + ('descript', 'price_compost', 'form_feature', 'tab_none', 'Descript:', 'Descript:'), + ('id', 'price_compost', 'form_feature', 'tab_none', 'Id:', 'Id:'), + ('price', 'price_compost', 'form_feature', 'tab_none', 'Price:', 'Price:'), + ('pricecat_id', 'price_compost', 'form_feature', 'tab_none', 'Pricecat id:', 'Pricecat id:'), + ('text', 'price_compost', 'form_feature', 'tab_none', 'Text:', 'Text:'), + ('unit', 'price_compost', 'form_feature', 'tab_none', 'Unit:', 'Unit:'), + ('compost_id', 'price_compost_value', 'form_feature', 'tab_none', 'Compost id:', 'Compost id:'), + ('id', 'price_compost_value', 'form_feature', 'tab_none', 'Id:', 'Id:'), + ('simple_id', 'price_compost_value', 'form_feature', 'tab_none', 'Simple id:', 'Simple id:'), + ('value', 'price_compost_value', 'form_feature', 'tab_none', 'Value:', 'Value:'), + ('descript', 'price_value_unit', 'form_feature', 'tab_none', 'Descript:', 'Descript:'), + ('id', 'price_value_unit', 'form_feature', 'tab_none', 'Id:', 'Id:'), + ('composer', 'print', 'form_print', 'tab_none', 'Composer:', 'Composer:'), + ('rotation', 'print', 'form_print', 'tab_none', 'Rotation:', 'Rotation:'), + ('title', 'print', 'form_print', 'tab_none', 'Title:', 'Title:'), + ('add_muni', 'search', 'form_feature', 'tab_none', 'Municipality:', 'Municipality:'), + ('add_postnumber', 'search', 'form_feature', 'tab_none', 'Number:', 'Number:'), + ('add_street', 'search', 'form_feature', 'tab_none', 'Street:', 'Street:'), + ('generic_search', 'search', 'form_feature', 'tab_none', 'Search:', 'Search:'), + ('hydro_contains', 'search', 'form_feature', 'tab_none', 'Use contains:', 'Use contains:'), + ('hydro_expl', 'search', 'form_feature', 'tab_none', 'Exploitation:', 'Exploitation:'), + ('hydro_search', 'search', 'form_feature', 'tab_none', 'Customer:', 'Customer:'), + ('net_code', 'search', 'form_feature', 'tab_none', 'Code:', 'Code:'), + ('net_type', 'search', 'form_feature', 'tab_none', 'Type:', 'Type:'), + ('psector_expl', 'search', 'form_feature', 'tab_none', 'Exploitation:', 'Exploitation:'), + ('psector_search', 'search', 'form_feature', 'tab_none', 'Psector:', 'Psector:'), + ('visit_search', 'search', 'form_feature', 'tab_none', 'Visit:', 'Visit:'), + ('workcat_search', 'search', 'form_feature', 'tab_none', 'Work:', 'Work:'), + ('id', 'upsert_catalog_arc', 'form_catalog', 'tab_none', 'Id:', 'Id:'), + ('matcat_id', 'upsert_catalog_arc', 'form_catalog', 'tab_none', 'Material:', 'Material:'), + ('id', 'upsert_catalog_connec', 'form_catalog', 'tab_none', 'Id:', 'Id:'), + ('matcat_id', 'upsert_catalog_connec', 'form_catalog', 'tab_none', 'Material:', 'Material:'), + ('id', 'upsert_catalog_node', 'form_catalog', 'tab_none', 'Id:', 'Id:'), + ('matcat_id', 'upsert_catalog_node', 'form_catalog', 'tab_none', 'Material:', 'Material:'), + ('expl_id', 'v_ext_address', 'form_feature', 'tab_none', 'Expl id:', 'Expl id:'), + ('id', 'v_ext_address', 'form_feature', 'tab_none', 'Id:', 'Id:'), + ('muni_id', 'v_ext_address', 'form_feature', 'tab_none', 'Muni id:', 'Muni id:'), + ('plot_id', 'v_ext_address', 'form_feature', 'tab_none', 'Plot id:', 'Plot id:'), + ('postcode', 'v_ext_address', 'form_feature', 'tab_none', 'Postcode:', 'Postcode:'), + ('postnumber', 'v_ext_address', 'form_feature', 'tab_none', 'Postnumber:', 'Postnumber:'), + ('streetname', 'v_ext_address', 'form_feature', 'tab_none', 'Streetname:', 'Streetname:'), + ('expl_id', 'v_ext_municipality', 'form_feature', 'tab_none', 'Exploitation id:', 'expl_id - Exploitation id'), + ('sector_id', 'v_ext_municipality', 'form_feature', 'tab_none', 'Secotr id:', 'sector_id - Sector id'), + ('complement', 'v_ext_plot', 'form_feature', 'tab_none', 'Complement:', 'Complement:'), + ('expl_id', 'v_ext_plot', 'form_feature', 'tab_none', 'Expl id:', 'Expl id:'), + ('id', 'v_ext_plot', 'form_feature', 'tab_none', 'Id:', 'Id:'), + ('muni_id', 'v_ext_plot', 'form_feature', 'tab_none', 'Muni id:', 'Muni id:'), + ('observ', 'v_ext_plot', 'form_feature', 'tab_none', 'Observ:', 'Observ:'), + ('placement', 'v_ext_plot', 'form_feature', 'tab_none', 'Placement:', 'Placement:'), + ('plot_code', 'v_ext_plot', 'form_feature', 'tab_none', 'Plot code:', 'Plot code:'), + ('postcode', 'v_ext_plot', 'form_feature', 'tab_none', 'Postcode:', 'Postcode:'), + ('postnumber', 'v_ext_plot', 'form_feature', 'tab_none', 'Postnumber:', 'Postnumber:'), + ('square', 'v_ext_plot', 'form_feature', 'tab_none', 'Square:', 'Square:'), + ('streetname', 'v_ext_plot', 'form_feature', 'tab_none', 'Streetname:', 'Streetname:'), + ('text', 'v_ext_plot', 'form_feature', 'tab_none', 'Text:', 'Text:'), + ('code', 'v_ext_streetaxis', 'form_feature', 'tab_none', 'Code:', 'Code:'), + ('descript', 'v_ext_streetaxis', 'form_feature', 'tab_none', 'Descript:', 'Descript:'), + ('expl_id', 'v_ext_streetaxis', 'form_feature', 'tab_none', 'Expl id:', 'Expl id:'), + ('id', 'v_ext_streetaxis', 'form_feature', 'tab_none', 'Id:', 'Id:'), + ('muni_id', 'v_ext_streetaxis', 'form_feature', 'tab_none', 'Muni id:', 'Muni id:'), + ('name', 'v_ext_streetaxis', 'form_feature', 'tab_none', 'Name:', 'Name:'), + ('text', 'v_ext_streetaxis', 'form_feature', 'tab_none', 'Text:', 'Text:'), + ('type', 'v_ext_streetaxis', 'form_feature', 'tab_none', 'Type:', 'Type:'), + ('annotation', 'v_plan_result_arc', 'form_feature', 'tab_none', 'Annotation:', 'Annotation:'), + ('arc_cost', 'v_plan_result_arc', 'form_feature', 'tab_none', 'Arc cost:', 'Arc cost:'), + ('arc_id', 'v_plan_result_arc', 'form_feature', 'tab_none', 'Arc id:', 'Arc id:'), + ('arc_type', 'v_plan_result_arc', 'form_feature', 'tab_none', 'Arc type:', 'Arc type:'), + ('arccat_id', 'v_plan_result_arc', 'form_feature', 'tab_none', 'Arccat id:', 'Arccat id:'), + ('area', 'v_plan_result_arc', 'form_feature', 'tab_none', 'Area:', 'Area:'), + ('b', 'v_plan_result_arc', 'form_feature', 'tab_none', 'B:', 'B:'), + ('base_cost', 'v_plan_result_arc', 'form_feature', 'tab_none', 'Base cost:', 'Base cost:'), + ('budget', 'v_plan_result_arc', 'form_feature', 'tab_none', 'Budget:', 'Budget:'), + ('bulk', 'v_plan_result_arc', 'form_feature', 'tab_none', 'Bulk:', 'Bulk:'), + ('calculed_y', 'v_plan_result_arc', 'form_feature', 'tab_none', 'Calculed y:', 'Calculed y:'), + ('cost', 'v_plan_result_arc', 'form_feature', 'tab_none', 'Cost:', 'Cost:'), + ('cost_unit', 'v_plan_result_arc', 'form_feature', 'tab_none', 'Cost unit:', 'Cost unit:'), + ('epa_type', 'v_plan_result_arc', 'form_feature', 'tab_none', 'Epa type:', 'Epa type:'), + ('exc_cost', 'v_plan_result_arc', 'form_feature', 'tab_none', 'Exc cost:', 'Exc cost:'), + ('excess_cost', 'v_plan_result_arc', 'form_feature', 'tab_none', 'Excess cost:', 'Excess cost:'), + ('expl_id', 'v_plan_result_arc', 'form_feature', 'tab_none', 'Expl id:', 'Expl id:'), + ('fill_cost', 'v_plan_result_arc', 'form_feature', 'tab_none', 'Fill cost:', 'Fill cost:'), + ('geom1', 'v_plan_result_arc', 'form_feature', 'tab_none', 'Geom1:', 'Geom1:'), + ('geom1_ext', 'v_plan_result_arc', 'form_feature', 'tab_none', 'Geom1 ext:', 'Geom1 ext:'), + ('length', 'v_plan_result_arc', 'form_feature', 'tab_none', 'Length:', 'Length:'), + ('m2bottom_cost', 'v_plan_result_arc', 'form_feature', 'tab_none', 'M2bottom cost:', 'M2bottom cost:'), + ('m2mlbottom', 'v_plan_result_arc', 'form_feature', 'tab_none', 'M2mlbottom:', 'M2mlbottom:'), + ('m2mlpav', 'v_plan_result_arc', 'form_feature', 'tab_none', 'M2mlpav:', 'M2mlpav:'), + ('m2mltrenchl', 'v_plan_result_arc', 'form_feature', 'tab_none', 'M2mltrenchl:', 'M2mltrenchl:'), + ('m2pav_cost', 'v_plan_result_arc', 'form_feature', 'tab_none', 'M2pav cost:', 'M2pav cost:'), + ('m2trenchl_cost', 'v_plan_result_arc', 'form_feature', 'tab_none', 'M2trenchl cost:', 'M2trenchl cost:'), + ('m3exc_cost', 'v_plan_result_arc', 'form_feature', 'tab_none', 'M3exc cost:', 'M3exc cost:'), + ('m3excess_cost', 'v_plan_result_arc', 'form_feature', 'tab_none', 'M3excess cost:', 'M3excess cost:'), + ('m3fill_cost', 'v_plan_result_arc', 'form_feature', 'tab_none', 'M3fill cost:', 'M3fill cost:'), + ('m3mlexc', 'v_plan_result_arc', 'form_feature', 'tab_none', 'M3mlexc:', 'M3mlexc:'), + ('m3mlexcess', 'v_plan_result_arc', 'form_feature', 'tab_none', 'M3mlexcess:', 'M3mlexcess:'), + ('m3mlfill', 'v_plan_result_arc', 'form_feature', 'tab_none', 'M3mlfill:', 'M3mlfill:'), + ('m3mlprotec', 'v_plan_result_arc', 'form_feature', 'tab_none', 'M3mlprotec:', 'M3mlprotec:'), + ('m3protec_cost', 'v_plan_result_arc', 'form_feature', 'tab_none', 'M3protec cost:', 'M3protec cost:'), + ('mean_y', 'v_plan_result_arc', 'form_feature', 'tab_none', 'Mean y:', 'Mean y:'), + ('node_1', 'v_plan_result_arc', 'form_feature', 'tab_none', 'Node 1:', 'Node 1:'), + ('node_2', 'v_plan_result_arc', 'form_feature', 'tab_none', 'Node 2:', 'Node 2:'), + ('other_budget', 'v_plan_result_arc', 'form_feature', 'tab_none', 'Other budget:', 'Other budget:'), + ('pav_cost', 'v_plan_result_arc', 'form_feature', 'tab_none', 'Pav cost:', 'Pav cost:'), + ('protec_cost', 'v_plan_result_arc', 'form_feature', 'tab_none', 'Protec cost:', 'Protec cost:'), + ('rec_y', 'v_plan_result_arc', 'form_feature', 'tab_none', 'Rec y:', 'Rec y:'), + ('sector_id', 'v_plan_result_arc', 'form_feature', 'tab_none', 'Sector id:', 'Sector id:'), + ('soilcat_id', 'v_plan_result_arc', 'form_feature', 'tab_none', 'Soilcat id:', 'Soilcat id:'), + ('state', 'v_plan_result_arc', 'form_feature', 'tab_none', 'State:', 'State:'), + ('thickness', 'v_plan_result_arc', 'form_feature', 'tab_none', 'Thickness:', 'Thickness:'), + ('total_budget', 'v_plan_result_arc', 'form_feature', 'tab_none', 'Total budget:', 'Total budget:'), + ('total_y', 'v_plan_result_arc', 'form_feature', 'tab_none', 'Total y:', 'Total y:'), + ('trenchl_cost', 'v_plan_result_arc', 'form_feature', 'tab_none', 'Trenchl cost:', 'Trenchl cost:'), + ('width', 'v_plan_result_arc', 'form_feature', 'tab_none', 'Width:', 'Width:'), + ('y1', 'v_plan_result_arc', 'form_feature', 'tab_none', 'Y1:', 'Y1:'), + ('y2', 'v_plan_result_arc', 'form_feature', 'tab_none', 'Y2:', 'Y2:'), + ('y_param', 'v_plan_result_arc', 'form_feature', 'tab_none', 'Y param:', 'Y param:'), + ('z1', 'v_plan_result_arc', 'form_feature', 'tab_none', 'Z1:', 'Z1:'), + ('z2', 'v_plan_result_arc', 'form_feature', 'tab_none', 'Z2:', 'Z2:'), + ('budget', 'v_plan_result_node', 'form_feature', 'tab_none', 'Budget:', 'Budget:'), + ('cost', 'v_plan_result_node', 'form_feature', 'tab_none', 'Cost:', 'Cost:'), + ('cost_unit', 'v_plan_result_node', 'form_feature', 'tab_none', 'Cost unit:', 'Cost unit:'), + ('descript', 'v_plan_result_node', 'form_feature', 'tab_none', 'Descript:', 'Descript:'), + ('elev', 'v_plan_result_node', 'form_feature', 'tab_none', 'Elev:', 'Elev:'), + ('epa_type', 'v_plan_result_node', 'form_feature', 'tab_none', 'Epa type:', 'Epa type:'), + ('expl_id', 'v_plan_result_node', 'form_feature', 'tab_none', 'Expl id:', 'Expl id:'), + ('measurement', 'v_plan_result_node', 'form_feature', 'tab_none', 'Measurement:', 'Measurement:'), + ('node_id', 'v_plan_result_node', 'form_feature', 'tab_none', 'Node id:', 'Node id:'), + ('node_type', 'v_plan_result_node', 'form_feature', 'tab_none', 'Node type:', 'Node type:'), + ('nodecat_id', 'v_plan_result_node', 'form_feature', 'tab_none', 'Nodecat id:', 'Nodecat id:'), + ('sector_id', 'v_plan_result_node', 'form_feature', 'tab_none', 'Sector id:', 'Sector id:'), + ('state', 'v_plan_result_node', 'form_feature', 'tab_none', 'State:', 'State:'), + ('top_elev', 'v_plan_result_node', 'form_feature', 'tab_none', 'Top elev:', 'Top elev:'), + ('backbutton', 'v_ui_om_visitman_x_arc', 'form_list_footer', 'tab_none', 'Enrere:', 'Enrere:'), + ('limit', 'v_ui_om_visitman_x_arc', 'form_list_header', 'tab_none', 'Limit:', 'Limit:'), + ('visit_start', 'v_ui_om_visitman_x_arc', 'form_list_header', 'tab_none', 'Des de:', 'Des de:'), + ('backbutton', 'v_ui_om_visitman_x_connec', 'form_list_footer', 'tab_none', 'Enrere:', 'Enrere:'), + ('limit', 'v_ui_om_visitman_x_connec', 'form_list_header', 'tab_none', 'Limit:', 'Limit:'), + ('visit_start', 'v_ui_om_visitman_x_connec', 'form_list_header', 'tab_none', 'Des de:', 'Des de:'), + ('backbutton', 'v_ui_om_visitman_x_node', 'form_list_footer', 'tab_none', 'Enrere:', 'Enrere:'), + ('limit', 'v_ui_om_visitman_x_node', 'form_list_header', 'tab_none', 'Limit:', 'Limit:'), + ('visit_start', 'v_ui_om_visitman_x_node', 'form_list_header', 'tab_none', 'Des de:', 'Des de:'), + ('active', 've_cat_dscenario', 'form_feature', 'tab_none', 'Active:', 'Active:'), + ('descript', 've_cat_dscenario', 'form_feature', 'tab_none', 'Descript:', 'Descript:'), + ('dscenario_id', 've_cat_dscenario', 'form_feature', 'tab_none', 'Dscenario id:', 'Dscenario id:'), + ('dscenario_type', 've_cat_dscenario', 'form_feature', 'tab_none', 'Dscenario type:', 'Dscenario type:'), + ('expl_id', 've_cat_dscenario', 'form_feature', 'tab_none', 'Exploitation:', 'Exploitation:'), + ('log', 've_cat_dscenario', 'form_feature', 'tab_none', 'Log:', 'Log:'), + ('name', 've_cat_dscenario', 'form_feature', 'tab_none', 'Name:', 'Name:'), + ('parent_id', 've_cat_dscenario', 'form_feature', 'tab_none', 'Parent id:', 'Parent id:'), + ('active', 've_cat_feature_arc', 'form_feature', 'tab_none', 'Active:', 'Active:'), + ('code_autofill', 've_cat_feature_arc', 'form_feature', 'tab_none', 'Code autofill:', 'Code autofill:'), + ('descript', 've_cat_feature_arc', 'form_feature', 'tab_none', 'Descript:', 'Descript:'), + ('epa_default', 've_cat_feature_arc', 'form_feature', 'tab_none', 'Epa default:', 'Epa default:'), + ('id', 've_cat_feature_arc', 'form_feature', 'tab_none', 'Id:', 'Id:'), + ('link_path', 've_cat_feature_arc', 'form_feature', 'tab_none', 'Link path:', 'Link path:'), + ('shortcut_key', 've_cat_feature_arc', 'form_feature', 'tab_none', 'Shortcut:', 'Shortcut:'), + ('system_id', 've_cat_feature_arc', 'form_feature', 'tab_none', 'Sys type:', 'Sys type:'), + ('active', 've_cat_feature_connec', 'form_feature', 'tab_none', 'Active:', 'Active:'), + ('code_autofill', 've_cat_feature_connec', 'form_feature', 'tab_none', 'Code autofill:', 'Code autofill:'), + ('descript', 've_cat_feature_connec', 'form_feature', 'tab_none', 'Descript:', 'Descript:'), + ('id', 've_cat_feature_connec', 'form_feature', 'tab_none', 'Id:', 'Id:'), + ('link_path', 've_cat_feature_connec', 'form_feature', 'tab_none', 'Link path:', 'Link path:'), + ('shortcut_key', 've_cat_feature_connec', 'form_feature', 'tab_none', 'Shortcut:', 'Shortcut:'), + ('system_id', 've_cat_feature_connec', 'form_feature', 'tab_none', 'Sys type:', 'Sys type:'), + ('active', 've_cat_feature_element', 'form_feature', 'tab_none', 'Active:', 'Active:'), + ('code_autofill', 've_cat_feature_element', 'form_feature', 'tab_none', 'Code autofill:', 'Code autofill:'), + ('descript', 've_cat_feature_element', 'form_feature', 'tab_none', 'Descript:', 'descript - Field to store additional information about the feature.'), + ('epa_default', 've_cat_feature_element', 'form_feature', 'tab_none', 'Epa default:', 'Epa default:'), + ('id', 've_cat_feature_element', 'form_feature', 'tab_none', 'Id:', 'Id:'), + ('link_path', 've_cat_feature_element', 'form_feature', 'tab_none', 'Link path:', 'Link path:'), + ('shortcut_key', 've_cat_feature_element', 'form_feature', 'tab_none', 'Shortcut:', 'Shortcut:'), + ('system_id', 've_cat_feature_element', 'form_feature', 'tab_none', 'Sys type:', 'Sys type:'), + ('active', 've_cat_feature_link', 'form_feature', 'tab_none', 'Active:', 'Active:'), + ('code_autofill', 've_cat_feature_link', 'form_feature', 'tab_none', 'Code autofill:', 'Code autofill:'), + ('descript', 've_cat_feature_link', 'form_feature', 'tab_none', 'Descript:', 'descript - Field to store additional information about the feature.'), + ('epa_default', 've_cat_feature_link', 'form_feature', 'tab_none', 'Epa default:', 'Epa default:'), + ('id', 've_cat_feature_link', 'form_feature', 'tab_none', 'Id:', 'Id:'), + ('link_path', 've_cat_feature_link', 'form_feature', 'tab_none', 'Link path:', 'Link path:'), + ('shortcut_key', 've_cat_feature_link', 'form_feature', 'tab_none', 'Shortcut:', 'Shortcut:'), + ('system_id', 've_cat_feature_link', 'form_feature', 'tab_none', 'Sys type:', 'Sys type:'), + ('active', 've_cat_feature_node', 'form_feature', 'tab_none', 'Active:', 'Active:'), + ('choose_hemisphere', 've_cat_feature_node', 'form_feature', 'tab_none', 'Choose hemisphere:', 'Choose hemisphere:'), + ('code_autofill', 've_cat_feature_node', 'form_feature', 'tab_none', 'Code autofill:', 'Code autofill:'), + ('descript', 've_cat_feature_node', 'form_feature', 'tab_none', 'Descript:', 'Descript:'), + ('epa_default', 've_cat_feature_node', 'form_feature', 'tab_none', 'Epa default:', 'Epa default:'), + ('id', 've_cat_feature_node', 'form_feature', 'tab_none', 'Id:', 'Id:'), + ('isarcdivide', 've_cat_feature_node', 'form_feature', 'tab_none', 'Divides arc:', 'Divides arc:'), + ('isprofilesurface', 've_cat_feature_node', 'form_feature', 'tab_none', 'Profile surface:', 'Profile surface:'), + ('link_path', 've_cat_feature_node', 'form_feature', 'tab_none', 'Link path:', 'Link path:'), + ('num_arcs', 've_cat_feature_node', 'form_feature', 'tab_none', 'Arcs number:', 'Arcs number:'), + ('shortcut_key', 've_cat_feature_node', 'form_feature', 'tab_none', 'Shortcut:', 'Shortcut:'), + ('system_id', 've_cat_feature_node', 'form_feature', 'tab_none', 'Sys type:', 'Sys type:'), + ('column_id', 've_config_sysfields', 'form_feature', 'tab_data', 'Column id:', 'Column id:'), + ('datatype', 've_config_sysfields', 'form_feature', 'tab_data', 'Datatype:', 'Datatype:'), + ('dv_isnullvalue', 've_config_sysfields', 'form_feature', 'tab_data', 'Dv isnullvalue:', 'Dv isnullvalue:'), + ('dv_orderby_id', 've_config_sysfields', 'form_feature', 'tab_data', 'Dv orderby id:', 'Dv orderby id:'), + ('dv_parent_id', 've_config_sysfields', 'form_feature', 'tab_data', 'Dv parentid:', 'Dv parentid:'), + ('dv_querytext', 've_config_sysfields', 'form_feature', 'tab_data', 'Dv querytext:', 'Dv querytext:'), + ('dv_querytext_filterc', 've_config_sysfields', 'form_feature', 'tab_data', 'Dv querytext filterc:', 'Dv querytext filterc:'), + ('formname', 've_config_sysfields', 'form_feature', 'tab_data', 'Formname:', 'Formname:'), + ('formtype', 've_config_sysfields', 'form_feature', 'tab_data', 'Formtype:', 'Formtype:'), + ('hidden', 've_config_sysfields', 'form_feature', 'tab_data', 'Hidden:', 'Hidden:'), + ('id', 've_config_sysfields', 'form_feature', 'tab_data', 'Id:', 'Id:'), + ('isautoupdate', 've_config_sysfields', 'form_feature', 'tab_data', 'Isautoupdate:', 'Isautoupdate:'), + ('iseditable', 've_config_sysfields', 'form_feature', 'tab_data', 'Is editable:', 'Is editable:'), + ('ismandatory', 've_config_sysfields', 'form_feature', 'tab_data', 'Is mandatory:', 'Is mandatory:'), + ('isparent', 've_config_sysfields', 'form_feature', 'tab_data', 'Isparent:', 'Isparent:'), + ('label', 've_config_sysfields', 'form_feature', 'tab_data', 'Label:', 'Label:'), + ('layout_order', 've_config_sysfields', 'form_feature', 'tab_data', 'Layout order:', 'Layout order:'), + ('layoutname', 've_config_sysfields', 'form_feature', 'tab_data', 'Layout name:', 'Layout name:'), + ('linkedaction', 've_config_sysfields', 'form_feature', 'tab_data', 'Linked action:', 'Linked action:'), + ('listfilterparam', 've_config_sysfields', 'form_feature', 'tab_data', 'Listfilterparam:', 'Listfilterparam:'), + ('placeholder', 've_config_sysfields', 'form_feature', 'tab_data', 'Placeholder:', 'Placeholder:'), + ('stylesheet', 've_config_sysfields', 'form_feature', 'tab_data', 'Stylesheet:', 'Stylesheet:'), + ('tooltip', 've_config_sysfields', 'form_feature', 'tab_data', 'Tooltip:', 'Tooltip:'), + ('widgetcontrols', 've_config_sysfields', 'form_feature', 'tab_data', 'Widget controls:', 'Widget controls:'), + ('widgetdim', 've_config_sysfields', 'form_feature', 'tab_data', 'Widgetdim:', 'Widgetdim:'), + ('widgetfunction', 've_config_sysfields', 'form_feature', 'tab_data', 'Widget function:', 'Widget function:'), + ('widgettype', 've_config_sysfields', 'form_feature', 'tab_data', 'Widgettype:', 'Widgettype:'), + ('comment', 've_dimensions', 'form_feature', 'tab_none', 'Comment:', 'Comment:'), + ('depth', 've_dimensions', 'form_feature', 'tab_none', 'Depth:', 'Depth:'), + ('direction_arrow', 've_dimensions', 'form_feature', 'tab_none', 'Direction arrow:', 'Direction arrow:'), + ('distance', 've_dimensions', 'form_feature', 'tab_none', 'Distance:', 'Distance:'), + ('expl_id', 've_dimensions', 'form_feature', 'tab_none', 'Expl id:', 'Expl id:'), + ('feature_id', 've_dimensions', 'form_feature', 'tab_none', 'Feature id:', 'Feature id:'), + ('feature_type', 've_dimensions', 'form_feature', 'tab_none', 'Feature type:', 'Feature type:'), + ('observ', 've_dimensions', 'form_feature', 'tab_none', 'Observ:', 'Observ:'), + ('offset_label', 've_dimensions', 'form_feature', 'tab_none', 'Offset label:', 'Offset label:'), + ('rotation_label', 've_dimensions', 'form_feature', 'tab_none', 'Rotation label:', 'Rotation label:'), + ('state', 've_dimensions', 'form_feature', 'tab_none', 'State:', 'State:'), + ('workcat_id', 've_dimensions', 'form_feature', 'tab_none', 'Workcat id:', 'Workcat id:'), + ('x_label', 've_dimensions', 'form_feature', 'tab_none', 'X label:', 'X label:'), + ('x_symbol', 've_dimensions', 'form_feature', 'tab_none', 'X symbol:', 'X symbol:'), + ('y_label', 've_dimensions', 'form_feature', 'tab_none', 'Y label:', 'Y label:'), + ('y_symbol', 've_dimensions', 'form_feature', 'tab_none', 'Y symbol:', 'Y symbol:'), + ('active', 've_dma', 'form_feature', 'tab_none', 'Active:', 'Active:'), + ('addparam', 've_dma', 'form_feature', 'tab_none', 'Addparam:', 'Addparam:'), + ('avg_press', 've_dma', 'form_feature', 'tab_none', 'Average pressure:', 'Average pressure:'), + ('code', 've_dma', 'form_feature', 'tab_none', 'Code:', 'Code:'), + ('created_at', 've_dma', 'form_feature', 'tab_none', 'Created at:', 'Created at:'), + ('created_by', 've_dma', 'form_feature', 'tab_none', 'Created by:', 'Created by:'), + ('descript', 've_dma', 'form_feature', 'tab_none', 'Descript:', 'Descript:'), + ('dma_id', 've_dma', 'form_feature', 'tab_none', 'Dma id:', 'Dma id:'), + ('dma_type', 've_dma', 'form_feature', 'tab_none', 'Dma type:', 'Dma type:'), + ('effc', 've_dma', 'form_feature', 'tab_none', 'Effc:', 'Effc:'), + ('expl_id', 've_dma', 'form_feature', 'tab_none', 'Expl id:', 'Expl id:'), + ('graphconfig', 've_dma', 'form_feature', 'tab_none', 'Graphconfig:', 'Graphconfig:'), + ('link', 've_dma', 'form_feature', 'tab_none', 'Link:', 'Link:'), + ('lock_level', 've_dma', 'form_feature', 'tab_none', 'Lock level:', 'Lock level:'), + ('muni_id', 've_dma', 'form_feature', 'tab_none', 'Muni id:', 'Muni id:'), + ('name', 've_dma', 'form_feature', 'tab_none', 'Name:', 'Name:'), + ('pattern_id', 've_dma', 'form_feature', 'tab_none', 'Pattern id:', 'Pattern id:'), + ('sector_id', 've_dma', 'form_feature', 'tab_none', 'Sector id:', 'Sector id:'), + ('stylesheet', 've_dma', 'form_feature', 'tab_none', 'Stylesheet:', 'Stylesheet:'), + ('updated_at', 've_dma', 'form_feature', 'tab_none', 'Updated at:', 'Updated at:'), + ('updated_by', 've_dma', 'form_feature', 'tab_none', 'Updated by:', 'Updated by:'), + ('status', 've_epa_frpump', 'form_feature', 'tab_epa', 'Status:', 'Status'), + ('reaction_coeff', 've_epa_tank', 'form_feature', 'tab_epa', 'Reaction coefficient:', 'Reaction coefficient'), + ('active', 've_exploitation', 'form_feature', 'tab_none', 'Active:', 'Active:'), + ('descript', 've_exploitation', 'form_feature', 'tab_none', 'Descript:', 'Descript:'), + ('expl_id', 've_exploitation', 'form_feature', 'tab_none', 'Expl id:', 'Expl id:'), + ('macroexpl_id', 've_exploitation', 'form_feature', 'tab_none', 'Macroexpl id:', 'Macroexpl id:'), + ('muni_id', 've_exploitation', 'form_feature', 'tab_none', 'Municipality id:', 'muni_id -Municipality id'), + ('name', 've_exploitation', 'form_feature', 'tab_none', 'Name:', 'Name:'), + ('sector_id', 've_exploitation', 'form_feature', 'tab_none', 'Secotr id:', 'sector_id - Sector id'), + ('tstamp', 've_exploitation', 'form_feature', 'tab_none', 'Tstamp:', 'Tstamp:'), + ('active', 've_inp_controls', 'form_feature', 'tab_none', 'Active:', 'Active:'), + ('id', 've_inp_controls', 'form_feature', 'tab_none', 'Id:', 'Id:'), + ('sector_id', 've_inp_controls', 'form_feature', 'tab_none', 'Sector id:', 'Sector id:'), + ('text', 've_inp_controls', 'form_feature', 'tab_none', 'Text:', 'Text:'), + ('curve_type', 've_inp_curve', 'form_feature', 'tab_none', 'Curve type:', 'Curve type:'), + ('descript', 've_inp_curve', 'form_feature', 'tab_none', 'Descript:', 'Descript:'), + ('expl_id', 've_inp_curve', 'form_feature', 'tab_none', 'Expl id:', 'Expl id:'), + ('id', 've_inp_curve', 'form_feature', 'tab_none', 'Id:', 'Id:'), + ('log', 've_inp_curve', 'form_feature', 'tab_none', 'Log:', 'Log:'), + ('curve_id', 've_inp_curve_value', 'form_feature', 'tab_none', 'Curve id:', 'Curve id:'), + ('curve_type', 've_inp_curve_value', 'form_feature', 'tab_none', 'Curve type:', 'Curve type:'), + ('descript', 've_inp_curve_value', 'form_feature', 'tab_none', 'Descript:', 'Descript:'), + ('expl_id', 've_inp_curve_value', 'form_feature', 'tab_none', 'Expl id:', 'Expl id:'), + ('id', 've_inp_curve_value', 'form_feature', 'tab_none', 'Id:', 'Id:'), + ('x_value', 've_inp_curve_value', 'form_feature', 'tab_none', 'X value:', 'X value:'), + ('y_value', 've_inp_curve_value', 'form_feature', 'tab_none', 'Y value:', 'Y value:'), + ('active', 've_inp_dscenario_controls', 'form_feature', 'tab_none', 'Active:', 'Active:'), + ('dscenario_id', 've_inp_dscenario_controls', 'form_feature', 'tab_none', 'Dscenario id:', 'Dscenario id:'), + ('id', 've_inp_dscenario_controls', 'form_feature', 'tab_none', 'Id:', 'Id:'), + ('sector_id', 've_inp_dscenario_controls', 'form_feature', 'tab_none', 'Sector id:', 'Sector id:'), + ('text', 've_inp_dscenario_controls', 'form_feature', 'tab_none', 'Text:', 'Text:'), + ('dscenario_id', 've_inp_dscenario_junction', 'form_feature', 'tab_none', 'Dscenario id:', 'Dscenario id:'), + ('node_id', 've_inp_dscenario_junction', 'form_feature', 'tab_none', 'Node id:', 'Node id:'), + ('annotation', 've_inp_junction', 'form_feature', 'tab_none', 'Annotation:', 'Annotation:'), + ('expl_id', 've_inp_junction', 'form_feature', 'tab_none', 'Exploitation:', 'Exploitation:'), + ('macrosector_id', 've_inp_junction', 'form_feature', 'tab_none', 'Macrosector id:', 'Macrosector id:'), + ('node_id', 've_inp_junction', 'form_feature', 'tab_none', 'Node id:', 'Node id:'), + ('nodecat_id', 've_inp_junction', 'form_feature', 'tab_none', 'Nodecat id:', 'Nodecat id:'), + ('sector_id', 've_inp_junction', 'form_feature', 'tab_none', 'Sector id:', 'Sector id:'), + ('state', 've_inp_junction', 'form_feature', 'tab_none', 'State:', 'State:'), + ('state_type', 've_inp_junction', 'form_feature', 'tab_none', 'State type:', 'State type:'), + ('top_elev', 've_inp_junction', 'form_feature', 'tab_none', 'Top elev:', 'Top elev:'), + ('expl_id', 've_inp_pattern', 'form_feature', 'tab_none', 'Expl id:', 'Expl id:'), + ('log', 've_inp_pattern', 'form_feature', 'tab_none', 'Log:', 'Log:'), + ('observ', 've_inp_pattern', 'form_feature', 'tab_none', 'Observ:', 'Observ:'), + ('pattern_id', 've_inp_pattern', 'form_feature', 'tab_none', 'Pattern id:', 'Pattern id:'), + ('tsparameters', 've_inp_pattern', 'form_feature', 'tab_none', 'Tsparameters:', 'Tsparameters:'), + ('expl_id', 've_inp_pattern_value', 'form_feature', 'tab_none', 'Expl id:', 'Expl id:'), + ('observ', 've_inp_pattern_value', 'form_feature', 'tab_none', 'Observ:', 'Observ:'), + ('pattern_id', 've_inp_pattern_value', 'form_feature', 'tab_none', 'Pattern id:', 'Pattern id:'), + ('tsparameters', 've_inp_pattern_value', 'form_feature', 'tab_none', 'Tsparameters:', 'Tsparameters:'), + ('annotation', 've_inp_pump', 'form_feature', 'tab_none', 'Annotation:', 'Annotation:'), + ('curve_id', 've_inp_pump', 'form_feature', 'tab_none', 'Curve id:', 'Curve id:'), + ('macrosector_id', 've_inp_pump', 'form_feature', 'tab_none', 'Macrosector id:', 'Macrosector id:'), + ('sector_id', 've_inp_pump', 'form_feature', 'tab_none', 'Sector id:', 'Sector id:'), + ('state', 've_inp_pump', 'form_feature', 'tab_none', 'State:', 'State:'), + ('state_type', 've_inp_pump', 'form_feature', 'tab_none', 'State type:', 'State type:'), + ('status', 've_inp_pump', 'form_feature', 'tab_none', 'Status:', 'Status:'), + ('reaction_coeff', 've_inp_tank', 'form_feature', 'tab_epa', 'Reaction coefficient:', 'Reaction coefficient'), + ('descript', 've_macrodma', 'form_feature', 'tab_none', 'Descript:', 'Descript:'), + ('expl_id', 've_macrodma', 'form_feature', 'tab_none', 'Expl id:', 'Expl id:'), + ('name', 've_macrodma', 'form_feature', 'tab_none', 'Name:', 'Name:'), + ('active', 've_macroomzone', 'form_feature', 'tab_none', 'Active:', 'Active:'), + ('addparam', 've_macroomzone', 'form_feature', 'tab_none', 'Addparam:', 'Addparam:'), + ('code', 've_macroomzone', 'form_feature', 'tab_none', 'Code:', 'Code:'), + ('created_at', 've_macroomzone', 'form_feature', 'tab_none', 'Created at:', 'Created at:'), + ('created_by', 've_macroomzone', 'form_feature', 'tab_none', 'Created by:', 'Created by:'), + ('descript', 've_macroomzone', 'form_feature', 'tab_none', 'Descript:', 'Descript:'), + ('expl_id', 've_macroomzone', 'form_feature', 'tab_none', 'Expl id:', 'Expl id:'), + ('link', 've_macroomzone', 'form_feature', 'tab_none', 'Link:', 'Link:'), + ('lock_level', 've_macroomzone', 'form_feature', 'tab_none', 'Lock level:', 'Lock level:'), + ('muni_id', 've_macroomzone', 'form_feature', 'tab_none', 'Muni id:', 'Muni id:'), + ('name', 've_macroomzone', 'form_feature', 'tab_none', 'Name:', 'Name:'), + ('sector_id', 've_macroomzone', 'form_feature', 'tab_none', 'Sector id:', 'Sector id:'), + ('stylesheet', 've_macroomzone', 'form_feature', 'tab_none', 'Stylesheet:', 'Stylesheet:'), + ('updated_at', 've_macroomzone', 'form_feature', 'tab_none', 'Updated at:', 'Updated at:'), + ('updated_by', 've_macroomzone', 'form_feature', 'tab_none', 'Updated by:', 'Updated by:'), + ('active', 've_macrosector', 'form_feature', 'tab_none', 'Active:', 'Active:'), + ('addparam', 've_macrosector', 'form_feature', 'tab_none', 'Addparam:', 'Addparam:'), + ('code', 've_macrosector', 'form_feature', 'tab_none', 'Code:', 'Code:'), + ('created_at', 've_macrosector', 'form_feature', 'tab_none', 'Created at:', 'Created at:'), + ('created_by', 've_macrosector', 'form_feature', 'tab_none', 'Created by:', 'Created by:'), + ('descript', 've_macrosector', 'form_feature', 'tab_none', 'Descript:', 'Descript:'), + ('expl_id', 've_macrosector', 'form_feature', 'tab_none', 'Expl id:', 'Expl id:'), + ('link', 've_macrosector', 'form_feature', 'tab_none', 'Link:', 'Link:'), + ('lock_level', 've_macrosector', 'form_feature', 'tab_none', 'Lock level:', 'Lock level:'), + ('muni_id', 've_macrosector', 'form_feature', 'tab_none', 'Muni id:', 'Muni id:'), + ('name', 've_macrosector', 'form_feature', 'tab_none', 'Name:', 'Name:'), + ('sector_id', 've_macrosector', 'form_feature', 'tab_none', 'Sector id:', 'Sector id:'), + ('stylesheet', 've_macrosector', 'form_feature', 'tab_none', 'Stylesheet:', 'Stylesheet:'), + ('updated_at', 've_macrosector', 'form_feature', 'tab_none', 'Updated at:', 'Updated at:'), + ('updated_by', 've_macrosector', 'form_feature', 'tab_none', 'Updated by:', 'Updated by:'), + ('builtdate', 've_man_frelem', 'form_feature', 'tab_data', 'Built Date:', 'Built Date'), + ('category_type', 've_man_frelem', 'form_feature', 'tab_data', 'Category Type:', 'Category Type'), + ('code', 've_man_frelem', 'form_feature', 'tab_data', 'Code:', 'Code'), + ('comment', 've_man_frelem', 'form_feature', 'tab_data', 'Comments:', 'Comments'), + ('elementcat_id', 've_man_frelem', 'form_feature', 'tab_data', 'Element Catalog:', 'Element Catalog'), + ('enddate', 've_man_frelem', 'form_feature', 'tab_data', 'End Date:', 'End Date'), + ('expl_id', 've_man_frelem', 'form_feature', 'tab_data', 'Exploitation id:', 'Exploitation id'), + ('function_type', 've_man_frelem', 'form_feature', 'tab_data', 'Function Type:', 'Function Type'), + ('location_type', 've_man_frelem', 'form_feature', 'tab_data', 'Location Type:', 'Location Type'), + ('muni_id', 've_man_frelem', 'form_feature', 'tab_data', 'Municipality:', 'Muni_id - Municipality to which the element belongs. If the configuration is not modified, the program automatically selects it based on the geometry'), + ('num_elements', 've_man_frelem', 'form_feature', 'tab_data', 'Number of Elements:', 'Number of Elements'), + ('observ', 've_man_frelem', 'form_feature', 'tab_data', 'Observations:', 'Observations'), + ('ownercat_id', 've_man_frelem', 'form_feature', 'tab_data', 'Owner Catalog:', 'Owner Catalog'), + ('rotation', 've_man_frelem', 'form_feature', 'tab_data', 'Rotation:', 'Rotation'), + ('sector_id', 've_man_frelem', 'form_feature', 'tab_data', 'Sector id:', 'Sector id'), + ('state', 've_man_frelem', 'form_feature', 'tab_data', 'State:', 'State'), + ('state_type', 've_man_frelem', 'form_feature', 'tab_data', 'State Type:', 'State Type'), + ('top_elev', 've_man_frelem', 'form_feature', 'tab_data', 'Top Elevation:', 'Top Elevation'), + ('workcat_id', 've_man_frelem', 'form_feature', 'tab_data', 'Workcat id:', 'Workcat id'), + ('workcat_id_end', 've_man_frelem', 'form_feature', 'tab_data', 'Workcat id End:', 'Workcat id End'), + ('builtdate', 've_man_genelem', 'form_feature', 'tab_data', 'Built Date:', 'Built Date'), + ('category_type', 've_man_genelem', 'form_feature', 'tab_data', 'Category Type:', 'Category Type'), + ('code', 've_man_genelem', 'form_feature', 'tab_data', 'Code:', 'Code'), + ('comment', 've_man_genelem', 'form_feature', 'tab_data', 'Comments:', 'Comments'), + ('elementcat_id', 've_man_genelem', 'form_feature', 'tab_data', 'Element Catalog:', 'Element Catalog'), + ('enddate', 've_man_genelem', 'form_feature', 'tab_data', 'End Date:', 'End Date'), + ('expl_id', 've_man_genelem', 'form_feature', 'tab_data', 'Exploitation id:', 'Exploitation id'), + ('function_type', 've_man_genelem', 'form_feature', 'tab_data', 'Function Type:', 'Function Type'), + ('location_type', 've_man_genelem', 'form_feature', 'tab_data', 'Location Type:', 'Location Type'), + ('muni_id', 've_man_genelem', 'form_feature', 'tab_data', 'Municipality:', 'Muni_id - Municipality to which the element belongs. If the configuration is not modified, the program automatically selects it based on the geometry'), + ('num_elements', 've_man_genelem', 'form_feature', 'tab_data', 'Number of Elements:', 'Number of Elements'), + ('observ', 've_man_genelem', 'form_feature', 'tab_data', 'Observations:', 'Observations'), + ('ownercat_id', 've_man_genelem', 'form_feature', 'tab_data', 'Owner Catalog:', 'Owner Catalog'), + ('rotation', 've_man_genelem', 'form_feature', 'tab_data', 'Rotation:', 'Rotation'), + ('sector_id', 've_man_genelem', 'form_feature', 'tab_data', 'Sector id:', 'Sector id'), + ('state', 've_man_genelem', 'form_feature', 'tab_data', 'State:', 'State'), + ('state_type', 've_man_genelem', 'form_feature', 'tab_data', 'State Type:', 'State Type'), + ('top_elev', 've_man_genelem', 'form_feature', 'tab_data', 'Top Elevation:', 'Top Elevation'), + ('workcat_id', 've_man_genelem', 'form_feature', 'tab_data', 'Workcat id:', 'Workcat id'), + ('workcat_id_end', 've_man_genelem', 'form_feature', 'tab_data', 'Workcat id End:', 'Workcat id End'), + ('enddate', 've_om_visit', 'form_feature', 'tab_none', 'Enddate:', 'Enddate:'), + ('expl_id', 've_om_visit', 'form_feature', 'tab_none', 'Expl id:', 'Expl id:'), + ('ext_code', 've_om_visit', 'form_feature', 'tab_none', 'Ext code:', 'Ext code:'), + ('id', 've_om_visit', 'form_feature', 'tab_none', 'Id:', 'Id:'), + ('startdate', 've_om_visit', 'form_feature', 'tab_none', 'Startdate:', 'Startdate:'), + ('user_name', 've_om_visit', 'form_feature', 'tab_none', 'User name:', 'User name:'), + ('visitcat_id', 've_om_visit', 'form_feature', 'tab_none', 'Visitcat id:', 'Visitcat id:'), + ('webclient_id', 've_om_visit', 'form_feature', 'tab_none', 'Webclient id:', 'Webclient id:'), + ('active', 've_omzone', 'form_feature', 'tab_none', 'Active:', 'Active:'), + ('addparam', 've_omzone', 'form_feature', 'tab_none', 'Addparam:', 'Addparam:'), + ('code', 've_omzone', 'form_feature', 'tab_none', 'Code:', 'Code:'), + ('created_at', 've_omzone', 'form_feature', 'tab_none', 'Created at:', 'Created at:'), + ('created_by', 've_omzone', 'form_feature', 'tab_none', 'Created by:', 'Created by:'), + ('descript', 've_omzone', 'form_feature', 'tab_none', 'Descript:', 'Descript:'), + ('expl_id', 've_omzone', 'form_feature', 'tab_none', 'Expl id:', 'Expl id:'), + ('graphconfig', 've_omzone', 'form_feature', 'tab_none', 'Graphconfig:', 'Graphconfig:'), + ('link', 've_omzone', 'form_feature', 'tab_none', 'Link:', 'Link:'), + ('lock_level', 've_omzone', 'form_feature', 'tab_none', 'Lock level:', 'Lock level:'), + ('macroomzone_id', 've_omzone', 'form_feature', 'tab_none', 'Macroomzone:', 'Macroomzone:'), + ('muni_id', 've_omzone', 'form_feature', 'tab_none', 'Muni id:', 'Muni id:'), + ('name', 've_omzone', 'form_feature', 'tab_none', 'Name:', 'Name:'), + ('omzone_id', 've_omzone', 'form_feature', 'tab_none', 'Omzone id:', 'Omzone id:'), + ('omzone_type', 've_omzone', 'form_feature', 'tab_none', 'Omzone type:', 'Omzone type:'), + ('sector_id', 've_omzone', 'form_feature', 'tab_none', 'Sector id:', 'Sector id:'), + ('stylesheet', 've_omzone', 'form_feature', 'tab_none', 'Stylesheet:', 'Stylesheet:'), + ('updated_at', 've_omzone', 'form_feature', 'tab_none', 'Updated at:', 'Updated at:'), + ('updated_by', 've_omzone', 'form_feature', 'tab_none', 'Updated by:', 'Updated by:'), + ('active', 've_plan_psector', 'form_feature', 'tab_none', 'Active:', 'Active:'), + ('atlas_id', 've_plan_psector', 'form_feature', 'tab_none', 'Atlas id:', 'Atlas id:'), + ('creation_date', 've_plan_psector', 'form_feature', 'tab_none', 'Creation Date:', 'Creation Date'), + ('descript', 've_plan_psector', 'form_feature', 'tab_none', 'Descript:', 'Descript:'), + ('expl_id', 've_plan_psector', 'form_feature', 'tab_none', 'Expl id:', 'Expl id:'), + ('ext_code', 've_plan_psector', 'form_feature', 'tab_none', 'Ext code:', 'Ext code:'), + ('gexpenses', 've_plan_psector', 'form_feature', 'tab_none', 'Gexpenses:', 'Gexpenses:'), + ('name', 've_plan_psector', 'form_feature', 'tab_none', 'Name:', 'Name:'), + ('observ', 've_plan_psector', 'form_feature', 'tab_none', 'Observ:', 'Observ:'), + ('other', 've_plan_psector', 'form_feature', 'tab_none', 'Other:', 'Other:'), + ('priority', 've_plan_psector', 'form_feature', 'tab_none', 'Priority:', 'Priority:'), + ('psector_id', 've_plan_psector', 'form_feature', 'tab_none', 'Psector id:', 'Psector id:'), + ('psector_type', 've_plan_psector', 'form_feature', 'tab_none', 'Psector type:', 'Psector type:'), + ('rotation', 've_plan_psector', 'form_feature', 'tab_none', 'Rotation:', 'Rotation:'), + ('sector_id', 've_plan_psector', 'form_feature', 'tab_none', 'Sector id:', 'Sector id:'), + ('status', 've_plan_psector', 'form_feature', 'tab_none', 'Status:', 'Status:'), + ('text1', 've_plan_psector', 'form_feature', 'tab_none', 'Text1:', 'Text1:'), + ('text2', 've_plan_psector', 'form_feature', 'tab_none', 'Text2:', 'Text2:'), + ('text3', 've_plan_psector', 'form_feature', 'tab_none', 'Text3:', 'Text3:'), + ('text4', 've_plan_psector', 'form_feature', 'tab_none', 'Text4:', 'Text4:'), + ('text5', 've_plan_psector', 'form_feature', 'tab_none', 'Text5:', 'Text5:'), + ('text6', 've_plan_psector', 'form_feature', 'tab_none', 'Text6:', 'Text6:'), + ('vat', 've_plan_psector', 'form_feature', 'tab_none', 'Vat:', 'Vat:'), + ('annotation', 've_review_arc', 'form_feature', 'tab_none', 'Annotation:', 'Annotation:'), + ('arc_id', 've_review_arc', 'form_feature', 'tab_none', 'Arc id:', 'Arc id:'), + ('arccat_id', 've_review_arc', 'form_feature', 'tab_none', 'Arccat id:', 'Arccat id:'), + ('expl_id', 've_review_arc', 'form_feature', 'tab_none', 'Expl id:', 'Expl id:'), + ('field_checked', 've_review_arc', 'form_feature', 'tab_none', 'Field checked:', 'Field checked:'), + ('is_validated', 've_review_arc', 'form_feature', 'tab_none', 'Is validated:', 'Is validated:'), + ('observ', 've_review_arc', 'form_feature', 'tab_none', 'Observ:', 'Observ:'), + ('review_obs', 've_review_arc', 'form_feature', 'tab_none', 'Review obs:', 'Review obs:'), + ('arc_id', 've_review_audit_arc', 'form_feature', 'tab_none', 'Arc id:', 'Arc id:'), + ('expl_id', 've_review_audit_arc', 'form_feature', 'tab_none', 'Expl id:', 'Expl id:'), + ('field_date', 've_review_audit_arc', 'form_feature', 'tab_none', 'Field date:', 'Field date:'), + ('field_user', 've_review_audit_arc', 'form_feature', 'tab_none', 'Field user:', 'Field user:'), + ('id', 've_review_audit_arc', 'form_feature', 'tab_none', 'Id:', 'Id:'), + ('is_validated', 've_review_audit_arc', 'form_feature', 'tab_none', 'Is validated:', 'Is validated:'), + ('new_annotation', 've_review_audit_arc', 'form_feature', 'tab_none', 'New annotation:', 'New annotation:'), + ('new_arccat_id', 've_review_audit_arc', 'form_feature', 'tab_none', 'New arccat id:', 'New arccat id:'), + ('new_observ', 've_review_audit_arc', 'form_feature', 'tab_none', 'New observ:', 'New observ:'), + ('old_annotation', 've_review_audit_arc', 'form_feature', 'tab_none', 'Old annotation:', 'Old annotation:'), + ('old_arccat_id', 've_review_audit_arc', 'form_feature', 'tab_none', 'Old arccat id:', 'Old arccat id:'), + ('old_observ', 've_review_audit_arc', 'form_feature', 'tab_none', 'Old observ:', 'Old observ:'), + ('review_status_id', 've_review_audit_arc', 'form_feature', 'tab_none', 'Review status id:', 'Review status id:'), + ('connec_id', 've_review_audit_connec', 'form_feature', 'tab_none', 'Connec id:', 'Connec id:'), + ('expl_id', 've_review_audit_connec', 'form_feature', 'tab_none', 'Expl id:', 'Expl id:'), + ('field_date', 've_review_audit_connec', 'form_feature', 'tab_none', 'Field date:', 'Field date:'), + ('field_user', 've_review_audit_connec', 'form_feature', 'tab_none', 'Field user:', 'Field user:'), + ('id', 've_review_audit_connec', 'form_feature', 'tab_none', 'Id:', 'Id:'), + ('is_validated', 've_review_audit_connec', 'form_feature', 'tab_none', 'Is validated:', 'Is validated:'), + ('new_annotation', 've_review_audit_connec', 'form_feature', 'tab_none', 'New annotation:', 'New annotation:'), + ('new_connecat_id', 've_review_audit_connec', 'form_feature', 'tab_none', 'New connecat id:', 'New connecat id:'), + ('new_observ', 've_review_audit_connec', 'form_feature', 'tab_none', 'New observ:', 'New observ:'), + ('old_annotation', 've_review_audit_connec', 'form_feature', 'tab_none', 'Old annotation:', 'Old annotation:'), + ('old_connecat_id', 've_review_audit_connec', 'form_feature', 'tab_none', 'Old connecat id:', 'Old connecat id:'), + ('old_observ', 've_review_audit_connec', 'form_feature', 'tab_none', 'Old observ:', 'Old observ:'), + ('review_status_id', 've_review_audit_connec', 'form_feature', 'tab_none', 'Review status id:', 'Review status id:'), + ('expl_id', 've_review_audit_node', 'form_feature', 'tab_none', 'Expl id:', 'Expl id:'), + ('field_date', 've_review_audit_node', 'form_feature', 'tab_none', 'Field date:', 'Field date:'), + ('field_user', 've_review_audit_node', 'form_feature', 'tab_none', 'Field user:', 'Field user:'), + ('id', 've_review_audit_node', 'form_feature', 'tab_none', 'Id:', 'Id:'), + ('is_validated', 've_review_audit_node', 'form_feature', 'tab_none', 'Is validated:', 'Is validated:'), + ('new_annotation', 've_review_audit_node', 'form_feature', 'tab_none', 'New annotation:', 'New annotation:'), + ('new_nodecat_id', 've_review_audit_node', 'form_feature', 'tab_none', 'New nodecat id:', 'New nodecat id:'), + ('new_observ', 've_review_audit_node', 'form_feature', 'tab_none', 'New observ:', 'New observ:'), + ('node_id', 've_review_audit_node', 'form_feature', 'tab_none', 'Node id:', 'Node id:'), + ('old_annotation', 've_review_audit_node', 'form_feature', 'tab_none', 'Old annotation:', 'Old annotation:'), + ('old_nodecat_id', 've_review_audit_node', 'form_feature', 'tab_none', 'Old nodecat id:', 'Old nodecat id:'), + ('old_observ', 've_review_audit_node', 'form_feature', 'tab_none', 'Old observ:', 'Old observ:'), + ('review_status_id', 've_review_audit_node', 'form_feature', 'tab_none', 'Review status id:', 'Review status id:'), + ('annotation', 've_review_connec', 'form_feature', 'tab_none', 'Annotation:', 'Annotation:'), + ('connec_id', 've_review_connec', 'form_feature', 'tab_none', 'Connec id:', 'Connec id:'), + ('conneccat_id', 've_review_connec', 'form_feature', 'tab_none', 'Conneccat id:', 'Conneccat id:'), + ('expl_id', 've_review_connec', 'form_feature', 'tab_none', 'Expl id:', 'Expl id:'), + ('field_checked', 've_review_connec', 'form_feature', 'tab_none', 'Field checked:', 'Field checked:'), + ('is_validated', 've_review_connec', 'form_feature', 'tab_none', 'Is validated:', 'Is validated:'), + ('observ', 've_review_connec', 'form_feature', 'tab_none', 'Observ:', 'Observ:'), + ('review_obs', 've_review_connec', 'form_feature', 'tab_none', 'Review obs:', 'Review obs:'), + ('annotation', 've_review_node', 'form_feature', 'tab_none', 'Annotation:', 'Annotation:'), + ('expl_id', 've_review_node', 'form_feature', 'tab_none', 'Expl id:', 'Expl id:'), + ('field_checked', 've_review_node', 'form_feature', 'tab_none', 'Field checked:', 'Field checked:'), + ('is_validated', 've_review_node', 'form_feature', 'tab_none', 'Is validated:', 'Is validated:'), + ('node_id', 've_review_node', 'form_feature', 'tab_none', 'Node id:', 'Node id:'), + ('nodecat_id', 've_review_node', 'form_feature', 'tab_none', 'Nodecat id:', 'Nodecat id:'), + ('observ', 've_review_node', 'form_feature', 'tab_none', 'Observ:', 'Observ:'), + ('review_obs', 've_review_node', 'form_feature', 'tab_none', 'Review obs:', 'Review obs:'), + ('top_elev', 've_review_node', 'form_feature', 'tab_none', 'Top elev:', 'Top elev:'), + ('builtdate', 've_samplepoint', 'form_feature', 'tab_none', 'Builtdate:', 'Builtdate:'), + ('cabinet', 've_samplepoint', 'form_feature', 'tab_none', 'Cabinet:', 'Cabinet:'), + ('code', 've_samplepoint', 'form_feature', 'tab_none', 'Code:', 'Code:'), + ('district_id', 've_samplepoint', 'form_feature', 'tab_none', 'District:', 'District:'), + ('enddate', 've_samplepoint', 'form_feature', 'tab_none', 'Enddate:', 'Enddate:'), + ('expl_id', 've_samplepoint', 'form_feature', 'tab_none', 'Expl id:', 'Expl id:'), + ('feature_id', 've_samplepoint', 'form_feature', 'tab_none', 'Feature id:', 'Feature id:'), + ('featurecat_id', 've_samplepoint', 'form_feature', 'tab_none', 'Featurecat id:', 'Featurecat id:'), + ('lab_code', 've_samplepoint', 'form_feature', 'tab_none', 'Lab code:', 'Lab code:'), + ('link', 've_samplepoint', 'form_feature', 'tab_none', 'Link:', 'Link:'), + ('muni_id', 've_samplepoint', 'form_feature', 'tab_none', 'Muni id:', 'Muni id:'), + ('observations', 've_samplepoint', 'form_feature', 'tab_none', 'Observations:', 'Observations:'), + ('place_name', 've_samplepoint', 'form_feature', 'tab_none', 'Place name:', 'Place name:'), + ('postcode', 've_samplepoint', 'form_feature', 'tab_none', 'Postcode:', 'Postcode:'), + ('postcomplement', 've_samplepoint', 'form_feature', 'tab_none', 'Postcomplement:', 'Postcomplement:'), + ('postcomplement2', 've_samplepoint', 'form_feature', 'tab_none', 'Postcomplement2:', 'Postcomplement2:'), + ('postnumber', 've_samplepoint', 'form_feature', 'tab_none', 'Postnumber:', 'Postnumber:'), + ('postnumber2', 've_samplepoint', 'form_feature', 'tab_none', 'Postnumber2:', 'Postnumber2:'), + ('rotation', 've_samplepoint', 'form_feature', 'tab_none', 'Rotation:', 'Rotation:'), + ('sample_id', 've_samplepoint', 'form_feature', 'tab_none', 'Sample id:', 'Sample id:'), + ('state', 've_samplepoint', 'form_feature', 'tab_none', 'State:', 'State:'), + ('streetname', 've_samplepoint', 'form_feature', 'tab_none', 'Streetname:', 'Streetname:'), + ('streetname2', 've_samplepoint', 'form_feature', 'tab_none', 'Streetname2:', 'Streetname2:'), + ('verified', 've_samplepoint', 'form_feature', 'tab_none', 'Verified:', 'Verified:'), + ('workcat_id', 've_samplepoint', 'form_feature', 'tab_none', 'Workcat id:', 'Workcat id:'), + ('workcat_id_end', 've_samplepoint', 'form_feature', 'tab_none', 'Workcat id end:', 'Workcat id end:'), + ('active', 've_sector', 'form_feature', 'tab_none', 'Active:', 'Active:'), + ('addparam', 've_sector', 'form_feature', 'tab_none', 'Addparam:', 'Addparam:'), + ('avg_press', 've_sector', 'form_feature', 'tab_none', 'Average pressure:', 'Average pressure:'), + ('code', 've_sector', 'form_feature', 'tab_none', 'Code:', 'Code:'), + ('created_at', 've_sector', 'form_feature', 'tab_none', 'Created at:', 'Created at:'), + ('created_by', 've_sector', 'form_feature', 'tab_none', 'Created by:', 'Created by:'), + ('descript', 've_sector', 'form_feature', 'tab_none', 'Descript:', 'Descript:'), + ('expl_id', 've_sector', 'form_feature', 'tab_none', 'Expl id:', 'Expl id:'), + ('graphconfig', 've_sector', 'form_feature', 'tab_none', 'Graphconfig:', 'Graphconfig:'), + ('link', 've_sector', 'form_feature', 'tab_none', 'Link:', 'Link:'), + ('lock_level', 've_sector', 'form_feature', 'tab_none', 'Lock level:', 'Lock level:'), + ('macrosector_id', 've_sector', 'form_feature', 'tab_none', 'Macrosector id:', 'Macrosector id:'), + ('muni_id', 've_sector', 'form_feature', 'tab_none', 'Muni id:', 'Muni id:'), + ('name', 've_sector', 'form_feature', 'tab_none', 'Name:', 'Name:'), + ('pattern_id', 've_sector', 'form_feature', 'tab_none', 'Pattern id:', 'Pattern id:'), + ('sector_id', 've_sector', 'form_feature', 'tab_none', 'Sector id:', 'Sector id:'), + ('sector_type', 've_sector', 'form_feature', 'tab_none', 'Sector type:', 'Sector type:'), + ('stylesheet', 've_sector', 'form_feature', 'tab_none', 'Stylesheet:', 'Stylesheet:'), + ('updated_at', 've_sector', 'form_feature', 'tab_none', 'Updated at:', 'Updated at:'), + ('updated_by', 've_sector', 'form_feature', 'tab_none', 'Updated by:', 'Updated by:'), + ('expl_id', 've_vnode', 'form_feature', 'tab_none', 'Expl id:', 'Expl id:'), + ('sector_id', 've_vnode', 'form_feature', 'tab_none', 'Sector id:', 'Sector id:'), + ('state', 've_vnode', 'form_feature', 'tab_none', 'State:', 'State:'), + ('acceptbutton', 'visit_multievent', 'form_visit', 'tab_none', 'Accept:', 'Accept:'), + ('backbutton', 'visit_multievent', 'form_visit', 'tab_none', 'Back:', 'Back:'), + ('class_id', 'visit_multievent', 'form_visit', 'tab_none', 'Visit type:', 'Visit type:'), + ('descript', 'visit_multievent', 'form_visit', 'tab_none', 'Descript:', 'Descript:'), + ('divider', 'visit_multievent', 'form_visit', 'tab_none', NULL, 'divider'), + ('enddate', 'visit_multievent', 'form_visit', 'tab_none', 'End date:', 'End date:'), + ('expl_id', 'visit_multievent', 'form_visit', 'tab_none', 'Exploitation:', 'Exploitation:'), + ('ext_code', 'visit_multievent', 'form_visit', 'tab_none', 'Code:', 'Code:'), + ('feature_id', 'visit_multievent', 'form_visit', 'tab_none', 'Feature id:', 'Feature id:'), + ('image1', 'visit_multievent', 'form_visit', 'tab_none', NULL, 'image1'), + ('startdate', 'visit_multievent', 'form_visit', 'tab_none', 'Start date:', 'Start date:'), + ('status', 'visit_multievent', 'form_visit', 'tab_none', 'Status:', 'Status:'), + ('user_name', 'visit_multievent', 'form_visit', 'tab_none', 'User:', 'User:'), + ('visit_id', 'visit_multievent', 'form_visit', 'tab_none', 'Visit id:', 'Visit id:'), + ('visitcat_id', 'visit_multievent', 'form_visit', 'tab_none', 'Visitcat:', 'Visitcat:'), + ('acceptbutton', 'visit_singlevent', 'form_visit', 'tab_none', 'Accept:', 'Accept:'), + ('backbutton', 'visit_singlevent', 'form_visit', 'tab_none', 'Back:', 'Back:'), + ('class_id', 'visit_singlevent', 'form_visit', 'tab_none', 'Visit type:', 'Visit type:'), + ('descript', 'visit_singlevent', 'form_visit', 'tab_none', 'Descript:', 'Descript:'), + ('divider', 'visit_singlevent', 'form_visit', 'tab_none', NULL, 'divider'), + ('enddate', 'visit_singlevent', 'form_visit', 'tab_none', 'End date:', 'End date:'), + ('event_code', 'visit_singlevent', 'form_visit', 'tab_none', 'Event code:', 'Event code:'), + ('event_id', 'visit_singlevent', 'form_visit', 'tab_none', 'Event id:', 'Event id:'), + ('ext_code', 'visit_singlevent', 'form_visit', 'tab_none', 'Code:', 'Code:'), + ('feature_id', 'visit_singlevent', 'form_visit', 'tab_none', 'Feature id:', 'Feature id:'), + ('parameter_id', 'visit_singlevent', 'form_visit', 'tab_none', 'Parameter:', 'Parameter:'), + ('position_id', 'visit_singlevent', 'form_visit', 'tab_none', 'Position id:', 'Position id:'), + ('position_value', 'visit_singlevent', 'form_visit', 'tab_none', 'Position value:', 'Position value:'), + ('startdate', 'visit_singlevent', 'form_visit', 'tab_none', 'Start date:', 'Start date:'), + ('status', 'visit_singlevent', 'form_visit', 'tab_none', 'Status:', 'Status:'), + ('user_name', 'visit_singlevent', 'form_visit', 'tab_none', 'User:', 'User:'), + ('visit_id', 'visit_singlevent', 'form_visit', 'tab_none', 'Visit id:', 'Visit id:'), + ('visitcat_id', 'visit_singlevent', 'form_visit', 'tab_none', 'Visitcat:', 'Visitcat:'), + ('dext', 'cat_arc', 'form_feature', 'tab_none', 'Dext:', 'Dext:'), + ('dint', 'cat_arc', 'form_feature', 'tab_none', 'Internal diameter:', 'Internal diameter'), + ('dnom', 'cat_arc', 'form_feature', 'tab_none', 'Dnom:', 'Dnom:'), + ('pnom', 'cat_arc', 'form_feature', 'tab_none', 'Pnom:', 'Pnom:'), + ('dext', 'cat_connec', 'form_feature', 'tab_none', 'Dext:', 'Dext:'), + ('dint', 'cat_connec', 'form_feature', 'tab_none', 'Internal diameter:', 'Internal diameter'), + ('dnom', 'cat_connec', 'form_feature', 'tab_none', 'Dnom:', 'Dnom:'), + ('pnom', 'cat_connec', 'form_feature', 'tab_none', 'Pnom:', 'Pnom:'), + ('epa_default', 'cat_feature_connec', 'form_feature', 'tab_none', 'Epa default:', 'Epa default:'), + ('active', 'cat_mat_roughness', 'form_feature', 'tab_none', 'Active:', 'Active:'), + ('descript', 'cat_mat_roughness', 'form_feature', 'tab_none', 'Descript:', 'Descript:'), + ('end_age', 'cat_mat_roughness', 'form_feature', 'tab_none', 'End age:', 'End age:'), + ('id', 'cat_mat_roughness', 'form_feature', 'tab_none', 'Id:', 'Id:'), + ('init_age', 'cat_mat_roughness', 'form_feature', 'tab_none', 'Init age:', 'Init age:'), + ('matcat_id', 'cat_mat_roughness', 'form_feature', 'tab_none', 'Matcat id:', 'Matcat id:'), + ('period_id', 'cat_mat_roughness', 'form_feature', 'tab_none', 'Period id:', 'Period id:'), + ('roughness', 'cat_mat_roughness', 'form_feature', 'tab_none', 'Roughness:', 'Roughness:'), + ('dext', 'cat_node', 'form_feature', 'tab_none', 'Dext:', 'Dext:'), + ('dint', 'cat_node', 'form_feature', 'tab_none', 'Internal diameter:', 'Internal diameter:'), + ('dnom', 'cat_node', 'form_feature', 'tab_none', 'Dnom:', 'Dnom:'), + ('estimated_depth', 'cat_node', 'form_feature', 'tab_none', 'Estimated depth:', 'Estimated depth:'), + ('ischange', 'cat_node', 'form_feature', 'tab_none', 'Ischange:', 'Ischange:'), + ('pnom', 'cat_node', 'form_feature', 'tab_none', 'Pnom:', 'Pnom:'), + ('tbl_additional', 'generic', 'dscenario', 'tab_additional', ':', 'Table'), + ('tbl_connec', 'generic', 'dscenario', 'tab_connec', ':', 'Table'), + ('tbl_demand', 'generic', 'dscenario', 'tab_demand', ':', 'Table'), + ('tbl_inlet', 'generic', 'dscenario', 'tab_inlet', ':', 'Table'), + ('tbl_pipe', 'generic', 'dscenario', 'tab_pipe', ':', 'Table'), + ('tbl_reservoir', 'generic', 'dscenario', 'tab_reservoir', ':', 'Table'), + ('tbl_rules', 'generic', 'dscenario', 'tab_rules', ':', 'Table'), + ('tbl_shortpipe', 'generic', 'dscenario', 'tab_shortpipe', ':', 'Table'), + ('tbl_tank', 'generic', 'dscenario', 'tab_tank', ':', 'Table'), + ('tbl_valve', 'generic', 'dscenario', 'tab_valve', ':', 'Table'), + ('tbl_virtualpump', 'generic', 'dscenario', 'tab_virtualpump', ':', 'Table'), + ('tbl_virtualvalve', 'generic', 'dscenario', 'tab_virtualvalve', ':', 'Table'), + ('time_compare', 'generic', 'epa_selector', 'tab_time', 'Time (to compare):', 'Time (to compare)'), + ('time_show', 'generic', 'epa_selector', 'tab_time', 'Time (to show):', 'Time show'), + ('fluid_type', 'generic', 'form_featuretype_change', 'tab_none', 'Fluid type:', 'Fluid type'), + ('active', 'generic', 'nvo_roughness', 'tab_none', 'Active:', 'Active:'), + ('descript', 'generic', 'nvo_roughness', 'tab_none', 'Descript:', 'Descript:'), + ('end_age', 'generic', 'nvo_roughness', 'tab_none', 'End Age:', 'End Age:'), + ('init_age', 'generic', 'nvo_roughness', 'tab_none', 'Init Age:', 'Init Age:'), + ('matcat_id', 'generic', 'nvo_roughness', 'tab_none', 'Matcat Id:', 'Matcat Id:'), + ('period_id', 'generic', 'nvo_roughness', 'tab_none', 'Period Id:', 'Period Id:'), + ('roughness', 'generic', 'nvo_roughness', 'tab_none', 'Roughness:', 'Roughness:'), + ('active', 'generic', 'nvo_rules', 'tab_none', 'Active:', 'Active:'), + ('sector_id', 'generic', 'nvo_rules', 'tab_none', 'Sector Id:', 'Sector Id:'), + ('descript', 'inp_cat_mat_roughness', 'form_feature', 'tab_none', 'Descript:', 'Descript:'), + ('end_age', 'inp_cat_mat_roughness', 'form_feature', 'tab_none', 'End age:', 'End age:'), + ('id', 'inp_cat_mat_roughness', 'form_feature', 'tab_none', 'Id:', 'Id:'), + ('init_age', 'inp_cat_mat_roughness', 'form_feature', 'tab_none', 'Init age:', 'Init age:'), + ('matcat_id', 'inp_cat_mat_roughness', 'form_feature', 'tab_none', 'Matcat id:', 'Matcat id:'), + ('period_id', 'inp_cat_mat_roughness', 'form_feature', 'tab_none', 'Period id:', 'Period id:'), + ('roughness', 'inp_cat_mat_roughness', 'form_feature', 'tab_none', 'Roughness:', 'Roughness:'), + ('descript', 'inp_curve', 'form_feature', 'tab_none', 'Descript:', 'Descript:'), + ('connec_id', 'inp_dscenario_connec', 'form_feature', 'tab_none', 'Connec id:', 'Connec id:'), + ('custom_dint', 'inp_dscenario_connec', 'form_feature', 'tab_none', 'Custom dint:', 'Custom dint:'), + ('custom_length', 'inp_dscenario_connec', 'form_feature', 'tab_none', 'Custom length:', 'Custom length:'), + ('custom_roughness', 'inp_dscenario_connec', 'form_feature', 'tab_none', 'Custom roughness:', 'Custom roughness:'), + ('demand', 'inp_dscenario_connec', 'form_feature', 'tab_none', 'Demand:', 'Demand:'), + ('dscenario_id', 'inp_dscenario_connec', 'form_feature', 'tab_none', 'Dscenario id:', 'Dscenario id:'), + ('emitter_coeff', 'inp_dscenario_connec', 'form_feature', 'tab_none', 'Emitter coeff:', 'coef'), + ('init_quality', 'inp_dscenario_connec', 'form_feature', 'tab_none', 'Init quality:', 'initqual'), + ('minorloss', 'inp_dscenario_connec', 'form_feature', 'tab_none', 'Minorloss:', 'Minorloss:'), + ('pattern_id', 'inp_dscenario_connec', 'form_feature', 'tab_none', 'Pattern id:', 'Pattern id:'), + ('peak_factor', 'inp_dscenario_connec', 'form_feature', 'tab_none', 'Peak factor:', 'Peak factor:'), + ('source_pattern_id', 'inp_dscenario_connec', 'form_feature', 'tab_none', 'Source pattern id:', 'pattern_id'), + ('source_quality', 'inp_dscenario_connec', 'form_feature', 'tab_none', 'Source quality:', 'quality'), + ('source_type', 'inp_dscenario_connec', 'form_feature', 'tab_none', 'Source type:', 'sourc_type'), + ('status', 'inp_dscenario_connec', 'form_feature', 'tab_none', 'Status:', 'Status:'), + ('demand', 'inp_dscenario_demand', 'form_feature', 'tab_none', 'Demand:', 'Demand:'), + ('demand_type', 'inp_dscenario_demand', 'form_feature', 'tab_none', 'Demand type:', 'Demand type:'), + ('dscenario_id', 'inp_dscenario_demand', 'form_feature', 'tab_none', 'Dscenario id:', 'Dscenario id:'), + ('feature_id', 'inp_dscenario_demand', 'form_feature', 'tab_none', 'Feature id:', 'Feature id:'), + ('feature_type', 'inp_dscenario_demand', 'form_feature', 'tab_none', 'Feature type:', 'Feature type:'), + ('pattern_id', 'inp_dscenario_demand', 'form_feature', 'tab_none', 'Pattern id:', 'Pattern id:'), + ('source', 'inp_dscenario_demand', 'form_feature', 'tab_none', 'Source:', 'Source:'), + ('effic_curve_id', 'inp_dscenario_frpump', 'form_feature', 'tab_none', 'Eff. curve:', 'Eff. curve'), + ('energy_pattern_id', 'inp_dscenario_frpump', 'form_feature', 'tab_none', 'Price pattern:', 'Price pattern'), + ('energy_price', 'inp_dscenario_frpump', 'form_feature', 'tab_none', 'Energy price:', 'Energy price'), + ('pattern_id', 'inp_dscenario_frpump', 'form_feature', 'tab_none', 'Pattern id:', 'Pattern id'), + ('power', 'inp_dscenario_frpump', 'form_feature', 'tab_none', 'Power:', 'Power'), + ('speed', 'inp_dscenario_frpump', 'form_feature', 'tab_none', 'Speed:', 'Speed'), + ('bulk_coeff', 'inp_dscenario_frshortpipe', 'form_feature', 'tab_none', 'Bulk coefficient:', 'Bulk coefficient'), + ('dscenario_id', 'inp_dscenario_frshortpipe', 'form_feature', 'tab_none', 'Dscenario id:', 'Dscenario id'), + ('element_id', 'inp_dscenario_frshortpipe', 'form_feature', 'tab_none', 'Element id:', 'Element id'), + ('minorloss', 'inp_dscenario_frshortpipe', 'form_feature', 'tab_none', 'Minorloss:', 'Minorloss'), + ('status', 'inp_dscenario_frshortpipe', 'form_feature', 'tab_none', 'Status:', 'Status'), + ('wall_coeff', 'inp_dscenario_frshortpipe', 'form_feature', 'tab_none', 'Wall coeff:', 'Wall coeff'), + ('add_settings', 'inp_dscenario_frvalve', 'form_feature', 'tab_none', 'Add settings:', 'Add settings'), + ('curve_id', 'inp_dscenario_frvalve', 'form_feature', 'tab_none', 'Curve id:', 'Curve id'), + ('custom_dint', 'inp_dscenario_frvalve', 'form_feature', 'tab_none', 'Custom dint:', 'Custom dint'), + ('dscenario_id', 'inp_dscenario_frvalve', 'form_feature', 'tab_none', 'Dscenario id:', 'Dscenario id'), + ('element_id', 'inp_dscenario_frvalve', 'form_feature', 'tab_none', 'Element id:', 'Element id'), + ('init_quality', 'inp_dscenario_frvalve', 'form_feature', 'tab_none', 'Init quality:', 'Init quality'), + ('minorloss', 'inp_dscenario_frvalve', 'form_feature', 'tab_none', 'Minorloss:', 'Minorloss'), + ('setting', 'inp_dscenario_frvalve', 'form_feature', 'tab_none', 'Setting:', 'Setting'), + ('status', 'inp_dscenario_frvalve', 'form_feature', 'tab_none', 'Status:', 'Status'), + ('valve_type', 'inp_dscenario_frvalve', 'form_feature', 'tab_none', 'Valve type:', 'Valve type'), + ('init_quality', 'inp_dscenario_inlet', 'form_feature', 'tab_epa', 'Initial quality:', 'Initial quality'), + ('mixing_fraction', 'inp_dscenario_inlet', 'form_feature', 'tab_epa', 'Mixing fraction:', 'Mixing fraction'), + ('mixing_model', 'inp_dscenario_inlet', 'form_feature', 'tab_epa', 'Mixing model:', 'Mixing model'), + ('source_pattern_id', 'inp_dscenario_inlet', 'form_feature', 'tab_epa', 'Source pattern:', 'Source pattern'), + ('source_quality', 'inp_dscenario_inlet', 'form_feature', 'tab_epa', 'Source quality:', 'Source quality'), + ('source_type', 'inp_dscenario_inlet', 'form_feature', 'tab_epa', 'Source type:', 'Source type'), + ('curve_id', 'inp_dscenario_inlet', 'form_feature', 'tab_none', 'Curve id:', 'Curve id:'), + ('diameter', 'inp_dscenario_inlet', 'form_feature', 'tab_none', 'Diameter:', 'Diameter:'), + ('dscenario_id', 'inp_dscenario_inlet', 'form_feature', 'tab_none', 'Dscenario id:', 'Dscenario id:'), + ('head', 'inp_dscenario_inlet', 'form_feature', 'tab_none', 'Head:', 'Head:'), + ('initlevel', 'inp_dscenario_inlet', 'form_feature', 'tab_none', 'Initlevel:', 'Initlevel:'), + ('maxlevel', 'inp_dscenario_inlet', 'form_feature', 'tab_none', 'Maxlevel:', 'Maxlevel:'), + ('minlevel', 'inp_dscenario_inlet', 'form_feature', 'tab_none', 'Minlevel:', 'Minlevel:'), + ('minvol', 'inp_dscenario_inlet', 'form_feature', 'tab_none', 'Minvol:', 'Minvol:'), + ('node_id', 'inp_dscenario_inlet', 'form_feature', 'tab_none', 'Node id:', 'Node id:'), + ('overflow', 'inp_dscenario_inlet', 'form_feature', 'tab_none', 'Overflow:', 'Overflow:'), + ('pattern_id', 'inp_dscenario_inlet', 'form_feature', 'tab_none', 'Pattern id:', 'Pattern id:'), + ('demand', 'inp_dscenario_junction', 'form_feature', 'tab_none', 'Demand:', 'Demand:'), + ('emitter_coeff', 'inp_dscenario_junction', 'form_feature', 'tab_none', 'Emitter coeff:', 'coef'), + ('init_quality', 'inp_dscenario_junction', 'form_feature', 'tab_none', 'Init quality:', 'initqual'), + ('pattern_id', 'inp_dscenario_junction', 'form_feature', 'tab_none', 'Pattern id:', 'Pattern id:'), + ('peak_factor', 'inp_dscenario_junction', 'form_feature', 'tab_none', 'Peak factor:', 'Peak factor:'), + ('source_pattern_id', 'inp_dscenario_junction', 'form_feature', 'tab_none', 'Source pattern id:', 'pattern_id'), + ('source_quality', 'inp_dscenario_junction', 'form_feature', 'tab_none', 'Source quality:', 'quality'), + ('source_type', 'inp_dscenario_junction', 'form_feature', 'tab_none', 'Source type:', 'sourc_type'), + ('arc_id', 'inp_dscenario_pipe', 'form_feature', 'tab_none', 'Arc id:', 'Arc id:'), + ('dint', 'inp_dscenario_pipe', 'form_feature', 'tab_none', 'Internal diameter:', 'Internal diameter'), + ('dscenario_id', 'inp_dscenario_pipe', 'form_feature', 'tab_none', 'Dscenario id:', 'Dscenario id:'), + ('minorloss', 'inp_dscenario_pipe', 'form_feature', 'tab_none', 'Minorloss:', 'Minorloss:'), + ('roughness', 'inp_dscenario_pipe', 'form_feature', 'tab_none', 'Roughness:', 'Roughness:'), + ('status', 'inp_dscenario_pipe', 'form_feature', 'tab_none', 'Status:', 'Status:'), + ('curve_id', 'inp_dscenario_pump', 'form_feature', 'tab_none', 'Curve id:', 'Curve id:'), + ('dscenario_id', 'inp_dscenario_pump', 'form_feature', 'tab_none', 'Dscenario id:', 'Dscenario id:'), + ('effic_curve_id', 'inp_dscenario_pump', 'form_feature', 'tab_none', 'Effic curve id:', 'curve_id'), + ('energy_pattern_id', 'inp_dscenario_pump', 'form_feature', 'tab_none', 'Energy pattern id:', 'pattern_id'), + ('node_id', 'inp_dscenario_pump', 'form_feature', 'tab_none', 'Node id:', 'Node id:'), + ('pattern_id', 'inp_dscenario_pump', 'form_feature', 'tab_none', 'Pattern:', 'pattern'), + ('power', 'inp_dscenario_pump', 'form_feature', 'tab_none', 'Power:', 'Power:'), + ('speed', 'inp_dscenario_pump', 'form_feature', 'tab_none', 'Speed:', 'Speed:'), + ('status', 'inp_dscenario_pump', 'form_feature', 'tab_none', 'Status:', 'Status:'), + ('curve_id', 'inp_dscenario_pump_additional', 'form_feature', 'tab_none', 'Curve id:', 'Curve id:'), + ('dscenario_id', 'inp_dscenario_pump_additional', 'form_feature', 'tab_none', 'Dscenario id:', 'Dscenario id:'), + ('effic_curve_id', 'inp_dscenario_pump_additional', 'form_feature', 'tab_none', 'Effic curve id:', 'curve_id'), + ('energy_pattern_id', 'inp_dscenario_pump_additional', 'form_feature', 'tab_none', 'Energy pattern id:', 'pattern_id'), + ('node_id', 'inp_dscenario_pump_additional', 'form_feature', 'tab_none', 'Node id:', 'Node id:'), + ('order_id', 'inp_dscenario_pump_additional', 'form_feature', 'tab_none', 'Order id:', 'Order id:'), + ('pattern_id', 'inp_dscenario_pump_additional', 'form_feature', 'tab_none', 'Pattern:', 'pattern'), + ('power', 'inp_dscenario_pump_additional', 'form_feature', 'tab_none', 'Power:', 'Power:'), + ('speed', 'inp_dscenario_pump_additional', 'form_feature', 'tab_none', 'Speed:', 'Speed:'), + ('status', 'inp_dscenario_pump_additional', 'form_feature', 'tab_none', 'Status:', 'Status:'), + ('dscenario_id', 'inp_dscenario_reservoir', 'form_feature', 'tab_none', 'Dscenario id:', 'Dscenario id:'), + ('head', 'inp_dscenario_reservoir', 'form_feature', 'tab_none', 'Head:', 'Head:'), + ('init_quality', 'inp_dscenario_reservoir', 'form_feature', 'tab_none', 'Init quality:', 'initqual'), + ('node_id', 'inp_dscenario_reservoir', 'form_feature', 'tab_none', 'Node id:', 'Node id:'), + ('pattern_id', 'inp_dscenario_reservoir', 'form_feature', 'tab_none', 'Pattern id:', 'Pattern id:'), + ('source_pattern_id', 'inp_dscenario_reservoir', 'form_feature', 'tab_none', 'Source pattern id:', 'pattern_id'), + ('source_quality', 'inp_dscenario_reservoir', 'form_feature', 'tab_none', 'Source quality:', 'quality'), + ('source_type', 'inp_dscenario_reservoir', 'form_feature', 'tab_none', 'Source type:', 'sourc_type'), + ('active', 'inp_dscenario_rules', 'form_feature', 'tab_none', 'Active:', 'Active:'), + ('dscenario_id', 'inp_dscenario_rules', 'form_feature', 'tab_none', 'Dscenario id:', 'Dscenario id:'), + ('id', 'inp_dscenario_rules', 'form_feature', 'tab_none', 'Id:', 'Id:'), + ('sector_id', 'inp_dscenario_rules', 'form_feature', 'tab_none', 'Sector id:', 'Sector id:'), + ('text', 'inp_dscenario_rules', 'form_feature', 'tab_none', 'Text:', 'Text:'), + ('dscenario_id', 'inp_dscenario_shortpipe', 'form_feature', 'tab_none', 'Dscenario id:', 'Dscenario id:'), + ('minorloss', 'inp_dscenario_shortpipe', 'form_feature', 'tab_none', 'Minorloss:', 'Minorloss:'), + ('node_id', 'inp_dscenario_shortpipe', 'form_feature', 'tab_none', 'Node id:', 'Node id:'), + ('status', 'inp_dscenario_shortpipe', 'form_feature', 'tab_none', 'Status:', 'Status:'), + ('to_arc', 'inp_dscenario_shortpipe', 'form_feature', 'tab_none', 'To arc:', 'To arc:'), + ('init_quality', 'inp_dscenario_tank', 'form_feature', 'tab_epa', 'Initial quality:', 'Initial quality'), + ('mixing_fraction', 'inp_dscenario_tank', 'form_feature', 'tab_epa', 'Mixing fraction:', 'Mixing fraction'), + ('mixing_model', 'inp_dscenario_tank', 'form_feature', 'tab_epa', 'Mixing model:', 'Mixing model'), + ('source_pattern_id', 'inp_dscenario_tank', 'form_feature', 'tab_epa', 'Source pattern:', 'Source pattern'), + ('source_quality', 'inp_dscenario_tank', 'form_feature', 'tab_epa', 'Source quality:', 'Source quality'), + ('source_type', 'inp_dscenario_tank', 'form_feature', 'tab_epa', 'Source type:', 'Source type'), + ('curve_id', 'inp_dscenario_tank', 'form_feature', 'tab_none', 'Curve id:', 'Curve id:'), + ('diameter', 'inp_dscenario_tank', 'form_feature', 'tab_none', 'Diameter:', 'Diameter:'), + ('dscenario_id', 'inp_dscenario_tank', 'form_feature', 'tab_none', 'Dscenario id:', 'Dscenario id:'), + ('initlevel', 'inp_dscenario_tank', 'form_feature', 'tab_none', 'Initlevel:', 'Initlevel:'), + ('maxlevel', 'inp_dscenario_tank', 'form_feature', 'tab_none', 'Maxlevel:', 'Maxlevel:'), + ('minlevel', 'inp_dscenario_tank', 'form_feature', 'tab_none', 'Minlevel:', 'Minlevel:'), + ('minvol', 'inp_dscenario_tank', 'form_feature', 'tab_none', 'Minvol:', 'Minvol:'), + ('node_id', 'inp_dscenario_tank', 'form_feature', 'tab_none', 'Node id:', 'Node id:'), + ('overflow', 'inp_dscenario_tank', 'form_feature', 'tab_none', 'Overflow:', 'Overflow:'), + ('add_settings', 'inp_dscenario_valve', 'form_feature', 'tab_none', 'Add settings:', 'Add settings:'), + ('curve_id', 'inp_dscenario_valve', 'form_feature', 'tab_none', 'Curve id:', 'Curve id:'), + ('dscenario_id', 'inp_dscenario_valve', 'form_feature', 'tab_none', 'Dscenario id:', 'Dscenario id:'), + ('init_quality', 'inp_dscenario_valve', 'form_feature', 'tab_none', 'Init quality:', 'initqual'), + ('minorloss', 'inp_dscenario_valve', 'form_feature', 'tab_none', 'Minorloss:', 'Minorloss:'), + ('node_id', 'inp_dscenario_valve', 'form_feature', 'tab_none', 'Node id:', 'Node id:'), + ('setting', 'inp_dscenario_valve', 'form_feature', 'tab_none', 'Setting:', 'Setting:'), + ('status', 'inp_dscenario_valve', 'form_feature', 'tab_none', 'Status:', 'Status:'), + ('to_arc', 'inp_dscenario_valve', 'form_feature', 'tab_none', 'To arc:', 'To arc:'), + ('valve_type', 'inp_dscenario_valve', 'form_feature', 'tab_none', 'Valve type:', 'Valve type:'), + ('pump_type', 'inp_dscenario_virtualpump', 'form_feature', 'tab_epa', 'Pump type:', 'Pump type'), + ('arc_id', 'inp_dscenario_virtualpump', 'form_feature', 'tab_none', 'Arc id:', 'Arc id:'), + ('curve_id', 'inp_dscenario_virtualpump', 'form_feature', 'tab_none', 'Curve id:', 'Curve id:'), + ('dscenario_id', 'inp_dscenario_virtualpump', 'form_feature', 'tab_none', 'Dscenario id:', 'Dscenario id:'), + ('effic_curve_id', 'inp_dscenario_virtualpump', 'form_feature', 'tab_none', 'Effic curve id:', 'curve_id'), + ('energy_pattern_id', 'inp_dscenario_virtualpump', 'form_feature', 'tab_none', 'Energy pattern id:', 'pattern_id'), + ('pattern_id', 'inp_dscenario_virtualpump', 'form_feature', 'tab_none', 'Pattern:', 'pattern'), + ('power', 'inp_dscenario_virtualpump', 'form_feature', 'tab_none', 'Power:', 'Power:'), + ('speed', 'inp_dscenario_virtualpump', 'form_feature', 'tab_none', 'Speed:', 'Speed:'), + ('status', 'inp_dscenario_virtualpump', 'form_feature', 'tab_none', 'Status:', 'Status:'), + ('arc_id', 'inp_dscenario_virtualvalve', 'form_feature', 'tab_none', 'Arc id:', 'Arc id:'), + ('curve_id', 'inp_dscenario_virtualvalve', 'form_feature', 'tab_none', 'Curve id:', 'Curve id:'), + ('diameter', 'inp_dscenario_virtualvalve', 'form_feature', 'tab_none', 'Diameter:', 'Diameter:'), + ('dscenario_id', 'inp_dscenario_virtualvalve', 'form_feature', 'tab_none', 'Dscenario id:', 'Dscenario id:'), + ('init_quality', 'inp_dscenario_virtualvalve', 'form_feature', 'tab_none', 'Init quality:', 'initqual'), + ('minorloss', 'inp_dscenario_virtualvalve', 'form_feature', 'tab_none', 'Minorloss:', 'Minorloss:'), + ('setting', 'inp_dscenario_virtualvalve', 'form_feature', 'tab_none', 'Setting:', 'Setting:'), + ('status', 'inp_dscenario_virtualvalve', 'form_feature', 'tab_none', 'Status:', 'Status:'), + ('valve_type', 'inp_dscenario_virtualvalve', 'form_feature', 'tab_none', 'Valve type:', 'Valve type:'), + ('descript', 'inp_energy', 'form_feature', 'tab_none', 'Descript:', 'Descript:'), + ('id', 'inp_energy', 'form_feature', 'tab_none', 'Id:', 'Id:'), + ('parameter', 'inp_energy_el', 'form_feature', 'tab_none', 'Parameter:', 'Parameter:'), + ('mix_type', 'inp_mixing', 'form_feature', 'tab_none', 'Mix type:', 'Mix type:'), + ('node_id', 'inp_mixing', 'form_feature', 'tab_none', 'Node id:', 'Node id:'), + ('value', 'inp_mixing', 'form_feature', 'tab_none', 'Value:', 'Value:'), + ('pattern_type', 'inp_pattern', 'form_feature', 'tab_none', '`pattern type:', '`pattern type:'), + ('tscode', 'inp_pattern', 'form_feature', 'tab_none', 'Tscode:', 'Tscode:'), + ('_factor_19', 'inp_pattern_value', 'form_feature', 'tab_none', 'Factor 19:', 'Factor 19:'), + ('_factor_20', 'inp_pattern_value', 'form_feature', 'tab_none', 'Factor 20:', 'Factor 20:'), + ('_factor_21', 'inp_pattern_value', 'form_feature', 'tab_none', 'Factor 21:', 'Factor 21:'), + ('_factor_22', 'inp_pattern_value', 'form_feature', 'tab_none', 'Factor 22:', 'Factor 22:'), + ('_factor_23', 'inp_pattern_value', 'form_feature', 'tab_none', 'Factor 23:', 'Factor 23:'), + ('_factor_24', 'inp_pattern_value', 'form_feature', 'tab_none', 'Factor 24:', 'Factor 24:'), + ('curve_id', 'inp_pump_additional', 'form_feature', 'tab_none', 'Curve id:', 'Curve id:'), + ('energyparam', 'inp_pump_additional', 'form_feature', 'tab_none', 'Energyparam:', 'Energyparam:'), + ('id', 'inp_pump_additional', 'form_feature', 'tab_none', 'Id:', 'Id:'), + ('node_id', 'inp_pump_additional', 'form_feature', 'tab_none', 'Node id:', 'Node id:'), + ('order_id', 'inp_pump_additional', 'form_feature', 'tab_none', 'Order id:', 'Order id:'), + ('pattern_id', 'inp_pump_additional', 'form_feature', 'tab_none', 'Pattern:', 'pattern'), + ('power', 'inp_pump_additional', 'form_feature', 'tab_none', 'Power:', 'Power:'), + ('speed', 'inp_pump_additional', 'form_feature', 'tab_none', 'Speed:', 'Speed:'), + ('status', 'inp_pump_additional', 'form_feature', 'tab_none', 'Status:', 'Status:'), + ('descript', 'inp_reactions', 'form_feature', 'tab_none', 'Descript:', 'Descript:'), + ('id', 'inp_reactions', 'form_feature', 'tab_none', 'Id:', 'Id:'), + ('parameter', 'inp_reactions_el', 'form_feature', 'tab_none', 'Parameter:', 'Parameter:'), + ('active', 'inp_rules', 'form_feature', 'tab_none', 'Active:', 'Active:'), + ('id', 'inp_rules', 'form_feature', 'tab_none', 'Id:', 'Id:'), + ('sector_id', 'inp_rules', 'form_feature', 'tab_none', 'Sector id:', 'Sector id:'), + ('text', 'inp_rules', 'form_feature', 'tab_none', 'Text:', 'Text:'), + ('init_quality', 'inp_virtualvalve', 'form_feature', 'tab_none', 'Init quality:', 'initqual'), + ('anl_cause', 'mincut', 'form_mincut', 'tab_mincut', 'Causa:', 'Causa:'), + ('anl_descript', 'mincut', 'form_mincut', 'tab_mincut', 'Descripción:', 'Descripción:'), + ('assigned_to', 'mincut', 'form_mincut', 'tab_mincut', 'Asignado a:', 'Asignado a:'), + ('chk_use_planified', 'mincut', 'form_mincut', 'tab_mincut', 'Usar red planificada:', 'Usar red planificada:'), + ('exec_appropiate', 'mincut', 'form_mincut', 'tab_mincut', 'Apropiado:', 'Apropiado:'), + ('exec_depth', 'mincut', 'form_mincut', 'tab_mincut', 'Profundidad:', 'Profundidad:'), + ('exec_descript', 'mincut', 'form_mincut', 'tab_mincut', 'Descripción:', 'Descripción:'), + ('exec_end', 'mincut', 'form_mincut', 'tab_mincut', 'Fecha final:', 'Fecha final:'), + ('exec_from_plot', 'mincut', 'form_mincut', 'tab_mincut', 'Distancia fachada:', 'Distancia fachada:'), + ('exec_start', 'mincut', 'form_mincut', 'tab_mincut', 'Fecha inicial:', 'Fecha inicial:'), + ('exec_user', 'mincut', 'form_mincut', 'tab_mincut', 'Usuario ejecutivo:', 'Usuario ejecutivo:'), + ('forecast_end', 'mincut', 'form_mincut', 'tab_mincut', 'Hasta:', 'Hasta:'), + ('forecast_start', 'mincut', 'form_mincut', 'tab_mincut', 'Desde:', 'Desde:'), + ('id', 'mincut', 'form_mincut', 'tab_mincut', 'Id:', 'Id:'), + ('mincut_state', 'mincut', 'form_mincut', 'tab_mincut', 'Estado:', 'Estado:'), + ('mincut_type', 'mincut', 'form_mincut', 'tab_mincut', 'Tipo:', 'Tipo:'), + ('received_date', 'mincut', 'form_mincut', 'tab_mincut', 'Fecha de recibo:', 'Fecha de recibo:'), + ('work_order', 'mincut', 'form_mincut', 'tab_mincut', 'Orden de trabajo:', 'Orden de trabajo:'), + ('cancel', 'mincut_manager', 'form_mincut', 'tab_none', NULL, 'Close'), + ('cancel_mincut', 'mincut_manager', 'form_mincut', 'tab_none', NULL, 'Cancel mincut'), + ('date_from', 'mincut_manager', 'form_mincut', 'tab_none', 'From:', 'From:'), + ('date_to', 'mincut_manager', 'form_mincut', 'tab_none', 'To:', 'To:'), + ('delete', 'mincut_manager', 'form_mincut', 'tab_none', NULL, 'Delete'), + ('exploitation', 'mincut_manager', 'form_mincut', 'tab_none', 'Exploitation:', 'Exploitation:'), + ('mincut_id', 'mincut_manager', 'form_mincut', 'tab_none', 'Filter by: id OR work order:', 'Filter by: id OR work order:'), + ('mincut_type', 'mincut_manager', 'form_mincut', 'tab_none', 'Type:', 'Type:'), + ('next_days', 'mincut_manager', 'form_mincut', 'tab_none', 'Next days:', 'Next days:'), + ('spm_next_days', 'mincut_manager', 'form_mincut', 'tab_none', 'Spmdays:', 'Spmdays:'), + ('state', 'mincut_manager', 'form_mincut', 'tab_none', 'State:', 'State:'), + ('streetaxis', 'mincut_manager', 'form_mincut', 'tab_none', 'Streetaxis:', 'Streetaxis:'), + ('descript', 'new_dma', 'form_catalog', 'tab_none', 'Descript:', 'Descript:'), + ('dma_id', 'new_dma', 'form_catalog', 'tab_none', 'Dma id:', 'Dma id:'), + ('expl_id', 'new_dma', 'form_catalog', 'tab_none', 'Exploitation:', 'Exploitation:'), + ('link', 'new_dma', 'form_catalog', 'tab_none', 'Link:', 'Link:'), + ('macrodma_id', 'new_dma', 'form_catalog', 'tab_none', 'Macrodma:', 'Macrodma:'), + ('mapzoneType', 'new_dma', 'form_catalog', 'tab_none', 'Type:', 'Type:'), + ('name', 'new_dma', 'form_catalog', 'tab_none', 'Name:', 'Name:'), + ('stylesheet', 'new_dma', 'form_catalog', 'tab_none', 'Stylesheet:', 'Stylesheet:'), + ('expl_id', 'new_presszone', 'form_catalog', 'tab_none', 'Exploitation:', 'Exploitation:'), + ('head', 'new_presszone', 'form_catalog', 'tab_none', 'Head:', 'Head:'), + ('link', 'new_presszone', 'form_catalog', 'tab_none', 'Link:', 'Link:'), + ('mapzoneType', 'new_presszone', 'form_catalog', 'tab_none', 'Type:', 'Type:'), + ('name', 'new_presszone', 'form_catalog', 'tab_none', 'Name:', 'Name:'), + ('presszone_id', 'new_presszone', 'form_catalog', 'tab_none', 'Id:', 'Id:'), + ('stylesheet', 'new_presszone', 'form_catalog', 'tab_none', 'Stylesheet:', 'Stylesheet:'), + ('btn_link', 'node', 'form_feature', 'tab_hydrometer', NULL, 'Open link'), + ('hydrometer_id', 'node', 'form_feature', 'tab_hydrometer', ':', 'Hydrometer id'), + ('cat_period_id', 'node', 'form_feature', 'tab_hydrometer_val', 'Cat period filter:', 'Cat period filter:'), + ('hydrometer_customer_code', 'node', 'form_feature', 'tab_hydrometer_val', 'Customer code:', 'Customer code:'), + ('active', 'plan_netscenario', 'form_feature', 'tab_none', 'Active:', 'Active:'), + ('descript', 'plan_netscenario', 'form_feature', 'tab_none', 'Descript:', 'Descript:'), + ('expl_id', 'plan_netscenario', 'form_feature', 'tab_none', 'Expl id:', 'Expl id:'), + ('log', 'plan_netscenario', 'form_feature', 'tab_none', 'Log:', 'Log:'), + ('name', 'plan_netscenario', 'form_feature', 'tab_none', 'Name:', 'Name:'), + ('netscenario_id', 'plan_netscenario', 'form_feature', 'tab_none', 'Netscenario id:', 'Netscenario id:'), + ('netscenario_type', 'plan_netscenario', 'form_feature', 'tab_none', 'Netscenario type:', 'Netscenario type:'), + ('parent_id', 'plan_netscenario', 'form_feature', 'tab_none', 'Parent id:', 'Parent id:'), + ('active', 'plan_netscenario_dma', 'form_feature', 'tab_none', 'Active:', 'Active:'), + ('dma_id', 'plan_netscenario_dma', 'form_feature', 'tab_none', 'Dma id:', 'Dma id:'), + ('dma_name', 'plan_netscenario_dma', 'form_feature', 'tab_none', 'Name:', 'Name:'), + ('graphconfig', 'plan_netscenario_dma', 'form_feature', 'tab_none', 'Graphconfig:', 'Graphconfig:'), + ('lastupdate', 'plan_netscenario_dma', 'form_feature', 'tab_none', 'Lastupdate:', 'Lastupdate:'), + ('lastupdate_user', 'plan_netscenario_dma', 'form_feature', 'tab_none', 'Lastupdate user:', 'Lastupdate user:'), + ('netscenario_id', 'plan_netscenario_dma', 'form_feature', 'tab_none', 'Netscenario id:', 'Netscenario id:'), + ('pattern_id', 'plan_netscenario_dma', 'form_feature', 'tab_none', 'Pattern id:', 'Pattern id:'), + ('active', 'plan_netscenario_presszone', 'form_feature', 'tab_none', 'Active:', 'Active:'), + ('graphconfig', 'plan_netscenario_presszone', 'form_feature', 'tab_none', 'Graphconfig:', 'Graphconfig:'), + ('head', 'plan_netscenario_presszone', 'form_feature', 'tab_none', 'Head:', 'Head:'), + ('lastupdate', 'plan_netscenario_presszone', 'form_feature', 'tab_none', 'Lastupdate:', 'Lastupdate:'), + ('lastupdate_user', 'plan_netscenario_presszone', 'form_feature', 'tab_none', 'Lastupdate user:', 'Lastupdate user:'), + ('netscenario_id', 'plan_netscenario_presszone', 'form_feature', 'tab_none', 'Netscenario id:', 'Netscenario id:'), + ('presszone_id', 'plan_netscenario_presszone', 'form_feature', 'tab_none', 'Presszone id:', 'Presszone id:'), + ('presszone_name', 'plan_netscenario_presszone', 'form_feature', 'tab_none', 'Name:', 'Name:'), + ('descript', 'presszone', 'form_feature', 'tab_none', 'Descript:', 'Descript:'), + ('expl_id', 'presszone', 'form_feature', 'tab_none', 'Expl id:', 'Expl id:'), + ('graphconfig', 'presszone', 'form_feature', 'tab_none', 'Graphconfig:', 'Graphconfig:'), + ('link', 'presszone', 'form_feature', 'tab_none', 'Link:', 'Link:'), + ('presszone_id', 'presszone', 'form_feature', 'tab_none', 'Id:', 'Id:'), + ('scale', 'print', 'form_print', 'tab_none', 'Scale:', 'Scale'), + ('dnom', 'upsert_catalog_arc', 'form_catalog', 'tab_none', 'Dn:', 'Dn:'), + ('pnom', 'upsert_catalog_arc', 'form_catalog', 'tab_none', 'Pn:', 'Pn:'), + ('dnom', 'upsert_catalog_connec', 'form_catalog', 'tab_none', 'Dn:', 'Dn:'), + ('pnom', 'upsert_catalog_connec', 'form_catalog', 'tab_none', 'Pn:', 'Pn:'), + ('dnom', 'upsert_catalog_node', 'form_catalog', 'tab_none', 'Dn:', 'Dn:'), + ('pnom', 'upsert_catalog_node', 'form_catalog', 'tab_none', 'Pn:', 'Pn:'), + ('pump_type', 'v_inp_edit_pump', 'form_feature', 'tab_none', 'Pump type:', 'Pump type:'), + ('anl_cause', 'v_om_mincut', 'form_feature', 'tab_none', 'Anl cause:', 'Anl cause:'), + ('anl_descript', 'v_om_mincut', 'form_feature', 'tab_none', 'Anl descript:', 'Anl descript:'), + ('anl_feature_id', 'v_om_mincut', 'form_feature', 'tab_none', 'Anl feature id:', 'Anl feature id:'), + ('anl_feature_type', 'v_om_mincut', 'form_feature', 'tab_none', 'Anl feature type:', 'Anl feature type:'), + ('anl_tstamp', 'v_om_mincut', 'form_feature', 'tab_none', 'Anl tstamp:', 'Anl tstamp:'), + ('anl_user', 'v_om_mincut', 'form_feature', 'tab_none', 'Anl user:', 'Anl user:'), + ('assigned_to', 'v_om_mincut', 'form_feature', 'tab_none', 'Assigned to:', 'Assigned to:'), + ('class', 'v_om_mincut', 'form_feature', 'tab_none', 'Class:', 'Class:'), + ('exec_appropiate', 'v_om_mincut', 'form_feature', 'tab_none', 'Exec appropiate:', 'Exec appropiate:'), + ('exec_depth', 'v_om_mincut', 'form_feature', 'tab_none', 'Exec depth:', 'Exec depth:'), + ('exec_descript', 'v_om_mincut', 'form_feature', 'tab_none', 'Exec descript:', 'Exec descript:'), + ('exec_end', 'v_om_mincut', 'form_feature', 'tab_none', 'Exec end:', 'Exec end:'), + ('exec_from_plot', 'v_om_mincut', 'form_feature', 'tab_none', 'Exec from plot:', 'Exec from plot:'), + ('exec_start', 'v_om_mincut', 'form_feature', 'tab_none', 'Exec start:', 'Exec start:'), + ('exec_user', 'v_om_mincut', 'form_feature', 'tab_none', 'Exec user:', 'Exec user:'), + ('expl_id', 'v_om_mincut', 'form_feature', 'tab_none', 'Expl id:', 'Expl id:'), + ('expl_name', 'v_om_mincut', 'form_feature', 'tab_none', 'Expl name:', 'Expl name:'), + ('forecast_end', 'v_om_mincut', 'form_feature', 'tab_none', 'Forecast end:', 'Forecast end:'), + ('forecast_start', 'v_om_mincut', 'form_feature', 'tab_none', 'Forecast start:', 'Forecast start:'), + ('id', 'v_om_mincut', 'form_feature', 'tab_none', 'Id:', 'Id:'), + ('macroexpl_id', 'v_om_mincut', 'form_feature', 'tab_none', 'Macroexpl id:', 'Macroexpl id:'), + ('macroexpl_name', 'v_om_mincut', 'form_feature', 'tab_none', 'Macroexpl name:', 'Macroexpl name:'), + ('mincut_type', 'v_om_mincut', 'form_feature', 'tab_none', 'Mincut type:', 'Mincut type:'), + ('muni_id', 'v_om_mincut', 'form_feature', 'tab_none', 'Muni id:', 'Muni id:'), + ('muni_name', 'v_om_mincut', 'form_feature', 'tab_none', 'Muni name:', 'Muni name:'), + ('notified', 'v_om_mincut', 'form_feature', 'tab_none', 'Notified:', 'Notified:'), + ('postcode', 'v_om_mincut', 'form_feature', 'tab_none', 'Postcode:', 'Postcode:'), + ('postnumber', 'v_om_mincut', 'form_feature', 'tab_none', 'Postnumber:', 'Postnumber:'), + ('received_date', 'v_om_mincut', 'form_feature', 'tab_none', 'Received date:', 'Received date:'), + ('state', 'v_om_mincut', 'form_feature', 'tab_none', 'State:', 'State:'), + ('street_name', 'v_om_mincut', 'form_feature', 'tab_none', 'Street name:', 'Street name:'), + ('streetname', 'v_om_mincut', 'form_feature', 'tab_none', 'Streetname:', 'Streetname:'), + ('work_order', 'v_om_mincut', 'form_feature', 'tab_none', 'Work order:', 'Work order:'), + ('arc_id', 'v_om_mincut_arc', 'form_feature', 'tab_none', 'Arc id:', 'Arc id:'), + ('id', 'v_om_mincut_arc', 'form_feature', 'tab_none', 'Id:', 'Id:'), + ('result_id', 'v_om_mincut_arc', 'form_feature', 'tab_none', 'Result id:', 'Result id:'), + ('work_order', 'v_om_mincut_arc', 'form_feature', 'tab_none', 'Work order:', 'Work order:'), + ('connec_id', 'v_om_mincut_connec', 'form_feature', 'tab_none', 'Connec id:', 'Connec id:'), + ('customer_code', 'v_om_mincut_connec', 'form_feature', 'tab_none', 'Customer code:', 'Customer code:'), + ('id', 'v_om_mincut_connec', 'form_feature', 'tab_none', 'Id:', 'Id:'), + ('result_id', 'v_om_mincut_connec', 'form_feature', 'tab_none', 'Result id:', 'Result id:'), + ('work_order', 'v_om_mincut_connec', 'form_feature', 'tab_none', 'Work order:', 'Work order:'), + ('id', 'v_om_mincut_node', 'form_feature', 'tab_none', 'Id:', 'Id:'), + ('node_id', 'v_om_mincut_node', 'form_feature', 'tab_none', 'Node id:', 'Node id:'), + ('result_id', 'v_om_mincut_node', 'form_feature', 'tab_none', 'Result id:', 'Result id:'), + ('work_order', 'v_om_mincut_node', 'form_feature', 'tab_none', 'Work order:', 'Work order:'), + ('broken', 'v_om_mincut_valve', 'form_feature', 'tab_none', 'Broken:', 'Broken:'), + ('closed', 'v_om_mincut_valve', 'form_feature', 'tab_none', 'Closed:', 'Closed:'), + ('id', 'v_om_mincut_valve', 'form_feature', 'tab_none', 'Id:', 'Id:'), + ('node_id', 'v_om_mincut_valve', 'form_feature', 'tab_none', 'Node id:', 'Node id:'), + ('proposed', 'v_om_mincut_valve', 'form_feature', 'tab_none', 'Proposed:', 'Proposed:'), + ('result_id', 'v_om_mincut_valve', 'form_feature', 'tab_none', 'Result id:', 'Result id:'), + ('unaccess', 'v_om_mincut_valve', 'form_feature', 'tab_none', 'Unaccess:', 'Unaccess:'), + ('work_order', 'v_om_mincut_valve', 'form_feature', 'tab_none', 'Work order:', 'Work order:'), + ('arc_id', 'v_rpt_arc', 'form_feature', 'tab_none', 'Arc id:', 'Arc id:'), + ('arc_type', 'v_rpt_arc', 'form_feature', 'tab_none', 'Arc type:', 'Arc type:'), + ('arccat_id', 'v_rpt_arc', 'form_feature', 'tab_none', 'Arccat id:', 'Arccat id:'), + ('ffactor', 'v_rpt_arc', 'form_feature', 'tab_none', 'Ffactor:', 'Ffactor:'), + ('flow', 'v_rpt_arc', 'form_feature', 'tab_none', 'Flow:', 'Flow:'), + ('headloss', 'v_rpt_arc', 'form_feature', 'tab_none', 'Headloss:', 'Headloss:'), + ('id', 'v_rpt_arc', 'form_feature', 'tab_none', 'Id:', 'Id:'), + ('length', 'v_rpt_arc', 'form_feature', 'tab_none', 'Length:', 'Length:'), + ('result_id', 'v_rpt_arc', 'form_feature', 'tab_none', 'Result id:', 'Result id:'), + ('setting', 'v_rpt_arc', 'form_feature', 'tab_none', 'Setting:', 'Setting:'), + ('time', 'v_rpt_arc', 'form_feature', 'tab_none', 'Time:', 'Time:'), + ('tot_headloss', 'v_rpt_arc', 'form_feature', 'tab_none', 'Tot headloss:', 'Tot headloss:'), + ('vel', 'v_rpt_arc', 'form_feature', 'tab_none', 'Vel:', 'Vel:'), + ('arc_id', 'v_rpt_arc_hourly', 'form_feature', 'tab_none', 'Arc id:', 'Arc id:'), + ('ffactor', 'v_rpt_arc_hourly', 'form_feature', 'tab_none', 'Ffactor:', 'Ffactor:'), + ('flow', 'v_rpt_arc_hourly', 'form_feature', 'tab_none', 'Flow:', 'Flow:'), + ('headloss', 'v_rpt_arc_hourly', 'form_feature', 'tab_none', 'Headloss:', 'Headloss:'), + ('id', 'v_rpt_arc_hourly', 'form_feature', 'tab_none', 'Id:', 'Id:'), + ('result_id', 'v_rpt_arc_hourly', 'form_feature', 'tab_none', 'Result id:', 'Result id:'), + ('setting', 'v_rpt_arc_hourly', 'form_feature', 'tab_none', 'Setting:', 'Setting:'), + ('time', 'v_rpt_arc_hourly', 'form_feature', 'tab_none', 'Time:', 'Time:'), + ('vel', 'v_rpt_arc_hourly', 'form_feature', 'tab_none', 'Vel:', 'Vel:'), + ('arc_id', 'v_rpt_arc_stats', 'form_feature', 'tab_none', 'Arc id:', 'Arc id:'), + ('arc_type', 'v_rpt_arc_stats', 'form_feature', 'tab_none', 'Arc type:', 'Arc type:'), + ('arccat_id', 'v_rpt_arc_stats', 'form_feature', 'tab_none', 'Arccat id:', 'Arccat id:'), + ('length', 'v_rpt_arc_stats', 'form_feature', 'tab_none', 'Length:', 'Length:'), + ('max_ffactor', 'v_rpt_arc_stats', 'form_feature', 'tab_none', 'Max ffactor:', 'Max ffactor:'), + ('max_flow', 'v_rpt_arc_stats', 'form_feature', 'tab_none', 'Max flow:', 'Max flow:'), + ('max_headloss', 'v_rpt_arc_stats', 'form_feature', 'tab_none', 'Max headloss:', 'Max headloss:'), + ('max_reaction', 'v_rpt_arc_stats', 'form_feature', 'tab_none', 'Max reaction:', 'Max reaction:'), + ('max_setting', 'v_rpt_arc_stats', 'form_feature', 'tab_none', 'Max setting:', 'Max setting:'), + ('max_uheadloss', 'v_rpt_arc_stats', 'form_feature', 'tab_none', 'Max uheadloss:', 'Max uheadloss:'), + ('max_vel', 'v_rpt_arc_stats', 'form_feature', 'tab_none', 'Max vel:', 'Max vel:'), + ('min_ffactor', 'v_rpt_arc_stats', 'form_feature', 'tab_none', 'Min ffactor:', 'Min ffactor:'), + ('min_flow', 'v_rpt_arc_stats', 'form_feature', 'tab_none', 'Min flow:', 'Min flow:'), + ('min_headloss', 'v_rpt_arc_stats', 'form_feature', 'tab_none', 'Min headloss:', 'Min headloss:'), + ('min_reaction', 'v_rpt_arc_stats', 'form_feature', 'tab_none', 'Min reaction:', 'Min reaction:'), + ('min_setting', 'v_rpt_arc_stats', 'form_feature', 'tab_none', 'Min setting:', 'Min setting:'), + ('min_uheadloss', 'v_rpt_arc_stats', 'form_feature', 'tab_none', 'Min uheadloss:', 'Min uheadloss:'), + ('min_vel', 'v_rpt_arc_stats', 'form_feature', 'tab_none', 'Min vel:', 'Min vel:'), + ('result_id', 'v_rpt_arc_stats', 'form_feature', 'tab_none', 'Result id:', 'Result id:'), + ('tot_headloss_max', 'v_rpt_arc_stats', 'form_feature', 'tab_none', 'Tot headloss max:', 'Tot headloss max:'), + ('tot_headloss_min', 'v_rpt_arc_stats', 'form_feature', 'tab_none', 'Tot headloss min:', 'Tot headloss min:'), + ('arc_id', 'v_rpt_comp_arc', 'form_feature', 'tab_none', 'Arc id:', 'Arc id:'), + ('max_ffactor', 'v_rpt_comp_arc', 'form_feature', 'tab_none', 'Max ffactor:', 'Max ffactor:'), + ('max_flow', 'v_rpt_comp_arc', 'form_feature', 'tab_none', 'Max flow:', 'Max flow:'), + ('max_headloss', 'v_rpt_comp_arc', 'form_feature', 'tab_none', 'Max headloss:', 'Max headloss:'), + ('max_reaction', 'v_rpt_comp_arc', 'form_feature', 'tab_none', 'Max reaction:', 'Max reaction:'), + ('max_setting', 'v_rpt_comp_arc', 'form_feature', 'tab_none', 'Max setting:', 'Max setting:'), + ('max_uheadloss', 'v_rpt_comp_arc', 'form_feature', 'tab_none', 'Max uheadloss:', 'Max uheadloss:'), + ('max_vel', 'v_rpt_comp_arc', 'form_feature', 'tab_none', 'Max vel:', 'Max vel:'), + ('min_ffactor', 'v_rpt_comp_arc', 'form_feature', 'tab_none', 'Min ffactor:', 'Min ffactor:'), + ('min_flow', 'v_rpt_comp_arc', 'form_feature', 'tab_none', 'Min flow:', 'Min flow:'), + ('min_headloss', 'v_rpt_comp_arc', 'form_feature', 'tab_none', 'Min headloss:', 'Min headloss:'), + ('min_reaction', 'v_rpt_comp_arc', 'form_feature', 'tab_none', 'Min reaction:', 'Min reaction:'), + ('min_setting', 'v_rpt_comp_arc', 'form_feature', 'tab_none', 'Min setting:', 'Min setting:'), + ('min_uheadloss', 'v_rpt_comp_arc', 'form_feature', 'tab_none', 'Min uheadloss:', 'Min uheadloss:'), + ('min_vel', 'v_rpt_comp_arc', 'form_feature', 'tab_none', 'Min vel:', 'Min vel:'), + ('result_id', 'v_rpt_comp_arc', 'form_feature', 'tab_none', 'Result id:', 'Result id:'), + ('arc_id', 'v_rpt_comp_arc_hourly', 'form_feature', 'tab_none', 'Arc id:', 'Arc id:'), + ('ffactor', 'v_rpt_comp_arc_hourly', 'form_feature', 'tab_none', 'Ffactor:', 'Ffactor:'), + ('flow', 'v_rpt_comp_arc_hourly', 'form_feature', 'tab_none', 'Flow:', 'Flow:'), + ('headloss', 'v_rpt_comp_arc_hourly', 'form_feature', 'tab_none', 'Headloss:', 'Headloss:'), + ('id', 'v_rpt_comp_arc_hourly', 'form_feature', 'tab_none', 'Id:', 'Id:'), + ('result_id', 'v_rpt_comp_arc_hourly', 'form_feature', 'tab_none', 'Result id:', 'Result id:'), + ('setting', 'v_rpt_comp_arc_hourly', 'form_feature', 'tab_none', 'Setting:', 'Setting:'), + ('time', 'v_rpt_comp_arc_hourly', 'form_feature', 'tab_none', 'Time:', 'Time:'), + ('vel', 'v_rpt_comp_arc_hourly', 'form_feature', 'tab_none', 'Vel:', 'Vel:'), + ('avg_effic', 'v_rpt_comp_energy_usage', 'form_feature', 'tab_none', 'Avg effic:', 'Avg effic:'), + ('avg_kw', 'v_rpt_comp_energy_usage', 'form_feature', 'tab_none', 'Avg kw:', 'Avg kw:'), + ('cost_day', 'v_rpt_comp_energy_usage', 'form_feature', 'tab_none', 'Cost day:', 'Cost day:'), + ('id', 'v_rpt_comp_energy_usage', 'form_feature', 'tab_none', 'Id:', 'Id:'), + ('kwhr_mgal', 'v_rpt_comp_energy_usage', 'form_feature', 'tab_none', 'Kwhr mgal:', 'Kwhr mgal:'), + ('nodarc_id', 'v_rpt_comp_energy_usage', 'form_feature', 'tab_none', 'Nodarc id:', 'Nodarc id:'), + ('peak_kw', 'v_rpt_comp_energy_usage', 'form_feature', 'tab_none', 'Peak kw:', 'Peak kw:'), + ('result_id', 'v_rpt_comp_energy_usage', 'form_feature', 'tab_none', 'Result id:', 'Result id:'), + ('usage_fact', 'v_rpt_comp_energy_usage', 'form_feature', 'tab_none', 'Usage fact:', 'Usage fact:'), + ('id', 'v_rpt_comp_hydraulic_status', 'form_feature', 'tab_none', 'Id:', 'Id:'), + ('result_id', 'v_rpt_comp_hydraulic_status', 'form_feature', 'tab_none', 'Result id:', 'Result id:'), + ('text', 'v_rpt_comp_hydraulic_status', 'form_feature', 'tab_none', 'Text:', 'Text:'), + ('time', 'v_rpt_comp_hydraulic_status', 'form_feature', 'tab_none', 'Time:', 'Time:'), + ('max_demand', 'v_rpt_comp_node', 'form_feature', 'tab_none', 'Max demand:', 'Max demand:'), + ('max_head', 'v_rpt_comp_node', 'form_feature', 'tab_none', 'Max head:', 'Max head:'), + ('max_pressure', 'v_rpt_comp_node', 'form_feature', 'tab_none', 'Max pressure:', 'Max pressure:'), + ('max_quality', 'v_rpt_comp_node', 'form_feature', 'tab_none', 'Max quality:', 'Max quality:'), + ('min_demand', 'v_rpt_comp_node', 'form_feature', 'tab_none', 'Min demand:', 'Min demand:'), + ('min_head', 'v_rpt_comp_node', 'form_feature', 'tab_none', 'Min head:', 'Min head:'), + ('min_pressure', 'v_rpt_comp_node', 'form_feature', 'tab_none', 'Min pressure:', 'Min pressure:'), + ('min_quality', 'v_rpt_comp_node', 'form_feature', 'tab_none', 'Min quality:', 'Min quality:'), + ('node_id', 'v_rpt_comp_node', 'form_feature', 'tab_none', 'Node id:', 'Node id:'), + ('node_type', 'v_rpt_comp_node', 'form_feature', 'tab_none', 'Node type:', 'Node type:'), + ('nodecat_id', 'v_rpt_comp_node', 'form_feature', 'tab_none', 'Nodecat id:', 'Nodecat id:'), + ('result_id', 'v_rpt_comp_node', 'form_feature', 'tab_none', 'Result id:', 'Result id:'), + ('top_elev', 'v_rpt_comp_node', 'form_feature', 'tab_none', 'Top elev:', 'Top elev:'), + ('demand', 'v_rpt_comp_node_hourly', 'form_feature', 'tab_none', 'Demand:', 'Demand:'), + ('head', 'v_rpt_comp_node_hourly', 'form_feature', 'tab_none', 'Head:', 'Head:'), + ('id', 'v_rpt_comp_node_hourly', 'form_feature', 'tab_none', 'Id:', 'Id:'), + ('node_id', 'v_rpt_comp_node_hourly', 'form_feature', 'tab_none', 'Node id:', 'Node id:'), + ('press', 'v_rpt_comp_node_hourly', 'form_feature', 'tab_none', 'Press:', 'Press:'), + ('quality', 'v_rpt_comp_node_hourly', 'form_feature', 'tab_none', 'Quality:', 'Quality:'), + ('result_id', 'v_rpt_comp_node_hourly', 'form_feature', 'tab_none', 'Result id:', 'Result id:'), + ('time', 'v_rpt_comp_node_hourly', 'form_feature', 'tab_none', 'Time:', 'Time:'), + ('top_elev', 'v_rpt_comp_node_hourly', 'form_feature', 'tab_none', 'Top elev:', 'Top elev:'), + ('avg_effic', 'v_rpt_energy_usage', 'form_feature', 'tab_none', 'Avg effic:', 'Avg effic:'), + ('avg_kw', 'v_rpt_energy_usage', 'form_feature', 'tab_none', 'Avg kw:', 'Avg kw:'), + ('cost_day', 'v_rpt_energy_usage', 'form_feature', 'tab_none', 'Cost day:', 'Cost day:'), + ('id', 'v_rpt_energy_usage', 'form_feature', 'tab_none', 'Id:', 'Id:'), + ('kwhr_mgal', 'v_rpt_energy_usage', 'form_feature', 'tab_none', 'Kwhr mgal:', 'Kwhr mgal:'), + ('nodarc_id', 'v_rpt_energy_usage', 'form_feature', 'tab_none', 'Nodarc id:', 'Nodarc id:'), + ('peak_kw', 'v_rpt_energy_usage', 'form_feature', 'tab_none', 'Peak kw:', 'Peak kw:'), + ('result_id', 'v_rpt_energy_usage', 'form_feature', 'tab_none', 'Result id:', 'Result id:'), + ('usage_fact', 'v_rpt_energy_usage', 'form_feature', 'tab_none', 'Usage fact:', 'Usage fact:'), + ('id', 'v_rpt_hydraulic_status', 'form_feature', 'tab_none', 'Id:', 'Id:'), + ('result_id', 'v_rpt_hydraulic_status', 'form_feature', 'tab_none', 'Result id:', 'Result id:'), + ('text', 'v_rpt_hydraulic_status', 'form_feature', 'tab_none', 'Text:', 'Text:'), + ('time', 'v_rpt_hydraulic_status', 'form_feature', 'tab_none', 'Time:', 'Time:'), + ('demand', 'v_rpt_node', 'form_feature', 'tab_none', 'Demand:', 'Demand:'), + ('head', 'v_rpt_node', 'form_feature', 'tab_none', 'Head:', 'Head:'), + ('id', 'v_rpt_node', 'form_feature', 'tab_none', 'Id:', 'Id:'), + ('node_id', 'v_rpt_node', 'form_feature', 'tab_none', 'Node id:', 'Node id:'), + ('node_type', 'v_rpt_node', 'form_feature', 'tab_none', 'Node type:', 'Node type:'), + ('nodecat_id', 'v_rpt_node', 'form_feature', 'tab_none', 'Nodecat id:', 'Nodecat id:'), + ('press', 'v_rpt_node', 'form_feature', 'tab_none', 'Press:', 'Press:'), + ('quality', 'v_rpt_node', 'form_feature', 'tab_none', 'Quality:', 'Quality:'), + ('result_id', 'v_rpt_node', 'form_feature', 'tab_none', 'Result id:', 'Result id:'), + ('time', 'v_rpt_node', 'form_feature', 'tab_none', 'Time:', 'Time:'), + ('top_elev', 'v_rpt_node', 'form_feature', 'tab_none', 'Top elev:', 'Top elev:'), + ('demand', 'v_rpt_node_hourly', 'form_feature', 'tab_none', 'Demand:', 'Demand:'), + ('head', 'v_rpt_node_hourly', 'form_feature', 'tab_none', 'Head:', 'Head:'), + ('id', 'v_rpt_node_hourly', 'form_feature', 'tab_none', 'Id:', 'Id:'), + ('node_id', 'v_rpt_node_hourly', 'form_feature', 'tab_none', 'Node id:', 'Node id:'), + ('press', 'v_rpt_node_hourly', 'form_feature', 'tab_none', 'Press:', 'Press:'), + ('quality', 'v_rpt_node_hourly', 'form_feature', 'tab_none', 'Quality:', 'Quality:'), + ('result_id', 'v_rpt_node_hourly', 'form_feature', 'tab_none', 'Result id:', 'Result id:'), + ('time', 'v_rpt_node_hourly', 'form_feature', 'tab_none', 'Time:', 'Time:'), + ('top_elev', 'v_rpt_node_hourly', 'form_feature', 'tab_none', 'Top elev:', 'Top elev:'), + ('demand_max', 'v_rpt_node_stats', 'form_feature', 'tab_none', 'Demand max:', 'Demand max:'), + ('demand_min', 'v_rpt_node_stats', 'form_feature', 'tab_none', 'Demand min:', 'Demand min:'), + ('head_max', 'v_rpt_node_stats', 'form_feature', 'tab_none', 'Head max:', 'Head max:'), + ('head_min', 'v_rpt_node_stats', 'form_feature', 'tab_none', 'Head min:', 'Head min:'), + ('node_id', 'v_rpt_node_stats', 'form_feature', 'tab_none', 'Node id:', 'Node id:'), + ('node_type', 'v_rpt_node_stats', 'form_feature', 'tab_none', 'Node type:', 'Node type:'), + ('nodecat_id', 'v_rpt_node_stats', 'form_feature', 'tab_none', 'Nodecat id:', 'Nodecat id:'), + ('press_max', 'v_rpt_node_stats', 'form_feature', 'tab_none', 'Press max:', 'Press max:'), + ('press_min', 'v_rpt_node_stats', 'form_feature', 'tab_none', 'Press min:', 'Press min:'), + ('quality_max', 'v_rpt_node_stats', 'form_feature', 'tab_none', 'Quality max:', 'Quality max:'), + ('quality_min', 'v_rpt_node_stats', 'form_feature', 'tab_none', 'Quality min:', 'Quality min:'), + ('result_id', 'v_rpt_node_stats', 'form_feature', 'tab_none', 'Result id:', 'Result id:'), + ('top_elev', 'v_rpt_node_stats', 'form_feature', 'tab_none', 'Top elev:', 'Top elev:'), + ('catalog', 'v_ui_arc_x_relations', 'form_list_header', 'tab_none', 'Filter by catalog:', 'Filter by catalog:'), + ('feature_code', 'v_ui_arc_x_relations', 'form_list_header', 'tab_none', 'Filter by feature code:', 'Filter by feature code:'), + ('arc_id', 'v_ui_node_x_connections_upstream', 'form_list_header', 'tab_none', 'Filter by arc id:', 'Filter by arc id:'), + ('epa_default', 've_cat_feature_connec', 'form_feature', 'tab_none', 'Epa default:', 'Epa default:'), + ('graph_delimiter', 've_cat_feature_node', 'form_feature', 'tab_none', 'Graph delimiter:', 'Graph delimiter:'), + ('macrodma_id', 've_dma', 'form_feature', 'tab_none', 'Macrodma id:', 'Macrodma id:'), + ('active', 've_dqa', 'form_feature', 'tab_none', 'Active:', 'Active:'), + ('addparam', 've_dqa', 'form_feature', 'tab_none', 'Addparam:', 'Addparam:'), + ('avg_press', 've_dqa', 'form_feature', 'tab_none', 'Average pressure:', 'Average pressure:'), + ('code', 've_dqa', 'form_feature', 'tab_none', 'Code:', 'Code:'), + ('created_at', 've_dqa', 'form_feature', 'tab_none', 'Created at:', 'Created at:'), + ('created_by', 've_dqa', 'form_feature', 'tab_none', 'Created by:', 'Created by:'), + ('descript', 've_dqa', 'form_feature', 'tab_none', 'Descript:', 'Descript:'), + ('dqa_id', 've_dqa', 'form_feature', 'tab_none', 'Dqa id:', 'Dqa id:'), + ('dqa_type', 've_dqa', 'form_feature', 'tab_none', 'Dqa type:', 'dma_type'), + ('expl_id', 've_dqa', 'form_feature', 'tab_none', 'Expl id:', 'Expl id:'), + ('graphconfig', 've_dqa', 'form_feature', 'tab_none', 'Graphconfig:', 'Graphconfig:'), + ('link', 've_dqa', 'form_feature', 'tab_none', 'Link:', 'Link:'), + ('lock_level', 've_dqa', 'form_feature', 'tab_none', 'Lock level:', 'Lock level:'), + ('macrodqa_id', 've_dqa', 'form_feature', 'tab_none', 'Macrodqa:', 'Macrodqa:'), + ('muni_id', 've_dqa', 'form_feature', 'tab_none', 'Muni id:', 'Muni id:'), + ('name', 've_dqa', 'form_feature', 'tab_none', 'Name:', 'Name:'), + ('pattern_id', 've_dqa', 'form_feature', 'tab_none', 'Pattern id:', 'Pattern id:'), + ('sector_id', 've_dqa', 'form_feature', 'tab_none', 'Sector id:', 'Sector id:'), + ('stylesheet', 've_dqa', 'form_feature', 'tab_none', 'Stylesheet:', 'Stylesheet:'), + ('updated_at', 've_dqa', 'form_feature', 'tab_none', 'Updated at:', 'Updated at:'), + ('updated_by', 've_dqa', 'form_feature', 'tab_none', 'Updated by:', 'Updated by:'), + ('demand', 've_epa_connec', 'form_feature', 'tab_epa', 'Demand:', 'Demand'), + ('demandmax', 've_epa_connec', 'form_feature', 'tab_epa', 'Max demand:', 'Max demand'), + ('demandmin', 've_epa_connec', 'form_feature', 'tab_epa', 'Min demand:', 'Min demand'), + ('emitter_coeff', 've_epa_connec', 'form_feature', 'tab_epa', 'Emitter coefficient:', 'Emitter coefficient'), + ('headmax', 've_epa_connec', 'form_feature', 'tab_epa', 'Max head:', 'Max head'), + ('headmin', 've_epa_connec', 'form_feature', 'tab_epa', 'Min head:', 'Min head'), + ('init_quality', 've_epa_connec', 'form_feature', 'tab_epa', 'Initial quality:', 'Initial quality'), + ('pattern_id', 've_epa_connec', 'form_feature', 'tab_epa', 'Pattern id:', 'Pattern id'), + ('peak_factor', 've_epa_connec', 'form_feature', 'tab_epa', 'Peak factor:', 'Peak factor'), + ('pressmax', 've_epa_connec', 'form_feature', 'tab_epa', 'Max pressure:', 'Max pressure'), + ('pressmin', 've_epa_connec', 'form_feature', 'tab_epa', 'Min pressure:', 'Min pressure'), + ('qualmax', 've_epa_connec', 'form_feature', 'tab_epa', 'Max quality:', 'Max quality'), + ('qualmin', 've_epa_connec', 'form_feature', 'tab_epa', 'Min quality:', 'Min quality'), + ('result_id', 've_epa_connec', 'form_feature', 'tab_epa', 'Result id:', 'Result id'), + ('source_pattern_id', 've_epa_connec', 'form_feature', 'tab_epa', 'Source pattern:', 'Source pattern'), + ('source_quality', 've_epa_connec', 'form_feature', 'tab_epa', 'Source quality:', 'Source quality'), + ('source_type', 've_epa_connec', 'form_feature', 'tab_epa', 'Source type:', 'Source type'), + ('avg_effic', 've_epa_frpump', 'form_feature', 'tab_epa', 'Average efficiency:', 'Average efficiency'), + ('avg_kw', 've_epa_frpump', 'form_feature', 'tab_epa', 'Average KW:', 'Average KW'), + ('cost_day', 've_epa_frpump', 'form_feature', 'tab_epa', 'Cost day:', 'Cost day'), + ('curve_id', 've_epa_frpump', 'form_feature', 'tab_epa', 'Curve id:', 'Curve id'), + ('effic_curve_id', 've_epa_frpump', 'form_feature', 'tab_epa', 'Eff. curve:', 'Eff. curve'), + ('energy_pattern_id', 've_epa_frpump', 'form_feature', 'tab_epa', 'Price pattern:', 'Price pattern'), + ('energy_price', 've_epa_frpump', 'form_feature', 'tab_epa', 'Energy price:', 'Energy price'), + ('flow_max', 've_epa_frpump', 'form_feature', 'tab_epa', 'Max flow:', 'Max Flow'), + ('flow_min', 've_epa_frpump', 'form_feature', 'tab_epa', 'Min flow:', 'Min Flow'), + ('headloss_max', 've_epa_frpump', 'form_feature', 'tab_epa', 'Max headloss:', 'Max headloss'), + ('headloss_min', 've_epa_frpump', 'form_feature', 'tab_epa', 'Min headloss:', 'Min headloss'), + ('kwhr_mgal', 've_epa_frpump', 'form_feature', 'tab_epa', 'KWh mgal:', 'KWh mgal'), + ('pattern_id', 've_epa_frpump', 'form_feature', 'tab_epa', 'Pattern:', 'Pattern'), + ('peak_kw', 've_epa_frpump', 'form_feature', 'tab_epa', 'Peak KW:', 'Peak KW'), + ('power', 've_epa_frpump', 'form_feature', 'tab_epa', 'Power:', 'Power'), + ('pump_type', 've_epa_frpump', 'form_feature', 'tab_epa', 'Pump type:', 'Pump type'), + ('quality', 've_epa_frpump', 'form_feature', 'tab_epa', 'Quality:', 'Quality'), + ('result_id', 've_epa_frpump', 'form_feature', 'tab_epa', 'Result id:', 'Result id'), + ('speed', 've_epa_frpump', 'form_feature', 'tab_epa', 'Speed:', 'Speed'), + ('usage_fact', 've_epa_frpump', 'form_feature', 'tab_epa', 'Usage factor:', 'Usage factor'), + ('vel_max', 've_epa_frpump', 'form_feature', 'tab_epa', 'Max velocity:', 'Max velocity'), + ('vel_min', 've_epa_frpump', 'form_feature', 'tab_epa', 'Min velocity:', 'Min velocity'), + ('bulk_coeff', 've_epa_frshortpipe', 'form_feature', 'tab_epa', 'Bulk coefficient:', 'Bulk coefficient'), + ('cat_dint', 've_epa_frshortpipe', 'form_feature', 'tab_epa', 'Cat dint:', 'Cat dint'), + ('custom_dint', 've_epa_frshortpipe', 'form_feature', 'tab_epa', 'Custom dint:', 'Custom dint'), + ('ffactor_max', 've_epa_frshortpipe', 'form_feature', 'tab_epa', 'Max Ffactor:', 'Max Ffactor'), + ('ffactor_min', 've_epa_frshortpipe', 'form_feature', 'tab_epa', 'Min Ffactor:', 'Min Ffactor'), + ('flow_max', 've_epa_frshortpipe', 'form_feature', 'tab_epa', 'Max flow:', 'Max Flow'), + ('flow_min', 've_epa_frshortpipe', 'form_feature', 'tab_epa', 'Min flow:', 'Min Flow'), + ('headloss_max', 've_epa_frshortpipe', 'form_feature', 'tab_epa', 'Max headloss:', 'Max headloss'), + ('headloss_min', 've_epa_frshortpipe', 'form_feature', 'tab_epa', 'Min uheadloss:', 'Max uheadloss'), + ('minorloss', 've_epa_frshortpipe', 'form_feature', 'tab_epa', 'Minorloss:', 'Minorloss'), + ('reaction_max', 've_epa_frshortpipe', 'form_feature', 'tab_epa', 'Max reaction:', 'Max reaction'), + ('reaction_min', 've_epa_frshortpipe', 'form_feature', 'tab_epa', 'Min reaction:', 'Min reaction'), + ('result_id', 've_epa_frshortpipe', 'form_feature', 'tab_epa', 'Result id:', 'Result id'), + ('setting_max', 've_epa_frshortpipe', 'form_feature', 'tab_epa', 'Max setting:', 'Max setting'), + ('setting_min', 've_epa_frshortpipe', 'form_feature', 'tab_epa', 'Min setting:', 'Min setting'), + ('status', 've_epa_frshortpipe', 'form_feature', 'tab_epa', 'Status:', 'Status'), + ('vel_max', 've_epa_frshortpipe', 'form_feature', 'tab_epa', 'Max velocity:', 'Max velocity'), + ('vel_min', 've_epa_frshortpipe', 'form_feature', 'tab_epa', 'Min velocity:', 'Min velocity'), + ('wall_coeff', 've_epa_frshortpipe', 'form_feature', 'tab_epa', 'Wall coefficient:', 'Wall coefficient'), + ('add_settings', 've_epa_frvalve', 'form_feature', 'tab_epa', 'Add settings:', 'Add settings'), + ('cat_dint', 've_epa_frvalve', 'form_feature', 'tab_epa', 'Cat dint:', 'Cat dint'), + ('curve_id', 've_epa_frvalve', 'form_feature', 'tab_epa', 'Curve id:', 'Curve id'), + ('custom_dint', 've_epa_frvalve', 'form_feature', 'tab_epa', 'Custom dint:', 'Custom dint'), + ('ffactor_max', 've_epa_frvalve', 'form_feature', 'tab_epa', 'Max Ffactor:', 'Max Ffactor'), + ('ffactor_min', 've_epa_frvalve', 'form_feature', 'tab_epa', 'Min Ffactor:', 'Min Ffactor'), + ('flow_max', 've_epa_frvalve', 'form_feature', 'tab_epa', 'Max flow:', 'Max Flow'), + ('flow_min', 've_epa_frvalve', 'form_feature', 'tab_epa', 'Min flow:', 'Min Flow'), + ('headloss_max', 've_epa_frvalve', 'form_feature', 'tab_epa', 'Max headloss:', 'Max headloss'), + ('headloss_min', 've_epa_frvalve', 'form_feature', 'tab_epa', 'Min headloss:', 'Min headloss'), + ('init_quality', 've_epa_frvalve', 'form_feature', 'tab_epa', 'Initial quality:', 'Initial quality'), + ('minorloss', 've_epa_frvalve', 'form_feature', 'tab_epa', 'Minorloss:', 'Minorloss'), + ('reaction_max', 've_epa_frvalve', 'form_feature', 'tab_epa', 'Max reaction:', 'Max reaction'), + ('reaction_min', 've_epa_frvalve', 'form_feature', 'tab_epa', 'Min reaction:', 'Min reaction'), + ('result_id', 've_epa_frvalve', 'form_feature', 'tab_epa', 'Result id:', 'Result id'), + ('setting', 've_epa_frvalve', 'form_feature', 'tab_epa', 'Setting:', 'Setting:'), + ('setting_max', 've_epa_frvalve', 'form_feature', 'tab_epa', 'Max setting:', 'Max setting'), + ('setting_min', 've_epa_frvalve', 'form_feature', 'tab_epa', 'Min setting:', 'Min setting'), + ('status', 've_epa_frvalve', 'form_feature', 'tab_epa', 'Status:', 'Status'), + ('uheadloss_max', 've_epa_frvalve', 'form_feature', 'tab_epa', 'Max uheadloss:', 'Max uheadloss'), + ('uheadloss_min', 've_epa_frvalve', 'form_feature', 'tab_epa', 'Min uheadloss:', 'Min uheadloss'), + ('valve_type', 've_epa_frvalve', 'form_feature', 'tab_epa', 'Valve type:', 'Valve type'), + ('vel_max', 've_epa_frvalve', 'form_feature', 'tab_epa', 'Max velocity:', 'Max velocity'), + ('vel_min', 've_epa_frvalve', 'form_feature', 'tab_epa', 'Min velocity:', 'Min velocity'), + ('curve_id', 've_epa_inlet', 'form_feature', 'tab_epa', 'Curve id:', 'Curve id'), + ('demand', 've_epa_inlet', 'form_feature', 'tab_epa', 'Demand:', 'Demand'), + ('demand_pattern_id', 've_epa_inlet', 'form_feature', 'tab_epa', 'Demand pattern:', 'Demand pattern'), + ('demandmax', 've_epa_inlet', 'form_feature', 'tab_epa', 'Max demand:', 'Max demand'), + ('demandmin', 've_epa_inlet', 'form_feature', 'tab_epa', 'Min demand:', 'Min demand'), + ('diameter', 've_epa_inlet', 'form_feature', 'tab_epa', 'Diameter:', 'Diameter'), + ('emitter_coeff', 've_epa_inlet', 'form_feature', 'tab_epa', 'Emitter coef:', 'Emitter coef'), + ('head', 've_epa_inlet', 'form_feature', 'tab_epa', 'Head:', 'Head'), + ('headmax', 've_epa_inlet', 'form_feature', 'tab_epa', 'Max head:', 'Max head'), + ('headmin', 've_epa_inlet', 'form_feature', 'tab_epa', 'Min head:', 'Min head'), + ('init_quality', 've_epa_inlet', 'form_feature', 'tab_epa', 'Initial quality:', 'Initial quality'), + ('initlevel', 've_epa_inlet', 'form_feature', 'tab_epa', 'Init level:', 'Initial level'), + ('maxlevel', 've_epa_inlet', 'form_feature', 'tab_epa', 'Max level:', 'Maximum level'), + ('minlevel', 've_epa_inlet', 'form_feature', 'tab_epa', 'Min level:', 'Minimum level'), + ('minvol', 've_epa_inlet', 'form_feature', 'tab_epa', 'Min volume:', 'Minimum volume'), + ('mixing_fraction', 've_epa_inlet', 'form_feature', 'tab_epa', 'Mixing fraction:', 'Mixing fraction'), + ('mixing_model', 've_epa_inlet', 'form_feature', 'tab_epa', 'Mixing model:', 'Mixing model'), + ('overflow', 've_epa_inlet', 'form_feature', 'tab_epa', 'Overflow:', 'Overflow'), + ('pattern_id', 've_epa_inlet', 'form_feature', 'tab_epa', 'Pattern id:', 'Pattern id'), + ('pressmax', 've_epa_inlet', 'form_feature', 'tab_epa', 'Max pressure:', 'Max pressure'), + ('pressmin', 've_epa_inlet', 'form_feature', 'tab_epa', 'Min pressure:', 'Min pressure'), + ('qualmax', 've_epa_inlet', 'form_feature', 'tab_epa', 'Max quality:', 'Max quality'), + ('qualmin', 've_epa_inlet', 'form_feature', 'tab_epa', 'Min quality:', 'Min quality'), + ('reaction_coeff', 've_epa_inlet', 'form_feature', 'tab_epa', 'Reaction coefficient:', 'Reaction coefficient'), + ('result_id', 've_epa_inlet', 'form_feature', 'tab_epa', 'Result id:', 'Result id'), + ('source_pattern_id', 've_epa_inlet', 'form_feature', 'tab_epa', 'Source pattern:', 'Source pattern'), + ('source_quality', 've_epa_inlet', 'form_feature', 'tab_epa', 'Source quality:', 'Source quality'), + ('source_type', 've_epa_inlet', 'form_feature', 'tab_epa', 'Source type:', 'Source type'), + ('demand', 've_epa_junction', 'form_feature', 'tab_epa', 'Demand:', 'Demand'), + ('demandmax', 've_epa_junction', 'form_feature', 'tab_epa', 'Max demand:', 'Max demand'), + ('demandmin', 've_epa_junction', 'form_feature', 'tab_epa', 'Min demand:', 'Min demand'), + ('emitter_coeff', 've_epa_junction', 'form_feature', 'tab_epa', 'Emitter coefficient:', 'Emitter coefficient'), + ('headmax', 've_epa_junction', 'form_feature', 'tab_epa', 'Max head:', 'Max head'), + ('headmin', 've_epa_junction', 'form_feature', 'tab_epa', 'Min head:', 'Min head'), + ('init_quality', 've_epa_junction', 'form_feature', 'tab_epa', 'Initial quality:', 'Initial quality'), + ('pattern_id', 've_epa_junction', 'form_feature', 'tab_epa', 'Pattern id:', 'Pattern id'), + ('pressmax', 've_epa_junction', 'form_feature', 'tab_epa', 'Max pressure:', 'Max pressure'), + ('pressmin', 've_epa_junction', 'form_feature', 'tab_epa', 'Min pressure:', 'Min pressure'), + ('qualmax', 've_epa_junction', 'form_feature', 'tab_epa', 'Max quality:', 'Max quality'), + ('qualmin', 've_epa_junction', 'form_feature', 'tab_epa', 'Min quality:', 'Min quality'), + ('result_id', 've_epa_junction', 'form_feature', 'tab_epa', 'Result id:', 'Result id'), + ('source_pattern_id', 've_epa_junction', 'form_feature', 'tab_epa', 'Source pattern:', 'Source pattern'), + ('source_quality', 've_epa_junction', 'form_feature', 'tab_epa', 'Source quality:', 'Source quality'), + ('source_type', 've_epa_junction', 'form_feature', 'tab_epa', 'Source type:', 'Source type'), + ('cat_roughness', 've_epa_link', 'form_feature', 'tab_epa', 'Roughness:', 'Roughness:'), + ('custom_dint', 've_epa_link', 'form_feature', 'tab_epa', 'Custom dint:', 'Custom dint:'), + ('custom_length', 've_epa_link', 'form_feature', 'tab_epa', 'Custom length:', 'Custom length'), + ('custom_roughness', 've_epa_link', 'form_feature', 'tab_epa', 'Custom roughness:', 'Custom roughness'), + ('dint', 've_epa_link', 'form_feature', 'tab_epa', 'Dint:', 'Dint:'), + ('ffactor_max', 've_epa_link', 'form_feature', 'tab_epa', 'Ffactor max:', 'Ffactor max:'), + ('ffactor_min', 've_epa_link', 'form_feature', 'tab_epa', 'Ffactor min:', 'Ffactor min:'), + ('flow_avg', 've_epa_link', 'form_feature', 'tab_epa', 'Flow avg:', 'Flow avg:'), + ('flow_max', 've_epa_link', 'form_feature', 'tab_epa', 'Flow max:', 'Flow max:'), + ('flow_min', 've_epa_link', 'form_feature', 'tab_epa', 'Flow min:', 'Flow min:'), + ('headloss_max', 've_epa_link', 'form_feature', 'tab_epa', 'Headloss max:', 'Headloss max:'), + ('headloss_min', 've_epa_link', 'form_feature', 'tab_epa', 'Headloss min:', 'Headloss min:'), + ('matcat_id', 've_epa_link', 'form_feature', 'tab_epa', 'Matcat Id:', 'Matcat Id:'), + ('minorloss', 've_epa_link', 'form_feature', 'tab_epa', 'Minor loss:', 'Minor loss'), + ('reaction_max', 've_epa_link', 'form_feature', 'tab_epa', 'Reaction max:', 'Reaction max:'), + ('reaction_min', 've_epa_link', 'form_feature', 'tab_epa', 'Reaction min:', 'Reaction min:'), + ('result_id', 've_epa_link', 'form_feature', 'tab_epa', 'Result Id:', 'Result Id:'), + ('seetting_min', 've_epa_link', 'form_feature', 'tab_epa', 'Setting min:', 'Setting min:'), + ('setting_max', 've_epa_link', 'form_feature', 'tab_epa', 'Setting max:', 'Setting max:'), + ('status', 've_epa_link', 'form_feature', 'tab_epa', 'Status:', 'Status'), + ('total_headloss_max', 've_epa_link', 'form_feature', 'tab_epa', 'Total headloss max:', 'Total headloss max:'), + ('total_headloss_min', 've_epa_link', 'form_feature', 'tab_epa', 'Total headloss min:', 'Total headloss min:'), + ('vel_avg', 've_epa_link', 'form_feature', 'tab_epa', 'Vel avg:', 'Vel avg:'), + ('vel_max', 've_epa_link', 'form_feature', 'tab_epa', 'Vel max:', 'Vel max:'), + ('vel_min', 've_epa_link', 'form_feature', 'tab_epa', 'Vel min:', 'Vel min:'), + ('builtdate', 've_epa_pipe', 'form_feature', 'tab_epa', 'Builtdate:', 'Builtdate'), + ('bulk_coeff', 've_epa_pipe', 'form_feature', 'tab_epa', 'Bulk coefficient:', 'Bulk coefficient'), + ('cat_dint', 've_epa_pipe', 'form_feature', 'tab_epa', 'Cat dint:', 'Cat dint'), + ('cat_matcat_id', 've_epa_pipe', 'form_feature', 'tab_epa', 'Material:', 'Material'), + ('cat_roughness', 've_epa_pipe', 'form_feature', 'tab_epa', 'Cat roughness:', 'Cat roughness'), + ('custom_dint', 've_epa_pipe', 'form_feature', 'tab_epa', 'Custom dint:', 'Custom dint'), + ('custom_roughness', 've_epa_pipe', 'form_feature', 'tab_epa', 'Custom roughness:', 'Custom roughness'), + ('dint', 've_epa_pipe', 'form_feature', 'tab_epa', 'Cat dint:', 'Cat dint'), + ('ffactor_max', 've_epa_pipe', 'form_feature', 'tab_epa', 'Max Ffactor:', 'Max Ffactor'), + ('ffactor_min', 've_epa_pipe', 'form_feature', 'tab_epa', 'Min Ffactor:', 'Min Ffactor'), + ('flow_max', 've_epa_pipe', 'form_feature', 'tab_epa', 'Max flow:', 'Max Flow'), + ('flow_min', 've_epa_pipe', 'form_feature', 'tab_epa', 'Min flow:', 'Min Flow'), + ('headloss_max', 've_epa_pipe', 'form_feature', 'tab_epa', 'Max headloss:', 'Max headloss'), + ('headloss_min', 've_epa_pipe', 'form_feature', 'tab_epa', 'Min headloss:', 'Min headloss'), + ('matcat_id', 've_epa_pipe', 'form_feature', 'tab_epa', 'Material:', 'Material'), + ('minorloss', 've_epa_pipe', 'form_feature', 'tab_epa', 'Minorloss:', 'Minorloss'), + ('reaction_max', 've_epa_pipe', 'form_feature', 'tab_epa', 'Max reaction:', 'Max reaction'), + ('reaction_min', 've_epa_pipe', 'form_feature', 'tab_epa', 'Min reaction:', 'Min reaction'), + ('reactionparam', 've_epa_pipe', 'form_feature', 'tab_epa', 'Reaction parameter:', 'Reaction parameter'), + ('reactionvalue', 've_epa_pipe', 'form_feature', 'tab_epa', 'Reaction value:', 'Reaction value'), + ('result_id', 've_epa_pipe', 'form_feature', 'tab_epa', 'Result id:', 'Result id'), + ('setting_max', 've_epa_pipe', 'form_feature', 'tab_epa', 'Max setting:', 'Max setting'), + ('setting_min', 've_epa_pipe', 'form_feature', 'tab_epa', 'Min setting:', 'Min setting'), + ('status', 've_epa_pipe', 'form_feature', 'tab_epa', 'Status:', 'Status'), + ('tot_headloss_max', 've_epa_pipe', 'form_feature', 'tab_epa', 'Max Tot Headloss:', 'Max Tot Headloss'), + ('tot_headloss_min', 've_epa_pipe', 'form_feature', 'tab_epa', 'Min Tot Headloss:', 'Min Tot Headloss'), + ('vel_max', 've_epa_pipe', 'form_feature', 'tab_epa', 'Max velocity:', 'Max velocity'), + ('vel_min', 've_epa_pipe', 'form_feature', 'tab_epa', 'Min velocity:', 'Min velocity'), + ('wall_coeff', 've_epa_pipe', 'form_feature', 'tab_epa', 'Wall coefficient:', 'Wall coefficient'), + ('avg_effic', 've_epa_pump', 'form_feature', 'tab_epa', 'Average efficiency:', 'Average efficiency'), + ('avg_kw', 've_epa_pump', 'form_feature', 'tab_epa', 'Average KW:', 'Average KW'), + ('cost_day', 've_epa_pump', 'form_feature', 'tab_epa', 'Cost day:', 'Cost day'), + ('curve_id', 've_epa_pump', 'form_feature', 'tab_epa', 'Curve id:', 'Curve id'), + ('effic_curve_id', 've_epa_pump', 'form_feature', 'tab_epa', 'Eff. curve:', 'Eff. curve'), + ('energy_pattern_id', 've_epa_pump', 'form_feature', 'tab_epa', 'Price pattern:', 'Price pattern'), + ('energy_price', 've_epa_pump', 'form_feature', 'tab_epa', 'Energy price:', 'Energy price'), + ('flow_max', 've_epa_pump', 'form_feature', 'tab_epa', 'Max flow:', 'Max Flow'), + ('flow_min', 've_epa_pump', 'form_feature', 'tab_epa', 'Min flow:', 'Min Flow'), + ('headloss_max', 've_epa_pump', 'form_feature', 'tab_epa', 'Max headloss:', 'Max headloss'), + ('headloss_min', 've_epa_pump', 'form_feature', 'tab_epa', 'Min headloss:', 'Min headloss'), + ('kwhr_mgal', 've_epa_pump', 'form_feature', 'tab_epa', 'KWh mgal:', 'KWh mgal'), + ('pattern_id', 've_epa_pump', 'form_feature', 'tab_epa', 'Pattern:', 'Pattern'), + ('peak_kw', 've_epa_pump', 'form_feature', 'tab_epa', 'Peak KW:', 'Peak KW'), + ('power', 've_epa_pump', 'form_feature', 'tab_epa', 'Power:', 'Power'), + ('pump_type', 've_epa_pump', 'form_feature', 'tab_epa', 'Pump type:', 'Pump type'), + ('quality', 've_epa_pump', 'form_feature', 'tab_epa', 'Quality:', 'Quality'), + ('result_id', 've_epa_pump', 'form_feature', 'tab_epa', 'Result id:', 'Result id'), + ('speed', 've_epa_pump', 'form_feature', 'tab_epa', 'Speed:', 'Speed'), + ('status', 've_epa_pump', 'form_feature', 'tab_epa', 'Status:', 'Status'), + ('usage_fact', 've_epa_pump', 'form_feature', 'tab_epa', 'Usage factor:', 'Usage factor'), + ('vel_max', 've_epa_pump', 'form_feature', 'tab_epa', 'Max velocity:', 'Max velocity'), + ('vel_min', 've_epa_pump', 'form_feature', 'tab_epa', 'Min velocity:', 'Min velocity'), + ('demandmax', 've_epa_reservoir', 'form_feature', 'tab_epa', 'Max demand:', 'Max demand'), + ('demandmin', 've_epa_reservoir', 'form_feature', 'tab_epa', 'Min demand:', 'Min demand'), + ('head', 've_epa_reservoir', 'form_feature', 'tab_epa', 'Head:', 'Head'), + ('headmax', 've_epa_reservoir', 'form_feature', 'tab_epa', 'Max head:', 'Max head'), + ('headmin', 've_epa_reservoir', 'form_feature', 'tab_epa', 'Min head:', 'Min head'), + ('init_quality', 've_epa_reservoir', 'form_feature', 'tab_epa', 'Initial quality:', 'Initial quality'), + ('pattern_id', 've_epa_reservoir', 'form_feature', 'tab_epa', 'Pattern:', 'Pattern'), + ('pressmax', 've_epa_reservoir', 'form_feature', 'tab_epa', 'Max pressure:', 'Max pressure'), + ('pressmin', 've_epa_reservoir', 'form_feature', 'tab_epa', 'Min pressure:', 'Min pressure'), + ('qualmax', 've_epa_reservoir', 'form_feature', 'tab_epa', 'Max quality:', 'Max quality'), + ('qualmin', 've_epa_reservoir', 'form_feature', 'tab_epa', 'Min quality:', 'Min quality'), + ('result_id', 've_epa_reservoir', 'form_feature', 'tab_epa', 'Result id:', 'Result id'), + ('source_pattern_id', 've_epa_reservoir', 'form_feature', 'tab_epa', 'Source pattern:', 'Source pattern'), + ('source_quality', 've_epa_reservoir', 'form_feature', 'tab_epa', 'Source quality:', 'Source quality'), + ('source_type', 've_epa_reservoir', 'form_feature', 'tab_epa', 'Source type:', 'Source type'), + ('bulk_coeff', 've_epa_shortpipe', 'form_feature', 'tab_epa', 'Bulk coefficient:', 'Bulk coefficient'), + ('cat_dint', 've_epa_shortpipe', 'form_feature', 'tab_epa', 'Cat dint:', 'Cat dint'), + ('custom_dint', 've_epa_shortpipe', 'form_feature', 'tab_epa', 'Custom dint:', 'Custom dint'), + ('dint', 've_epa_shortpipe', 'form_feature', 'tab_epa', 'Cat dint:', 'Cat dint'), + ('ffactor_max', 've_epa_shortpipe', 'form_feature', 'tab_epa', 'Max Ffactor:', 'Max Ffactor'), + ('ffactor_min', 've_epa_shortpipe', 'form_feature', 'tab_epa', 'Min Ffactor:', 'Min Ffactor'), + ('flow_max', 've_epa_shortpipe', 'form_feature', 'tab_epa', 'Max flow:', 'Max Flow'), + ('flow_min', 've_epa_shortpipe', 'form_feature', 'tab_epa', 'Min flow:', 'Min Flow'), + ('headloss_max', 've_epa_shortpipe', 'form_feature', 'tab_epa', 'Max headloss:', 'Max headloss'), + ('headloss_min', 've_epa_shortpipe', 'form_feature', 'tab_epa', 'Min uheadloss:', 'Max uheadloss'), + ('minorloss', 've_epa_shortpipe', 'form_feature', 'tab_epa', 'Minorloss:', 'Minorloss'), + ('nodarc_id', 've_epa_shortpipe', 'form_feature', 'tab_epa', 'Nodarc id:', 'Nodarc id'), + ('reaction_max', 've_epa_shortpipe', 'form_feature', 'tab_epa', 'Max reaction:', 'Max reaction'), + ('reaction_min', 've_epa_shortpipe', 'form_feature', 'tab_epa', 'Min reaction:', 'Min reaction'), + ('result_id', 've_epa_shortpipe', 'form_feature', 'tab_epa', 'Result id:', 'Result id'), + ('setting_max', 've_epa_shortpipe', 'form_feature', 'tab_epa', 'Max setting:', 'Max setting'), + ('setting_min', 've_epa_shortpipe', 'form_feature', 'tab_epa', 'Min setting:', 'Min setting'), + ('status', 've_epa_shortpipe', 'form_feature', 'tab_epa', 'Status:', 'Status'), + ('vel_max', 've_epa_shortpipe', 'form_feature', 'tab_epa', 'Max velocity:', 'Max velocity'), + ('vel_min', 've_epa_shortpipe', 'form_feature', 'tab_epa', 'Min velocity:', 'Min velocity'), + ('wall_coeff', 've_epa_shortpipe', 'form_feature', 'tab_epa', 'Wall coefficient:', 'Wall coefficient'), + ('curve_id', 've_epa_tank', 'form_feature', 'tab_epa', 'Curve id:', 'Curve id'), + ('demandmax', 've_epa_tank', 'form_feature', 'tab_epa', 'Max demand:', 'Max demand'), + ('demandmin', 've_epa_tank', 'form_feature', 'tab_epa', 'Min demand:', 'Min demand'), + ('diameter', 've_epa_tank', 'form_feature', 'tab_epa', 'Diameter:', 'Diameter'), + ('headavg', 've_epa_tank', 'form_feature', 'tab_epa', 'Avg head:', 'Avg demand'), + ('headmax', 've_epa_tank', 'form_feature', 'tab_epa', 'Max head:', 'Max head'), + ('headmin', 've_epa_tank', 'form_feature', 'tab_epa', 'Min head:', 'Min head'), + ('init_quality', 've_epa_tank', 'form_feature', 'tab_epa', 'Initial quality:', 'Initial quality'), + ('initlevel', 've_epa_tank', 'form_feature', 'tab_epa', 'Init level:', 'Initial level'), + ('maxlevel', 've_epa_tank', 'form_feature', 'tab_epa', 'Max level:', 'Maximum level'), + ('minlevel', 've_epa_tank', 'form_feature', 'tab_epa', 'Min level:', 'Minimum level'), + ('minvol', 've_epa_tank', 'form_feature', 'tab_epa', 'Min volume:', 'Minimum volume'), + ('mixing_fraction', 've_epa_tank', 'form_feature', 'tab_epa', 'Mixing fraction:', 'Mixing fraction'), + ('mixing_model', 've_epa_tank', 'form_feature', 'tab_epa', 'Mixing model:', 'Mixing model'), + ('overflow', 've_epa_tank', 'form_feature', 'tab_epa', 'Overflow:', 'Overflow'), + ('pressmax', 've_epa_tank', 'form_feature', 'tab_epa', 'Max pressure:', 'Max pressure'), + ('pressmin', 've_epa_tank', 'form_feature', 'tab_epa', 'Min pressure:', 'Min pressure'), + ('qualmax', 've_epa_tank', 'form_feature', 'tab_epa', 'Max quality:', 'Max quality'), + ('qualmin', 've_epa_tank', 'form_feature', 'tab_epa', 'Min quality:', 'Min quality'), + ('result_id', 've_epa_tank', 'form_feature', 'tab_epa', 'Result id:', 'Result id'), + ('source_pattern_id', 've_epa_tank', 'form_feature', 'tab_epa', 'Source pattern:', 'Source pattern'), + ('source_quality', 've_epa_tank', 'form_feature', 'tab_epa', 'Source quality:', 'Source quality'), + ('source_type', 've_epa_tank', 'form_feature', 'tab_epa', 'Source type:', 'Source type'), + ('add_settings', 've_epa_valve', 'form_feature', 'tab_epa', 'Add settings:', 'Add settings'), + ('cat_dint', 've_epa_valve', 'form_feature', 'tab_epa', 'Cat dint:', 'Cat dint'), + ('curve_id', 've_epa_valve', 'form_feature', 'tab_epa', 'Curve id:', 'Curve id'), + ('custom_dint', 've_epa_valve', 'form_feature', 'tab_epa', 'Custom dint:', 'Custom dint'), + ('dint', 've_epa_valve', 'form_feature', 'tab_epa', 'Cat dint:', 'Cat dint'), + ('ffactor_max', 've_epa_valve', 'form_feature', 'tab_epa', 'Max Ffactor:', 'Max Ffactor'), + ('ffactor_min', 've_epa_valve', 'form_feature', 'tab_epa', 'Min Ffactor:', 'Min Ffactor'), + ('flow_max', 've_epa_valve', 'form_feature', 'tab_epa', 'Max flow:', 'Max Flow'), + ('flow_min', 've_epa_valve', 'form_feature', 'tab_epa', 'Min flow:', 'Min Flow'), + ('headloss_max', 've_epa_valve', 'form_feature', 'tab_epa', 'Max headloss:', 'Max headloss'), + ('headloss_min', 've_epa_valve', 'form_feature', 'tab_epa', 'Min headloss:', 'Min headloss'), + ('init_quality', 've_epa_valve', 'form_feature', 'tab_epa', 'Initial quality:', 'Initial quality'), + ('minorloss', 've_epa_valve', 'form_feature', 'tab_epa', 'Minorloss:', 'Minorloss'), + ('nodarc_id', 've_epa_valve', 'form_feature', 'tab_epa', 'Nodarc id:', 'Nodarc id'), + ('reaction_max', 've_epa_valve', 'form_feature', 'tab_epa', 'Max reaction:', 'Max reaction'), + ('reaction_min', 've_epa_valve', 'form_feature', 'tab_epa', 'Min reaction:', 'Min reaction'), + ('result_id', 've_epa_valve', 'form_feature', 'tab_epa', 'Result id:', 'Result id'), + ('setting', 've_epa_valve', 'form_feature', 'tab_epa', 'Setting:', 'Setting:'), + ('setting_max', 've_epa_valve', 'form_feature', 'tab_epa', 'Max setting:', 'Max setting'), + ('setting_min', 've_epa_valve', 'form_feature', 'tab_epa', 'Min setting:', 'Min setting'), + ('status', 've_epa_valve', 'form_feature', 'tab_epa', 'Status:', 'Status'), + ('uheadloss_max', 've_epa_valve', 'form_feature', 'tab_epa', 'Max uheadloss:', 'Max uheadloss'), + ('uheadloss_min', 've_epa_valve', 'form_feature', 'tab_epa', 'Min uheadloss:', 'Min uheadloss'), + ('valve_type', 've_epa_valve', 'form_feature', 'tab_epa', 'Valve type:', 'Valve type'), + ('vel_max', 've_epa_valve', 'form_feature', 'tab_epa', 'Max velocity:', 'Max velocity'), + ('vel_min', 've_epa_valve', 'form_feature', 'tab_epa', 'Min velocity:', 'Min velocity'), + ('avg_effic', 've_epa_virtualpump', 'form_feature', 'tab_epa', 'Average efficiency:', 'Average efficiency'), + ('avg_kw', 've_epa_virtualpump', 'form_feature', 'tab_epa', 'Average KW:', 'Average KW'), + ('cost_day', 've_epa_virtualpump', 'form_feature', 'tab_epa', 'Cost day:', 'Cost day'), + ('curve_id', 've_epa_virtualpump', 'form_feature', 'tab_epa', 'Curve id:', 'Curve id'), + ('effic_curve_id', 've_epa_virtualpump', 'form_feature', 'tab_epa', 'Effic curve id:', 'Effic curve id:'), + ('energy_pattern_id', 've_epa_virtualpump', 'form_feature', 'tab_epa', 'Price pattern:', 'Price pattern'), + ('energy_price', 've_epa_virtualpump', 'form_feature', 'tab_epa', 'Energy price:', 'Energy price'), + ('flow_max', 've_epa_virtualpump', 'form_feature', 'tab_epa', 'Max flow:', 'Max Flow'), + ('flow_min', 've_epa_virtualpump', 'form_feature', 'tab_epa', 'Min flow:', 'Min Flow'), + ('headloss_max', 've_epa_virtualpump', 'form_feature', 'tab_epa', 'Max headloss:', 'Max headloss'), + ('headloss_min', 've_epa_virtualpump', 'form_feature', 'tab_epa', 'Min headloss:', 'Min headloss'), + ('kwhr_mgal', 've_epa_virtualpump', 'form_feature', 'tab_epa', 'KWh mgal:', 'KWh mgal'), + ('pattern_id', 've_epa_virtualpump', 'form_feature', 'tab_epa', 'Pattern:', 'Pattern'), + ('peak_kw', 've_epa_virtualpump', 'form_feature', 'tab_epa', 'Peak KW:', 'Peak KW'), + ('power', 've_epa_virtualpump', 'form_feature', 'tab_epa', 'Power:', 'Power'), + ('pump_type', 've_epa_virtualpump', 'form_feature', 'tab_epa', 'Pump type:', 'Pump type'), + ('quality', 've_epa_virtualpump', 'form_feature', 'tab_epa', 'Quality:', 'Quality'), + ('result_id', 've_epa_virtualpump', 'form_feature', 'tab_epa', 'Result id:', 'Result id'), + ('speed', 've_epa_virtualpump', 'form_feature', 'tab_epa', 'Speed:', 'Speed'), + ('status', 've_epa_virtualpump', 'form_feature', 'tab_epa', 'Status:', 'Status'), + ('usage_fact', 've_epa_virtualpump', 'form_feature', 'tab_epa', 'Usage factor:', 'Usage factor'), + ('vel_max', 've_epa_virtualpump', 'form_feature', 'tab_epa', 'Max velocity:', 'Max velocity'), + ('vel_min', 've_epa_virtualpump', 'form_feature', 'tab_epa', 'Min velocity:', 'Min velocity'), + ('curve_id', 've_epa_virtualvalve', 'form_feature', 'tab_epa', 'Curve id:', 'Curve id'), + ('diameter', 've_epa_virtualvalve', 'form_feature', 'tab_epa', 'Diameter:', 'Diameter'), + ('ffactor_max', 've_epa_virtualvalve', 'form_feature', 'tab_epa', 'Max Ffactor:', 'Max Ffactor'), + ('ffactor_min', 've_epa_virtualvalve', 'form_feature', 'tab_epa', 'Min Ffactor:', 'Min Ffactor'), + ('flow_max', 've_epa_virtualvalve', 'form_feature', 'tab_epa', 'Max flow:', 'Max Flow'), + ('flow_min', 've_epa_virtualvalve', 'form_feature', 'tab_epa', 'Min flow:', 'Min Flow'), + ('headloss_max', 've_epa_virtualvalve', 'form_feature', 'tab_epa', 'Max headloss:', 'Max headloss'), + ('headloss_min', 've_epa_virtualvalve', 'form_feature', 'tab_epa', 'Min headloss:', 'Max headloss'), + ('init_quality', 've_epa_virtualvalve', 'form_feature', 'tab_epa', 'Initial quality:', 'Initial quality'), + ('minorloss', 've_epa_virtualvalve', 'form_feature', 'tab_epa', 'Minorloss:', 'Minorloss'), + ('nodarc_id', 've_epa_virtualvalve', 'form_feature', 'tab_epa', 'Nodarc id:', 'Nodarc id'), + ('reaction_max', 've_epa_virtualvalve', 'form_feature', 'tab_epa', 'Max reaction:', 'Max reaction'), + ('reaction_min', 've_epa_virtualvalve', 'form_feature', 'tab_epa', 'Min reaction:', 'Min reaction'), + ('result_id', 've_epa_virtualvalve', 'form_feature', 'tab_epa', 'Result id:', 'Result id'), + ('setting', 've_epa_virtualvalve', 'form_feature', 'tab_epa', 'Setting:', 'Setting:'), + ('setting_max', 've_epa_virtualvalve', 'form_feature', 'tab_epa', 'Max setting:', 'Max setting'), + ('setting_min', 've_epa_virtualvalve', 'form_feature', 'tab_epa', 'Min setting:', 'Min setting'), + ('status', 've_epa_virtualvalve', 'form_feature', 'tab_epa', 'Status:', 'Status'), + ('uheadloss_max', 've_epa_virtualvalve', 'form_feature', 'tab_epa', 'Max uheadloss:', 'Max headloss'), + ('uheadloss_min', 've_epa_virtualvalve', 'form_feature', 'tab_epa', 'Min uheadloss:', 'Min uheadloss'), + ('valve_type', 've_epa_virtualvalve', 'form_feature', 'tab_epa', 'Valve type:', 'Valve type'), + ('vel_max', 've_epa_virtualvalve', 'form_feature', 'tab_epa', 'Max velocity:', 'Max velocity'), + ('vel_min', 've_epa_virtualvalve', 'form_feature', 'tab_epa', 'Min velocity:', 'Min velocity'), + ('annotation', 've_inp_connec', 'form_feature', 'tab_none', 'Annotation:', 'Annotation:'), + ('arc_id', 've_inp_connec', 'form_feature', 'tab_none', 'Arc id:', 'Arc id:'), + ('connec_id', 've_inp_connec', 'form_feature', 'tab_none', 'Connec id:', 'Connec id:'), + ('conneccat_id', 've_inp_connec', 'form_feature', 'tab_none', 'Conneccat id:', 'Conneccat id:'), + ('custom_dint', 've_inp_connec', 'form_feature', 'tab_none', 'Custom dint:', 'Custom dint:'), + ('custom_length', 've_inp_connec', 'form_feature', 'tab_none', 'Custom length:', 'Custom length:'), + ('custom_roughness', 've_inp_connec', 'form_feature', 'tab_none', 'Custom roughness:', 'Custom roughness:'), + ('demand', 've_inp_connec', 'form_feature', 'tab_none', 'Demand:', 'Demand:'), + ('depth', 've_inp_connec', 'form_feature', 'tab_none', 'Depth:', 'Depth:'), + ('dma_id', 've_inp_connec', 'form_feature', 'tab_none', 'Dma', 'Dma'), + ('emitter_coeff', 've_inp_connec', 'form_feature', 'tab_none', 'Emitter coeff:', 'coef'), + ('epa_type', 've_inp_connec', 'form_feature', 'tab_none', 'Epa type:', 'Epa type:'), + ('expl_id', 've_inp_connec', 'form_feature', 'tab_none', 'Exploitation:', 'Exploitation:'), + ('init_quality', 've_inp_connec', 'form_feature', 'tab_none', 'Init quality:', 'initqual'), + ('minorloss', 've_inp_connec', 'form_feature', 'tab_none', 'Minorloss:', 'Minorloss:'), + ('pattern_id', 've_inp_connec', 'form_feature', 'tab_none', 'Pattern id:', 'Pattern id:'), + ('peak_factor', 've_inp_connec', 'form_feature', 'tab_none', 'Peak factor:', 'Peak factor:'), + ('pjoint_id', 've_inp_connec', 'form_feature', 'tab_none', 'Pjoint id:', 'Pjoint id:'), + ('pjoint_type', 've_inp_connec', 'form_feature', 'tab_none', 'Pjoint type:', 'Pjoint type:'), + ('sector_id', 've_inp_connec', 'form_feature', 'tab_none', 'Sector id:', 'Sector id:'), + ('source_pattern_id', 've_inp_connec', 'form_feature', 'tab_none', 'Source pattern id:', 'pattern_id'), + ('source_quality', 've_inp_connec', 'form_feature', 'tab_none', 'Source quality:', 'quality'), + ('source_type', 've_inp_connec', 'form_feature', 'tab_none', 'Source type:', 'sourc_type'), + ('state', 've_inp_connec', 'form_feature', 'tab_none', 'State:', 'State:'), + ('state_type', 've_inp_connec', 'form_feature', 'tab_none', 'State type:', 'State type:'), + ('status', 've_inp_connec', 'form_feature', 'tab_none', 'Status:', 'Status:'), + ('top_elev', 've_inp_connec', 'form_feature', 'tab_none', 'Top elev:', 'Top elev:'), + ('connec_id', 've_inp_dscenario_connec', 'form_feature', 'tab_none', 'Connec id:', 'Connec id:'), + ('custom_dint', 've_inp_dscenario_connec', 'form_feature', 'tab_none', 'Custom dint:', 'Custom dint:'), + ('custom_length', 've_inp_dscenario_connec', 'form_feature', 'tab_none', 'Custom length:', 'Custom length:'), + ('custom_roughness', 've_inp_dscenario_connec', 'form_feature', 'tab_none', 'Custom roughness:', 'Custom roughness:'), + ('demand', 've_inp_dscenario_connec', 'form_feature', 'tab_none', 'Demand:', 'Demand:'), + ('dscenario_id', 've_inp_dscenario_connec', 'form_feature', 'tab_none', 'Dscenario id:', 'Dscenario id:'), + ('emitter_coeff', 've_inp_dscenario_connec', 'form_feature', 'tab_none', 'Emitter coeff:', 'coef'), + ('init_quality', 've_inp_dscenario_connec', 'form_feature', 'tab_none', 'Init quality:', 'initqual'), + ('minorloss', 've_inp_dscenario_connec', 'form_feature', 'tab_none', 'Minorloss:', 'Minorloss:'), + ('pattern_id', 've_inp_dscenario_connec', 'form_feature', 'tab_none', 'Pattern id:', 'Pattern id:'), + ('peak_factor', 've_inp_dscenario_connec', 'form_feature', 'tab_none', 'Peak factor:', 'Peak factor:'), + ('pjoint_id', 've_inp_dscenario_connec', 'form_feature', 'tab_none', 'Pjoint id:', 'Pjoint id:'), + ('pjoint_type', 've_inp_dscenario_connec', 'form_feature', 'tab_none', 'Pjoint type:', 'Pjoint type:'), + ('source_pattern_id', 've_inp_dscenario_connec', 'form_feature', 'tab_none', 'Source pattern id:', 'pattern_id'), + ('source_quality', 've_inp_dscenario_connec', 'form_feature', 'tab_none', 'Source quality:', 'quality'), + ('source_type', 've_inp_dscenario_connec', 'form_feature', 'tab_none', 'Source type:', 'sourc_type'), + ('status', 've_inp_dscenario_connec', 'form_feature', 'tab_none', 'Status:', 'Status:'), + ('demand', 've_inp_dscenario_demand', 'form_feature', 'tab_none', 'Demand:', 'Demand:'), + ('demand_type', 've_inp_dscenario_demand', 'form_feature', 'tab_none', 'Demand type:', 'Demand type:'), + ('dscenario_id', 've_inp_dscenario_demand', 'form_feature', 'tab_none', 'Dscenario id:', 'Dscenario id:'), + ('feature_id', 've_inp_dscenario_demand', 'form_feature', 'tab_none', 'Feature id:', 'Feature id:'), + ('feature_type', 've_inp_dscenario_demand', 'form_feature', 'tab_none', 'Feature type:', 'Feature type:'), + ('pattern_id', 've_inp_dscenario_demand', 'form_feature', 'tab_none', 'Pattern id:', 'Pattern id:'), + ('source', 've_inp_dscenario_demand', 'form_feature', 'tab_none', 'Source:', 'Source:'), + ('init_quality', 've_inp_dscenario_inlet', 'form_feature', 'tab_epa', 'Initial quality:', 'Initial quality'), + ('mixing_fraction', 've_inp_dscenario_inlet', 'form_feature', 'tab_epa', 'Mixing fraction:', 'Mixing fraction'), + ('mixing_model', 've_inp_dscenario_inlet', 'form_feature', 'tab_epa', 'Mixing model:', 'Mixing model'), + ('source_pattern_id', 've_inp_dscenario_inlet', 'form_feature', 'tab_epa', 'Source pattern:', 'Source pattern'), + ('source_quality', 've_inp_dscenario_inlet', 'form_feature', 'tab_epa', 'Source quality:', 'Source quality'), + ('source_type', 've_inp_dscenario_inlet', 'form_feature', 'tab_epa', 'Source type:', 'Source type'), + ('curve_id', 've_inp_dscenario_inlet', 'form_feature', 'tab_none', 'Curve id:', 'Curve id:'), + ('diameter', 've_inp_dscenario_inlet', 'form_feature', 'tab_none', 'Diameter:', 'Diameter:'), + ('dscenario_id', 've_inp_dscenario_inlet', 'form_feature', 'tab_none', 'Dscenario id:', 'Dscenario id:'), + ('head', 've_inp_dscenario_inlet', 'form_feature', 'tab_none', 'Head:', 'Head:'), + ('initlevel', 've_inp_dscenario_inlet', 'form_feature', 'tab_none', 'Initlevel:', 'Initlevel:'), + ('maxlevel', 've_inp_dscenario_inlet', 'form_feature', 'tab_none', 'Maxlevel:', 'Maxlevel:'), + ('minlevel', 've_inp_dscenario_inlet', 'form_feature', 'tab_none', 'Minlevel:', 'Minlevel:'), + ('minvol', 've_inp_dscenario_inlet', 'form_feature', 'tab_none', 'Minvol:', 'Minvol:'), + ('node_id', 've_inp_dscenario_inlet', 'form_feature', 'tab_none', 'Node id:', 'Node id:'), + ('overflow', 've_inp_dscenario_inlet', 'form_feature', 'tab_none', 'Overflow:', 'Overflow:'), + ('pattern_id', 've_inp_dscenario_inlet', 'form_feature', 'tab_none', 'Pattern id:', 'Pattern id:'), + ('demand', 've_inp_dscenario_junction', 'form_feature', 'tab_none', 'Demand:', 'Demand:'), + ('emitter_coeff', 've_inp_dscenario_junction', 'form_feature', 'tab_none', 'Emitter coeff:', 'coef'), + ('init_quality', 've_inp_dscenario_junction', 'form_feature', 'tab_none', 'Init quality:', 'initqual'), + ('pattern_id', 've_inp_dscenario_junction', 'form_feature', 'tab_none', 'Pattern id:', 'Pattern id:'), + ('peak_factor', 've_inp_dscenario_junction', 'form_feature', 'tab_none', 'Peak factor:', 'Peak factor:'), + ('source_pattern_id', 've_inp_dscenario_junction', 'form_feature', 'tab_none', 'Source pattern id:', 'pattern_id'), + ('source_quality', 've_inp_dscenario_junction', 'form_feature', 'tab_none', 'Source quality:', 'quality'), + ('source_type', 've_inp_dscenario_junction', 'form_feature', 'tab_none', 'Source type:', 'sourc_type'), + ('arc_id', 've_inp_dscenario_pipe', 'form_feature', 'tab_none', 'Arc id:', 'Arc id:'), + ('dint', 've_inp_dscenario_pipe', 'form_feature', 'tab_none', 'Internal diameter:', 'Internal diameter'), + ('dscenario_id', 've_inp_dscenario_pipe', 'form_feature', 'tab_none', 'Dscenario id:', 'Dscenario id:'), + ('minorloss', 've_inp_dscenario_pipe', 'form_feature', 'tab_none', 'Minorloss:', 'Minorloss:'), + ('roughness', 've_inp_dscenario_pipe', 'form_feature', 'tab_none', 'Roughness:', 'Roughness:'), + ('status', 've_inp_dscenario_pipe', 'form_feature', 'tab_none', 'Status:', 'Status:'), + ('curve_id', 've_inp_dscenario_pump', 'form_feature', 'tab_none', 'Curve id:', 'Curve id:'), + ('dscenario_id', 've_inp_dscenario_pump', 'form_feature', 'tab_none', 'Dscenario id:', 'Dscenario id:'), + ('effic_curve_id', 've_inp_dscenario_pump', 'form_feature', 'tab_none', 'Effic curve id:', 'curve_id'), + ('energy_pattern_id', 've_inp_dscenario_pump', 'form_feature', 'tab_none', 'Energy pattern id:', 'pattern_id'), + ('node_id', 've_inp_dscenario_pump', 'form_feature', 'tab_none', 'Node id:', 'Node id:'), + ('pattern_id', 've_inp_dscenario_pump', 'form_feature', 'tab_none', 'Pattern:', 'pattern'), + ('power', 've_inp_dscenario_pump', 'form_feature', 'tab_none', 'Power:', 'Power:'), + ('speed', 've_inp_dscenario_pump', 'form_feature', 'tab_none', 'Speed:', 'Speed:'), + ('status', 've_inp_dscenario_pump', 'form_feature', 'tab_none', 'Status:', 'Status:'), + ('curve_id', 've_inp_dscenario_pump_additional', 'form_feature', 'tab_none', 'Curve id:', 'Curve id:'), + ('dscenario_id', 've_inp_dscenario_pump_additional', 'form_feature', 'tab_none', 'Dscenario id:', 'Dscenario id:'), + ('effic_curve_id', 've_inp_dscenario_pump_additional', 'form_feature', 'tab_none', 'Effic curve id:', 'curve_id'), + ('energy_pattern_id', 've_inp_dscenario_pump_additional', 'form_feature', 'tab_none', 'Energy pattern id:', 'pattern_id'), + ('node_id', 've_inp_dscenario_pump_additional', 'form_feature', 'tab_none', 'Node id:', 'Node id:'), + ('order_id', 've_inp_dscenario_pump_additional', 'form_feature', 'tab_none', 'Order id:', 'Order id:'), + ('pattern_id', 've_inp_dscenario_pump_additional', 'form_feature', 'tab_none', 'Pattern:', 'pattern'), + ('power', 've_inp_dscenario_pump_additional', 'form_feature', 'tab_none', 'Power:', 'Power:'), + ('speed', 've_inp_dscenario_pump_additional', 'form_feature', 'tab_none', 'Speed:', 'Speed:'), + ('status', 've_inp_dscenario_pump_additional', 'form_feature', 'tab_none', 'Status:', 'Status:'), + ('dscenario_id', 've_inp_dscenario_reservoir', 'form_feature', 'tab_none', 'Dscenario id:', 'Dscenario id:'), + ('head', 've_inp_dscenario_reservoir', 'form_feature', 'tab_none', 'Head:', 'Head:'), + ('init_quality', 've_inp_dscenario_reservoir', 'form_feature', 'tab_none', 'Init quality:', 'initqual'), + ('node_id', 've_inp_dscenario_reservoir', 'form_feature', 'tab_none', 'Node id:', 'Node id:'), + ('pattern_id', 've_inp_dscenario_reservoir', 'form_feature', 'tab_none', 'Pattern id:', 'Pattern id:'), + ('source_pattern_id', 've_inp_dscenario_reservoir', 'form_feature', 'tab_none', 'Source pattern id:', 'pattern_id'), + ('source_quality', 've_inp_dscenario_reservoir', 'form_feature', 'tab_none', 'Source quality:', 'quality'), + ('source_type', 've_inp_dscenario_reservoir', 'form_feature', 'tab_none', 'Source type:', 'sourc_type'), + ('active', 've_inp_dscenario_rules', 'form_feature', 'tab_none', 'Active:', 'Active:'), + ('dscenario_id', 've_inp_dscenario_rules', 'form_feature', 'tab_none', 'Dscenario id:', 'Dscenario id:'), + ('id', 've_inp_dscenario_rules', 'form_feature', 'tab_none', 'Id:', 'Id:'), + ('sector_id', 've_inp_dscenario_rules', 'form_feature', 'tab_none', 'Sector id:', 'Sector id:'), + ('text', 've_inp_dscenario_rules', 'form_feature', 'tab_none', 'Text:', 'Text:'), + ('dscenario_id', 've_inp_dscenario_shortpipe', 'form_feature', 'tab_none', 'Dscenario id:', 'Dscenario id:'), + ('minorloss', 've_inp_dscenario_shortpipe', 'form_feature', 'tab_none', 'Minorloss:', 'Minorloss:'), + ('node_id', 've_inp_dscenario_shortpipe', 'form_feature', 'tab_none', 'Node id:', 'Node id:'), + ('status', 've_inp_dscenario_shortpipe', 'form_feature', 'tab_none', 'Status:', 'Status:'), + ('init_quality', 've_inp_dscenario_tank', 'form_feature', 'tab_epa', 'Initial quality:', 'Initial quality'), + ('mixing_fraction', 've_inp_dscenario_tank', 'form_feature', 'tab_epa', 'Mixing fraction:', 'Mixing fraction'), + ('mixing_model', 've_inp_dscenario_tank', 'form_feature', 'tab_epa', 'Mixing model:', 'Mixing model'), + ('source_pattern_id', 've_inp_dscenario_tank', 'form_feature', 'tab_epa', 'Source pattern:', 'Source pattern'), + ('source_quality', 've_inp_dscenario_tank', 'form_feature', 'tab_epa', 'Source quality:', 'Source quality'), + ('source_type', 've_inp_dscenario_tank', 'form_feature', 'tab_epa', 'Source type:', 'Source type'), + ('curve_id', 've_inp_dscenario_tank', 'form_feature', 'tab_none', 'Curve id:', 'Curve id:'), + ('diameter', 've_inp_dscenario_tank', 'form_feature', 'tab_none', 'Diameter:', 'Diameter:'), + ('dscenario_id', 've_inp_dscenario_tank', 'form_feature', 'tab_none', 'Dscenario id:', 'Dscenario id:'), + ('initlevel', 've_inp_dscenario_tank', 'form_feature', 'tab_none', 'Initlevel:', 'Initlevel:'), + ('maxlevel', 've_inp_dscenario_tank', 'form_feature', 'tab_none', 'Maxlevel:', 'Maxlevel:'), + ('minlevel', 've_inp_dscenario_tank', 'form_feature', 'tab_none', 'Minlevel:', 'Minlevel:'), + ('minvol', 've_inp_dscenario_tank', 'form_feature', 'tab_none', 'Minvol:', 'Minvol:'), + ('node_id', 've_inp_dscenario_tank', 'form_feature', 'tab_none', 'Node id:', 'Node id:'), + ('overflow', 've_inp_dscenario_tank', 'form_feature', 'tab_none', 'Overflow:', 'Overflow:'), + ('add_settings', 've_inp_dscenario_valve', 'form_feature', 'tab_none', 'Add settings:', 'Add settings:'), + ('curve_id', 've_inp_dscenario_valve', 'form_feature', 'tab_none', 'Curve id:', 'Curve id:'), + ('dscenario_id', 've_inp_dscenario_valve', 'form_feature', 'tab_none', 'Dscenario id:', 'Dscenario id:'), + ('init_quality', 've_inp_dscenario_valve', 'form_feature', 'tab_none', 'Init quality:', 'initqual'), + ('minorloss', 've_inp_dscenario_valve', 'form_feature', 'tab_none', 'Minorloss:', 'Minorloss:'), + ('node_id', 've_inp_dscenario_valve', 'form_feature', 'tab_none', 'Node id:', 'Node id:'), + ('setting', 've_inp_dscenario_valve', 'form_feature', 'tab_none', 'Setting:', 'Setting:'), + ('status', 've_inp_dscenario_valve', 'form_feature', 'tab_none', 'Status:', 'Status:'), + ('valve_type', 've_inp_dscenario_valve', 'form_feature', 'tab_none', 'Valve type:', 'Valve type:'), + ('pump_type', 've_inp_dscenario_virtualpump', 'form_feature', 'tab_epa', 'Pump type:', 'Pump type'), + ('arc_id', 've_inp_dscenario_virtualpump', 'form_feature', 'tab_none', 'Arc id:', 'Arc id:'), + ('curve_id', 've_inp_dscenario_virtualpump', 'form_feature', 'tab_none', 'Curve id:', 'Curve id:'), + ('dscenario_id', 've_inp_dscenario_virtualpump', 'form_feature', 'tab_none', 'Dscenario id:', 'Dscenario id:'), + ('effic_curve_id', 've_inp_dscenario_virtualpump', 'form_feature', 'tab_none', 'Effic curve id:', 'curve_id'), + ('energy_pattern_id', 've_inp_dscenario_virtualpump', 'form_feature', 'tab_none', 'Energy pattern id:', 'pattern_id'), + ('pattern_id', 've_inp_dscenario_virtualpump', 'form_feature', 'tab_none', 'Pattern:', 'pattern'), + ('power', 've_inp_dscenario_virtualpump', 'form_feature', 'tab_none', 'Power:', 'Power:'), + ('speed', 've_inp_dscenario_virtualpump', 'form_feature', 'tab_none', 'Speed:', 'Speed:'), + ('status', 've_inp_dscenario_virtualpump', 'form_feature', 'tab_none', 'Status:', 'Status:'), + ('arc_id', 've_inp_dscenario_virtualvalve', 'form_feature', 'tab_none', 'Arc id:', 'Arc id:'), + ('curve_id', 've_inp_dscenario_virtualvalve', 'form_feature', 'tab_none', 'Curve id:', 'Curve id:'), + ('diameter', 've_inp_dscenario_virtualvalve', 'form_feature', 'tab_none', 'Diameter:', 'Diameter:'), + ('dscenario_id', 've_inp_dscenario_virtualvalve', 'form_feature', 'tab_none', 'Dscenario id:', 'Dscenario id:'), + ('minorloss', 've_inp_dscenario_virtualvalve', 'form_feature', 'tab_none', 'Minorloss:', 'Minorloss:'), + ('setting', 've_inp_dscenario_virtualvalve', 'form_feature', 'tab_none', 'Setting:', 'Setting:'), + ('status', 've_inp_dscenario_virtualvalve', 'form_feature', 'tab_none', 'Status:', 'Status:'), + ('valve_type', 've_inp_dscenario_virtualvalve', 'form_feature', 'tab_none', 'Valve type:', 'Valve type:'), + ('demand', 've_inp_inlet', 'form_feature', 'tab_epa', 'Demand:', 'Demand'), + ('demand_pattern_id', 've_inp_inlet', 'form_feature', 'tab_epa', 'Demand pattern:', 'Demand pattern'), + ('emitter_coeff', 've_inp_inlet', 'form_feature', 'tab_epa', 'Emitter coef:', 'Emitter coef'), + ('init_quality', 've_inp_inlet', 'form_feature', 'tab_epa', 'Initial quality:', 'Initial quality'), + ('mixing_fraction', 've_inp_inlet', 'form_feature', 'tab_epa', 'Mixing fraction:', 'Mixing fraction'), + ('mixing_model', 've_inp_inlet', 'form_feature', 'tab_epa', 'Mixing model:', 'Mixing model'), + ('source_pattern_id', 've_inp_inlet', 'form_feature', 'tab_epa', 'Source pattern:', 'Source pattern'), + ('source_quality', 've_inp_inlet', 'form_feature', 'tab_epa', 'Source quality:', 'Source quality'), + ('source_type', 've_inp_inlet', 'form_feature', 'tab_epa', 'Source type:', 'Source type'), + ('annotation', 've_inp_inlet', 'form_feature', 'tab_none', 'Annotation:', 'Annotation:'), + ('curve_id', 've_inp_inlet', 'form_feature', 'tab_none', 'Curve id:', 'Curve id:'), + ('depth', 've_inp_inlet', 'form_feature', 'tab_none', 'Depth:', 'Depth:'), + ('diameter', 've_inp_inlet', 'form_feature', 'tab_none', 'Diameter:', 'Diameter:'), + ('dma_id', 've_inp_inlet', 'form_feature', 'tab_none', 'Dma:', 'Dma:'), + ('expl_id', 've_inp_inlet', 'form_feature', 'tab_none', 'Exploitation:', 'Exploitation:'), + ('head', 've_inp_inlet', 'form_feature', 'tab_none', 'Head:', 'Head:'), + ('initlevel', 've_inp_inlet', 'form_feature', 'tab_none', 'Initlevel:', 'Initlevel:'), + ('macrosector_id', 've_inp_inlet', 'form_feature', 'tab_none', 'Macrosector id:', 'Macrosector id:'), + ('maxlevel', 've_inp_inlet', 'form_feature', 'tab_none', 'Maxlevel:', 'Maxlevel:'), + ('minlevel', 've_inp_inlet', 'form_feature', 'tab_none', 'Minlevel:', 'Minlevel:'), + ('minvol', 've_inp_inlet', 'form_feature', 'tab_none', 'Minvol:', 'Minvol:'), + ('node_id', 've_inp_inlet', 'form_feature', 'tab_none', 'Node id:', 'Node id:'), + ('nodecat_id', 've_inp_inlet', 'form_feature', 'tab_none', 'Nodecat id:', 'Nodecat id:'), + ('overflow', 've_inp_inlet', 'form_feature', 'tab_none', 'Overflow:', 'Overflow:'), + ('pattern_id', 've_inp_inlet', 'form_feature', 'tab_none', 'Pattern id:', 'Pattern id:'), + ('sector_id', 've_inp_inlet', 'form_feature', 'tab_none', 'Sector id:', 'Sector id:'), + ('state', 've_inp_inlet', 'form_feature', 'tab_none', 'State:', 'State:'), + ('state_type', 've_inp_inlet', 'form_feature', 'tab_none', 'State type:', 'State type:'), + ('top_elev', 've_inp_inlet', 'form_feature', 'tab_none', 'Top elev:', 'Top elev:'), + ('demand', 've_inp_junction', 'form_feature', 'tab_none', 'Demand:', 'Demand:'), + ('depth', 've_inp_junction', 'form_feature', 'tab_none', 'Depth:', 'Depth:'), + ('dma_id', 've_inp_junction', 'form_feature', 'tab_none', 'Dma:', 'Dma:'), + ('emitter_coeff', 've_inp_junction', 'form_feature', 'tab_none', 'Emitter coeff:', 'coef'), + ('init_quality', 've_inp_junction', 'form_feature', 'tab_none', 'Init quality:', 'initqual'), + ('pattern_id', 've_inp_junction', 'form_feature', 'tab_none', 'Pattern id:', 'Pattern id:'), + ('peak_factor', 've_inp_junction', 'form_feature', 'tab_none', 'Peak factor:', 'Peak factor:'), + ('source_pattern_id', 've_inp_junction', 'form_feature', 'tab_none', 'Source pattern id:', 'pattern_id'), + ('source_quality', 've_inp_junction', 'form_feature', 'tab_none', 'Source quality:', 'quality'), + ('source_type', 've_inp_junction', 'form_feature', 'tab_none', 'Source type:', 'sourc_type'), + ('tscode', 've_inp_pattern', 'form_feature', 'tab_none', 'Tscode:', 'Tscode:'), + ('factor_1', 've_inp_pattern_value', 'form_feature', 'tab_none', 'Factor 1:', 'Factor 1:'), + ('factor_10', 've_inp_pattern_value', 'form_feature', 'tab_none', 'Factor 10:', 'Factor 10:'), + ('factor_11', 've_inp_pattern_value', 'form_feature', 'tab_none', 'Factor 11:', 'Factor 11:'), + ('factor_12', 've_inp_pattern_value', 'form_feature', 'tab_none', 'Factor 12:', 'Factor 12:'), + ('factor_13', 've_inp_pattern_value', 'form_feature', 'tab_none', 'Factor 13:', 'Factor 13:'), + ('factor_14', 've_inp_pattern_value', 'form_feature', 'tab_none', 'Factor 14:', 'Factor 14:'), + ('factor_15', 've_inp_pattern_value', 'form_feature', 'tab_none', 'Factor 15:', 'Factor 15:'), + ('factor_16', 've_inp_pattern_value', 'form_feature', 'tab_none', 'Factor 16:', 'Factor 16:'), + ('factor_17', 've_inp_pattern_value', 'form_feature', 'tab_none', 'Factor 17:', 'Factor 17:'), + ('factor_18', 've_inp_pattern_value', 'form_feature', 'tab_none', 'Factor 18:', 'Factor 18:'), + ('factor_2', 've_inp_pattern_value', 'form_feature', 'tab_none', 'Factor 2:', 'Factor 2:'), + ('factor_3', 've_inp_pattern_value', 'form_feature', 'tab_none', 'Factor 3:', 'Factor 3:'), + ('factor_4', 've_inp_pattern_value', 'form_feature', 'tab_none', 'Factor 4:', 'Factor 4:'), + ('factor_5', 've_inp_pattern_value', 'form_feature', 'tab_none', 'Factor 5:', 'Factor 5:'), + ('factor_6', 've_inp_pattern_value', 'form_feature', 'tab_none', 'Factor 6:', 'Factor 6:'), + ('factor_7', 've_inp_pattern_value', 'form_feature', 'tab_none', 'Factor 7:', 'Factor 7:'), + ('factor_8', 've_inp_pattern_value', 'form_feature', 'tab_none', 'Factor 8:', 'Factor 8:'), + ('factor_9', 've_inp_pattern_value', 'form_feature', 'tab_none', 'Factor 9:', 'Factor 9:'), + ('id', 've_inp_pattern_value', 'form_feature', 'tab_none', 'Id:', 'Id:'), + ('tscode', 've_inp_pattern_value', 'form_feature', 'tab_none', 'Tscode:', 'Tscode:'), + ('annotation', 've_inp_pipe', 'form_feature', 'tab_none', 'Annotation:', 'Annotation:'), + ('arc_id', 've_inp_pipe', 'form_feature', 'tab_none', 'Arc id:', 'Arc id:'), + ('arccat_id', 've_inp_pipe', 'form_feature', 'tab_none', 'Arccat id:', 'Arccat id:'), + ('builtdate', 've_inp_pipe', 'form_feature', 'tab_none', 'Builtdate:', 'Builtdate'), + ('cat_dint', 've_inp_pipe', 'form_feature', 'tab_none', 'Cat dint:', 'Cat dint:'), + ('cat_matcat_id', 've_inp_pipe', 'form_feature', 'tab_none', 'Material:', 'Material'), + ('custom_dint', 've_inp_pipe', 'form_feature', 'tab_none', 'Custom dint:', 'Custom dint:'), + ('custom_length', 've_inp_pipe', 'form_feature', 'tab_none', 'Custom length:', 'Custom length:'), + ('custom_roughness', 've_inp_pipe', 'form_feature', 'tab_none', 'Custom roughness:', 'Custom roughness:'), + ('dma_id', 've_inp_pipe', 'form_feature', 'tab_none', 'Dma:', 'Dma:'), + ('expl_id', 've_inp_pipe', 'form_feature', 'tab_none', 'Exploitation:', 'Exploitation:'), + ('macrosector_id', 've_inp_pipe', 'form_feature', 'tab_none', 'Macrosector id:', 'Macrosector id:'), + ('minorloss', 've_inp_pipe', 'form_feature', 'tab_none', 'Minorloss:', 'Minorloss:'), + ('node_1', 've_inp_pipe', 'form_feature', 'tab_none', 'Node 1:', 'Node 1:'), + ('node_2', 've_inp_pipe', 'form_feature', 'tab_none', 'Node 2:', 'Node 2:'), + ('sector_id', 've_inp_pipe', 'form_feature', 'tab_none', 'Sector id:', 'Sector id:'), + ('state', 've_inp_pipe', 'form_feature', 'tab_none', 'State:', 'State:'), + ('state_type', 've_inp_pipe', 'form_feature', 'tab_none', 'State type:', 'State type:'), + ('status', 've_inp_pipe', 'form_feature', 'tab_none', 'Status:', 'Status:'), + ('depth', 've_inp_pump', 'form_feature', 'tab_none', 'Depth:', 'Depth:'), + ('dma_id', 've_inp_pump', 'form_feature', 'tab_none', 'Dma:', 'Dma:'), + ('effic_curve_id', 've_inp_pump', 'form_feature', 'tab_none', 'Effic curve id:', 'curve_id'), + ('energy_pattern_id', 've_inp_pump', 'form_feature', 'tab_none', 'Energy pattern id:', 'pattern_id'), + ('expl_id', 've_inp_pump', 'form_feature', 'tab_none', 'Exploitation:', 'Exploitation:'), + ('node_id', 've_inp_pump', 'form_feature', 'tab_none', 'Node id:', 'Node id:'), + ('nodecat_id', 've_inp_pump', 'form_feature', 'tab_none', 'Nodecat id:', 'Nodecat id:'), + ('pattern_id', 've_inp_pump', 'form_feature', 'tab_none', 'Pattern:', 'pattern'), + ('power', 've_inp_pump', 'form_feature', 'tab_none', 'Power:', 'Power:'), + ('pump_type', 've_inp_pump', 'form_feature', 'tab_none', 'Pump type:', 'Pump type:'), + ('speed', 've_inp_pump', 'form_feature', 'tab_none', 'Speed:', 'Speed:'), + ('to_arc', 've_inp_pump', 'form_feature', 'tab_none', 'To arc:', 'To arc:'), + ('top_elev', 've_inp_pump', 'form_feature', 'tab_none', 'Top elev:', 'Top elev:'), + ('curve_id', 've_inp_pump_additional', 'form_feature', 'tab_none', 'Curve id:', 'Curve id:'), + ('effic_curve_id', 've_inp_pump_additional', 'form_feature', 'tab_none', 'Effic curve id:', 'curve_id'), + ('energy_pattern_id', 've_inp_pump_additional', 'form_feature', 'tab_none', 'Energy pattern id:', 'pattern_id'), + ('node_id', 've_inp_pump_additional', 'form_feature', 'tab_none', 'Node id:', 'Node id:'), + ('order_id', 've_inp_pump_additional', 'form_feature', 'tab_none', 'Order id:', 'Order id:'), + ('pattern_id', 've_inp_pump_additional', 'form_feature', 'tab_none', 'Pattern:', 'pattern'), + ('power', 've_inp_pump_additional', 'form_feature', 'tab_none', 'Power:', 'Power:'), + ('speed', 've_inp_pump_additional', 'form_feature', 'tab_none', 'Speed:', 'Speed:'), + ('status', 've_inp_pump_additional', 'form_feature', 'tab_none', 'Status:', 'Status:'), + ('annotation', 've_inp_reservoir', 'form_feature', 'tab_none', 'Annotation:', 'Annotation:'), + ('depth', 've_inp_reservoir', 'form_feature', 'tab_none', 'Depth:', 'Depth:'), + ('dma_id', 've_inp_reservoir', 'form_feature', 'tab_none', 'Dma:', 'Dma:'), + ('expl_id', 've_inp_reservoir', 'form_feature', 'tab_none', 'Exploitation:', 'Exploitation:'), + ('head', 've_inp_reservoir', 'form_feature', 'tab_none', 'Head:', 'Head:'), + ('init_quality', 've_inp_reservoir', 'form_feature', 'tab_none', 'Init quality:', 'initqual'), + ('macrosector_id', 've_inp_reservoir', 'form_feature', 'tab_none', 'Macrosector id:', 'Macrosector id:'), + ('node_id', 've_inp_reservoir', 'form_feature', 'tab_none', 'Node id:', 'Node id:'), + ('nodecat_id', 've_inp_reservoir', 'form_feature', 'tab_none', 'Nodecat id:', 'Nodecat id:'), + ('pattern_id', 've_inp_reservoir', 'form_feature', 'tab_none', 'Pattern id:', 'Pattern id:'), + ('sector_id', 've_inp_reservoir', 'form_feature', 'tab_none', 'Sector id:', 'Sector id:'), + ('source_pattern_id', 've_inp_reservoir', 'form_feature', 'tab_none', 'Source pattern id:', 'pattern_id'), + ('source_quality', 've_inp_reservoir', 'form_feature', 'tab_none', 'Source quality:', 'quality'), + ('source_type', 've_inp_reservoir', 'form_feature', 'tab_none', 'Source type:', 'sourc_type'), + ('state', 've_inp_reservoir', 'form_feature', 'tab_none', 'State:', 'State:'), + ('state_type', 've_inp_reservoir', 'form_feature', 'tab_none', 'State type:', 'State type:'), + ('top_elev', 've_inp_reservoir', 'form_feature', 'tab_none', 'Top elev:', 'Top elev:'), + ('active', 've_inp_rules', 'form_feature', 'tab_none', 'Active:', 'Active:'), + ('id', 've_inp_rules', 'form_feature', 'tab_none', 'Id:', 'Id:'), + ('sector_id', 've_inp_rules', 'form_feature', 'tab_none', 'Sector id:', 'Sector id:'), + ('text', 've_inp_rules', 'form_feature', 'tab_none', 'Text:', 'Text:'), + ('cat_dint', 've_inp_shortpipe', 'form_feature', 'tab_epa', 'Cat dint:', 'Cat dint'), + ('custom_dint', 've_inp_shortpipe', 'form_feature', 'tab_epa', 'Custom dint:', 'Custom dint'), + ('annotation', 've_inp_shortpipe', 'form_feature', 'tab_none', 'Annotation:', 'Annotation:'), + ('depth', 've_inp_shortpipe', 'form_feature', 'tab_none', 'Depth:', 'Depth:'), + ('dma_id', 've_inp_shortpipe', 'form_feature', 'tab_none', 'Dma:', 'Dma:'), + ('expl_id', 've_inp_shortpipe', 'form_feature', 'tab_none', 'Exploitation:', 'Exploitation:'), + ('macrosector_id', 've_inp_shortpipe', 'form_feature', 'tab_none', 'Macrosector id:', 'Macrosector id:'), + ('minorloss', 've_inp_shortpipe', 'form_feature', 'tab_none', 'Minorloss:', 'Minorloss:'), + ('node_id', 've_inp_shortpipe', 'form_feature', 'tab_none', 'Node id:', 'Node id:'), + ('nodecat_id', 've_inp_shortpipe', 'form_feature', 'tab_none', 'Nodecat id:', 'Nodecat id:'), + ('sector_id', 've_inp_shortpipe', 'form_feature', 'tab_none', 'Sector id:', 'Sector id:'), + ('state', 've_inp_shortpipe', 'form_feature', 'tab_none', 'State:', 'State:'), + ('state_type', 've_inp_shortpipe', 'form_feature', 'tab_none', 'State type:', 'State type:'), + ('status', 've_inp_shortpipe', 'form_feature', 'tab_none', 'Status:', 'Status:'), + ('to_arc', 've_inp_shortpipe', 'form_feature', 'tab_none', 'To arc:', 'To arc:'), + ('top_elev', 've_inp_shortpipe', 'form_feature', 'tab_none', 'Top elev:', 'Top elev:'), + ('init_quality', 've_inp_tank', 'form_feature', 'tab_epa', 'Initial quality:', 'Initial quality'), + ('mixing_fraction', 've_inp_tank', 'form_feature', 'tab_epa', 'Mixing fraction:', 'Mixing fraction'), + ('mixing_model', 've_inp_tank', 'form_feature', 'tab_epa', 'Mixing model:', 'Mixing model'), + ('source_pattern_id', 've_inp_tank', 'form_feature', 'tab_epa', 'Source pattern:', 'Source pattern'), + ('source_quality', 've_inp_tank', 'form_feature', 'tab_epa', 'Source quality:', 'Source quality'), + ('source_type', 've_inp_tank', 'form_feature', 'tab_epa', 'Source type:', 'Source type'), + ('annotation', 've_inp_tank', 'form_feature', 'tab_none', 'Annotation:', 'Annotation:'), + ('curve_id', 've_inp_tank', 'form_feature', 'tab_none', 'Curve id:', 'Curve id:'), + ('depth', 've_inp_tank', 'form_feature', 'tab_none', 'Depth:', 'Depth:'), + ('diameter', 've_inp_tank', 'form_feature', 'tab_none', 'Diameter:', 'Diameter:'), + ('dma_id', 've_inp_tank', 'form_feature', 'tab_none', 'Dma:', 'Dma:'), + ('expl_id', 've_inp_tank', 'form_feature', 'tab_none', 'Exploitation:', 'Exploitation:'), + ('initlevel', 've_inp_tank', 'form_feature', 'tab_none', 'Initlevel:', 'Initlevel:'), + ('macrosector_id', 've_inp_tank', 'form_feature', 'tab_none', 'Macrosector id:', 'Macrosector id:'), + ('maxlevel', 've_inp_tank', 'form_feature', 'tab_none', 'Maxlevel:', 'Maxlevel:'), + ('minlevel', 've_inp_tank', 'form_feature', 'tab_none', 'Minlevel:', 'Minlevel:'), + ('minvol', 've_inp_tank', 'form_feature', 'tab_none', 'Minvol:', 'Minvol:'), + ('node_id', 've_inp_tank', 'form_feature', 'tab_none', 'Node id:', 'Node id:'), + ('nodecat_id', 've_inp_tank', 'form_feature', 'tab_none', 'Nodecat id:', 'Nodecat id:'), + ('overflow', 've_inp_tank', 'form_feature', 'tab_none', 'Overflow:', 'Overflow:'), + ('sector_id', 've_inp_tank', 'form_feature', 'tab_none', 'Sector id:', 'Sector id:'), + ('state', 've_inp_tank', 'form_feature', 'tab_none', 'State:', 'State:'), + ('state_type', 've_inp_tank', 'form_feature', 'tab_none', 'State type:', 'State type:'), + ('top_elev', 've_inp_tank', 'form_feature', 'tab_none', 'Top elev:', 'Top elev:'), + ('cat_dint', 've_inp_valve', 'form_feature', 'tab_epa', 'Cat dint:', 'Cat dint'), + ('custom_dint', 've_inp_valve', 'form_feature', 'tab_epa', 'Custom dint:', 'Custom dint'), + ('add_settings', 've_inp_valve', 'form_feature', 'tab_none', 'Add settings:', 'Add settings:'), + ('annotation', 've_inp_valve', 'form_feature', 'tab_none', 'Annotation:', 'Annotation:'), + ('curve_id', 've_inp_valve', 'form_feature', 'tab_none', 'Curve id:', 'Curve id:'), + ('custom_dint', 've_inp_valve', 'form_feature', 'tab_none', 'Custom dint:', 'Custom dint:'), + ('depth', 've_inp_valve', 'form_feature', 'tab_none', 'Depth:', 'Depth:'), + ('dma_id', 've_inp_valve', 'form_feature', 'tab_none', 'Dma:', 'Dma:'), + ('expl_id', 've_inp_valve', 'form_feature', 'tab_none', 'Exploitation:', 'Exploitation:'), + ('init_quality', 've_inp_valve', 'form_feature', 'tab_none', 'Init quality:', 'initqual'), + ('macrosector_id', 've_inp_valve', 'form_feature', 'tab_none', 'Macrosector id:', 'Macrosector id:'), + ('minorloss', 've_inp_valve', 'form_feature', 'tab_none', 'Minorloss:', 'Minorloss:'), + ('node_id', 've_inp_valve', 'form_feature', 'tab_none', 'Node id:', 'Node id:'), + ('nodecat_id', 've_inp_valve', 'form_feature', 'tab_none', 'Nodecat id:', 'Nodecat id:'), + ('sector_id', 've_inp_valve', 'form_feature', 'tab_none', 'Sector id:', 'Sector id:'), + ('setting', 've_inp_valve', 'form_feature', 'tab_none', 'Setting:', 'Setting:'), + ('state', 've_inp_valve', 'form_feature', 'tab_none', 'State:', 'State:'), + ('state_type', 've_inp_valve', 'form_feature', 'tab_none', 'State type:', 'State type:'), + ('status', 've_inp_valve', 'form_feature', 'tab_none', 'Status:', 'Status:'), + ('to_arc', 've_inp_valve', 'form_feature', 'tab_none', 'To arc:', 'To arc:'), + ('top_elev', 've_inp_valve', 'form_feature', 'tab_none', 'Top elev:', 'Top elev:'), + ('valve_type', 've_inp_valve', 'form_feature', 'tab_none', 'Valve type:', 'Valve type:'), + ('curve_id', 've_inp_virtualpump', 'form_feature', 'tab_epa', 'Curve id:', 'Curve id'), + ('effic_curve_id', 've_inp_virtualpump', 'form_feature', 'tab_epa', 'Effic curve id:', 'Effic curve id:'), + ('energy_pattern_id', 've_inp_virtualpump', 'form_feature', 'tab_epa', 'Energy pattern:', 'Energy pattern'), + ('energy_price', 've_inp_virtualpump', 'form_feature', 'tab_epa', 'Energy price:', 'Energy price'), + ('pattern_id', 've_inp_virtualpump', 'form_feature', 'tab_epa', 'Pattern:', 'Pattern'), + ('power', 've_inp_virtualpump', 'form_feature', 'tab_epa', 'Power:', 'Power'), + ('pump_type', 've_inp_virtualpump', 'form_feature', 'tab_epa', 'Pump type:', 'Pump type'), + ('speed', 've_inp_virtualpump', 'form_feature', 'tab_epa', 'Speed:', 'Speed'), + ('status', 've_inp_virtualpump', 'form_feature', 'tab_epa', 'Status:', 'Status'), + ('annotation', 've_inp_virtualpump', 'form_feature', 'tab_none', 'Annotation:', 'Annotation:'), + ('arc_id', 've_inp_virtualpump', 'form_feature', 'tab_none', 'Arc id:', 'Arc id:'), + ('arccat_id', 've_inp_virtualpump', 'form_feature', 'tab_none', 'Arccat id:', 'Arccat id:'), + ('dma_id', 've_inp_virtualpump', 'form_feature', 'tab_none', 'Dma:', 'Dma:'), + ('expl_id', 've_inp_virtualpump', 'form_feature', 'tab_none', 'Exploitation:', 'Exploitation:'), + ('node_1', 've_inp_virtualpump', 'form_feature', 'tab_none', 'Node 1:', 'Node 1:'), + ('node_2', 've_inp_virtualpump', 'form_feature', 'tab_none', 'Node 2:', 'Node 2:'), + ('sector_id', 've_inp_virtualpump', 'form_feature', 'tab_none', 'Sector id:', 'Sector id:'), + ('state', 've_inp_virtualpump', 'form_feature', 'tab_none', 'State:', 'State:'), + ('state_type', 've_inp_virtualpump', 'form_feature', 'tab_none', 'State type:', 'State type:'), + ('annotation', 've_inp_virtualvalve', 'form_feature', 'tab_none', 'Annotation:', 'Annotation:'), + ('arc_id', 've_inp_virtualvalve', 'form_feature', 'tab_none', 'Arc id:', 'Arc id:'), + ('arccat_id', 've_inp_virtualvalve', 'form_feature', 'tab_none', 'Arccat id:', 'Arccat id:'), + ('curve_id', 've_inp_virtualvalve', 'form_feature', 'tab_none', 'Curve id:', 'Curve id:'), + ('depth', 've_inp_virtualvalve', 'form_feature', 'tab_none', 'Depth:', 'Depth:'), + ('dma_id', 've_inp_virtualvalve', 'form_feature', 'tab_none', 'Dma:', 'Dma:'), + ('elevation', 've_inp_virtualvalve', 'form_feature', 'tab_none', 'Elevation:', 'Elevation:'), + ('expl_id', 've_inp_virtualvalve', 'form_feature', 'tab_none', 'Exploitation:', 'Exploitation:'), + ('macrosector_id', 've_inp_virtualvalve', 'form_feature', 'tab_none', 'Macrosector id:', 'Macrosector id:'), + ('minorloss', 've_inp_virtualvalve', 'form_feature', 'tab_none', 'Minorloss:', 'Minorloss:'), + ('node_1', 've_inp_virtualvalve', 'form_feature', 'tab_none', 'Node 1:', 'Node 1:'), + ('node_2', 've_inp_virtualvalve', 'form_feature', 'tab_none', 'Node 2:', 'Node 2:'), + ('sector_id', 've_inp_virtualvalve', 'form_feature', 'tab_none', 'Sector id:', 'Sector id:'), + ('setting', 've_inp_virtualvalve', 'form_feature', 'tab_none', 'Setting:', 'Setting:'), + ('state', 've_inp_virtualvalve', 'form_feature', 'tab_none', 'State:', 'State:'), + ('state_type', 've_inp_virtualvalve', 'form_feature', 'tab_none', 'State type:', 'State type:'), + ('status', 've_inp_virtualvalve', 'form_feature', 'tab_none', 'Status:', 'Status:'), + ('valve_type', 've_inp_virtualvalve', 'form_feature', 'tab_none', 'Valve type:', 'Valve type:'), + ('active', 've_macrodma', 'form_feature', 'tab_none', 'Active:', 'Active:'), + ('addparam', 've_macrodma', 'form_feature', 'tab_none', 'Addparam:', 'Addparam:'), + ('code', 've_macrodma', 'form_feature', 'tab_none', 'Code:', 'Code:'), + ('created_at', 've_macrodma', 'form_feature', 'tab_none', 'Created at:', 'Created at:'), + ('created_by', 've_macrodma', 'form_feature', 'tab_none', 'Created by:', 'Created by:'), + ('link', 've_macrodma', 'form_feature', 'tab_none', 'Link:', 'Link:'), + ('lock_level', 've_macrodma', 'form_feature', 'tab_none', 'Lock level:', 'Lock level:'), + ('macrodma_id', 've_macrodma', 'form_feature', 'tab_none', 'Macrodma id:', 'Macrodma id:'), + ('muni_id', 've_macrodma', 'form_feature', 'tab_none', 'Muni id:', 'Muni id:'), + ('sector_id', 've_macrodma', 'form_feature', 'tab_none', 'Sector id:', 'Sector id:'), + ('stylesheet', 've_macrodma', 'form_feature', 'tab_none', 'Stylesheet:', 'Stylesheet:'), + ('updated_at', 've_macrodma', 'form_feature', 'tab_none', 'Updated at:', 'Updated at:'), + ('updated_by', 've_macrodma', 'form_feature', 'tab_none', 'Updated by:', 'Updated by:'), + ('active', 've_macrodqa', 'form_feature', 'tab_none', 'Active:', 'Active:'), + ('addparam', 've_macrodqa', 'form_feature', 'tab_none', 'Addparam:', 'Addparam:'), + ('code', 've_macrodqa', 'form_feature', 'tab_none', 'Code:', 'Code:'), + ('created_at', 've_macrodqa', 'form_feature', 'tab_none', 'Created at:', 'Created at:'), + ('created_by', 've_macrodqa', 'form_feature', 'tab_none', 'Created by:', 'Created by:'), + ('descript', 've_macrodqa', 'form_feature', 'tab_none', 'Descript:', 'Descript:'), + ('expl_id', 've_macrodqa', 'form_feature', 'tab_none', 'Expl id:', 'Expl id:'), + ('link', 've_macrodqa', 'form_feature', 'tab_none', 'Link:', 'Link:'), + ('lock_level', 've_macrodqa', 'form_feature', 'tab_none', 'Lock level:', 'Lock level:'), + ('macrodqa_id', 've_macrodqa', 'form_feature', 'tab_none', 'Macrodqa id:', 'Macrodqa id:'), + ('muni_id', 've_macrodqa', 'form_feature', 'tab_none', 'Muni id:', 'Muni id:'), + ('name', 've_macrodqa', 'form_feature', 'tab_none', 'Name:', 'Name:'), + ('sector_id', 've_macrodqa', 'form_feature', 'tab_none', 'Sector id:', 'Sector id:'), + ('stylesheet', 've_macrodqa', 'form_feature', 'tab_none', 'Stylesheet:', 'Stylesheet:'), + ('updated_at', 've_macrodqa', 'form_feature', 'tab_none', 'Updated at:', 'Updated at:'), + ('updated_by', 've_macrodqa', 'form_feature', 'tab_none', 'Updated by:', 'Updated by:'), + ('macroomzone_id', 've_macroomzone', 'form_feature', 'tab_none', 'Macroomzone id:', 'Macroomzone id:'), + ('macrosector_id', 've_macrosector', 'form_feature', 'tab_none', 'Macrosector id:', 'Macrosector id:'), + ('expl_id2', 've_plan_netscenario_dma', 'form_feature', 'tab_data', 'Expl id2:', 'Expl id2:'), + ('active', 've_plan_netscenario_dma', 'form_feature', 'tab_none', 'Active:', 'Active:'), + ('dma_id', 've_plan_netscenario_dma', 'form_feature', 'tab_none', 'Dma id:', 'Dma id:'), + ('graphconfig', 've_plan_netscenario_dma', 'form_feature', 'tab_none', 'Graphconfig:', 'Graphconfig:'), + ('name', 've_plan_netscenario_dma', 'form_feature', 'tab_none', 'Name:', 'Name:'), + ('netscenario_id', 've_plan_netscenario_dma', 'form_feature', 'tab_none', 'Netscenario id:', 'Netscenario id:'), + ('netscenario_name', 've_plan_netscenario_dma', 'form_feature', 'tab_none', 'Netscenario name:', 'Netscenario name:'), + ('pattern_id', 've_plan_netscenario_dma', 'form_feature', 'tab_none', 'Pattern id:', 'Pattern id:'), + ('stylesheet', 've_plan_netscenario_dma', 'form_feature', 'tab_none', 'Stylesheet:', 'Stylesheet:'), + ('expl_id2', 've_plan_netscenario_presszone', 'form_feature', 'tab_data', 'Expl id2:', 'Expl id2:'), + ('presszone_type', 've_plan_netscenario_presszone', 'form_feature', 'tab_data', 'Presszone type:', 'Presszone type:'), + ('active', 've_plan_netscenario_presszone', 'form_feature', 'tab_none', 'Active:', 'Active:'), + ('graphconfig', 've_plan_netscenario_presszone', 'form_feature', 'tab_none', 'Graphconfig:', 'Graphconfig:'), + ('head', 've_plan_netscenario_presszone', 'form_feature', 'tab_none', 'Head:', 'Head:'), + ('name', 've_plan_netscenario_presszone', 'form_feature', 'tab_none', 'Name:', 'Name:'), + ('netscenario_id', 've_plan_netscenario_presszone', 'form_feature', 'tab_none', 'Netscenario id:', 'Netscenario id:'), + ('netscenario_name', 've_plan_netscenario_presszone', 'form_feature', 'tab_none', 'Netscenario name:', 'Netscenario name:'), + ('presszone_id', 've_plan_netscenario_presszone', 'form_feature', 'tab_none', 'Presszone id:', 'Presszone id:'), + ('stylesheet', 've_plan_netscenario_presszone', 'form_feature', 'tab_none', 'Stylesheet:', 'Stylesheet:'), + ('scale', 've_plan_psector', 'form_feature', 'tab_none', 'Scale:', 'Scale'), + ('active', 've_presszone', 'form_feature', 'tab_none', 'Active:', 'Active:'), + ('addparam', 've_presszone', 'form_feature', 'tab_none', 'Addparam:', 'Addparam:'), + ('avg_press', 've_presszone', 'form_feature', 'tab_none', 'Average pressure:', 'Average pressure:'), + ('code', 've_presszone', 'form_feature', 'tab_none', 'Code:', 'Code:'), + ('created_at', 've_presszone', 'form_feature', 'tab_none', 'Created at:', 'Created at:'), + ('created_by', 've_presszone', 'form_feature', 'tab_none', 'Created by:', 'Created by:'), + ('descript', 've_presszone', 'form_feature', 'tab_none', 'Descript:', 'Descript:'), + ('expl_id', 've_presszone', 'form_feature', 'tab_none', 'Expl id:', 'Expl id:'), + ('graphconfig', 've_presszone', 'form_feature', 'tab_none', 'Graphconfig:', 'Graphconfig:'), + ('head', 've_presszone', 'form_feature', 'tab_none', 'Head:', 'Head:'), + ('link', 've_presszone', 'form_feature', 'tab_none', 'Link:', 'Link:'), + ('lock_level', 've_presszone', 'form_feature', 'tab_none', 'Lock level:', 'Lock level:'), + ('muni_id', 've_presszone', 'form_feature', 'tab_none', 'Muni id:', 'Muni id:'), + ('name', 've_presszone', 'form_feature', 'tab_none', 'Name:', 'Name:'), + ('presszone_id', 've_presszone', 'form_feature', 'tab_none', 'Presszone id:', 'Presszone id:'), + ('presszone_type', 've_presszone', 'form_feature', 'tab_none', 'Presszone type:', 'Presszone type:'), + ('sector_id', 've_presszone', 'form_feature', 'tab_none', 'Sector id:', 'Sector id:'), + ('stylesheet', 've_presszone', 'form_feature', 'tab_none', 'Stylesheet:', 'Stylesheet:'), + ('updated_at', 've_presszone', 'form_feature', 'tab_none', 'Updated at:', 'Updated at:'), + ('updated_by', 've_presszone', 'form_feature', 'tab_none', 'Updated by:', 'Updated by:'), + ('new_depth', 've_review_audit_node', 'form_feature', 'tab_none', 'New depth:', 'New depth:'), + ('new_elevation', 've_review_audit_node', 'form_feature', 'tab_none', 'New elevation:', 'New elevation:'), + ('old_depth', 've_review_audit_node', 'form_feature', 'tab_none', 'Old depth:', 'Old depth:'), + ('old_elevation', 've_review_audit_node', 'form_feature', 'tab_none', 'Old elevation:', 'Old elevation:'), + ('depth', 've_review_node', 'form_feature', 'tab_none', 'Depth:', 'Depth:'), + ('dma_id', 've_samplepoint', 'form_feature', 'tab_none', 'Dma id:', 'Dma id:'), + ('macrodma_id', 've_samplepoint', 'form_feature', 'tab_none', 'Macrodma id:', 'Macrodma id:'), + ('presszone_id', 've_samplepoint', 'form_feature', 'tab_none', 'Presszonecat id:', 'Presszonecat id:'), + ('active', 've_supplyzone', 'form_feature', 'tab_none', 'Active:', 'Active:'), + ('addparam', 've_supplyzone', 'form_feature', 'tab_none', 'Addparam:', 'Addparam:'), + ('avg_press', 've_supplyzone', 'form_feature', 'tab_none', 'Average pressure:', 'Average pressure:'), + ('code', 've_supplyzone', 'form_feature', 'tab_none', 'Code:', 'Code:'), + ('created_at', 've_supplyzone', 'form_feature', 'tab_none', 'Created at:', 'Created at:'), + ('created_by', 've_supplyzone', 'form_feature', 'tab_none', 'Created by:', 'Created by:'), + ('descript', 've_supplyzone', 'form_feature', 'tab_none', 'Descript:', 'Descript:'), + ('expl_id', 've_supplyzone', 'form_feature', 'tab_none', 'Expl id:', 'Expl id:'), + ('graphconfig', 've_supplyzone', 'form_feature', 'tab_none', 'Graphconfig:', 'Graphconfig:'), + ('link', 've_supplyzone', 'form_feature', 'tab_none', 'Link:', 'Link:'), + ('lock_level', 've_supplyzone', 'form_feature', 'tab_none', 'Lock level:', 'Lock level:'), + ('muni_id', 've_supplyzone', 'form_feature', 'tab_none', 'Muni id:', 'Muni id:'), + ('name', 've_supplyzone', 'form_feature', 'tab_none', 'Name:', 'Name:'), + ('pattern_id', 've_supplyzone', 'form_feature', 'tab_none', 'Pattern id:', 'Pattern id:'), + ('sector_id', 've_supplyzone', 'form_feature', 'tab_none', 'Sector id:', 'Ex: {1,2}'), + ('stylesheet', 've_supplyzone', 'form_feature', 'tab_none', 'Stylesheet:', 'Stylesheet:'), + ('supplyzone_id', 've_supplyzone', 'form_feature', 'tab_none', 'Supplyzone id:', 'Supplyzone id:'), + ('supplyzone_type', 've_supplyzone', 'form_feature', 'tab_none', 'Supply type:', 'Supply type:'), + ('updated_at', 've_supplyzone', 'form_feature', 'tab_none', 'Updated at:', 'Updated at:'), + ('updated_by', 've_supplyzone', 'form_feature', 'tab_none', 'Updated by:', 'Updated by:'), + ('dma_id', 've_vnode', 'form_feature', 'tab_none', 'Dma', 'Dma') +) AS v(columnname, formname, formtype, tabname, label, tooltip) +WHERE t.columnname = v.columnname AND t.formname = v.formname AND t.formtype = v.formtype AND t.tabname = v.tabname; +UPDATE config_param_system SET value = TRUE WHERE parameter = 'admin_config_control_trigger'; diff --git a/dbmodel/schemas/addon/utils/final_pass/i18n/en_US/dbconfig_form_fields_feat.sql b/dbmodel/schemas/addon/utils/final_pass/i18n/en_US/dbconfig_form_fields_feat.sql new file mode 100644 index 0000000000..aba6a85720 --- /dev/null +++ b/dbmodel/schemas/addon/utils/final_pass/i18n/en_US/dbconfig_form_fields_feat.sql @@ -0,0 +1,803 @@ +/* +This file is part of Giswater +The program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. +*/ + + +SET search_path = SCHEMA_NAME, public, pg_catalog; +UPDATE config_param_system SET value = FALSE WHERE parameter = 'admin_config_control_trigger'; + +UPDATE config_form_fields AS t SET label = v.label, tooltip = v.tooltip FROM ( + VALUES + ('accessibility', '%_arc%', 'form_feature', 'tab_data', 'Accessibility:', 'Accessibility:'), +('bottom_mat', '%_arc%', 'form_feature', 'tab_data', 'Bottom mat:', 'Bottom mat:'), +('cat_geom1', '%_arc%', 'form_feature', 'tab_data', 'Cat geom1:', 'Cat geom1:'), +('cat_geom2', '%_arc%', 'form_feature', 'tab_data', 'Horizontal inside measurement:', 'Horizontal inside measurement'), +('cat_shape', '%_arc%', 'form_feature', 'tab_data', 'Section:', 'cat_shape - Shape of the element. It cannot be filled in. The one with the matcat_id field of the corresponding catalog is used'), +('conduit_code', '%_arc%', 'form_feature', 'tab_data', 'Conduit code:', 'Conduit code:'), +('custom_elev1', '%_arc%', 'form_feature', 'tab_data', 'Custom elev1:', 'Custom elev1:'), +('custom_elev2', '%_arc%', 'form_feature', 'tab_data', 'Custom elev2:', 'Custom elev2:'), +('custom_y1', '%_arc%', 'form_feature', 'tab_data', 'Custom y1:', 'Custom_y1'), +('custom_y2', '%_arc%', 'form_feature', 'tab_data', 'Custom y2:', 'Custom_y2'), +('dwfzone_id', '%_arc%', 'form_feature', 'tab_data', 'Dwfzone', 'Dwfzone'), +('elev1', '%_arc%', 'form_feature', 'tab_data', 'Elevation 1:', 'Elevation 1'), +('elev2', '%_arc%', 'form_feature', 'tab_data', 'Elev2:', 'Elev2:'), +('initoverflowpath', '%_arc%', 'form_feature', 'tab_data', 'Start derived flows:', 'Este campo es de suma importancia puesto que identifica aquellos tramos de red que son inicio de de flujo de caudales en tiempo de lluvia. Esta propiedad les convierte en ser frontera entre las DWFzones y la Drainzones'), +('inlet_offset', '%_arc%', 'form_feature', 'tab_data', 'Inlet offset:', 'Inlet offset:'), +('inverted_slope', '%_arc%', 'form_feature', 'tab_data', 'Inverted slope:', 'Inverted slope:'), +('macrodma_id', '%_arc%', 'form_feature', 'tab_data', 'Macroomzone Id:', 'Macroomzone_id - Identifier of the macroomzone. Auto-populates based on omzone'), +('matcat_id', '%_arc%', 'form_feature', 'tab_data', 'Material:', 'matcat_id - Material of the element. It cannot be filled in. The one with the matcat_id field of the corresponding catalog is used'), +('name', '%_arc%', 'form_feature', 'tab_data', 'Name:', 'name - Name of the element'), +('negative_offset', '%_arc%', 'form_feature', 'tab_data', 'Negativeoffset:', 'negativeoffset'), +('node_custom_top_elev_1', '%_arc%', 'form_feature', 'tab_data', 'Node Custom Top Elev 1:', 'Node Custom Top Elev 1'), +('node_custom_top_elev_2', '%_arc%', 'form_feature', 'tab_data', 'Node Custom Top Elev 2:', 'Node Custom Top Elev 2'), +('node_top_elev_1', '%_arc%', 'form_feature', 'tab_data', 'Node Top Elev 1:', 'Node Top Elev 1'), +('node_top_elev_2', '%_arc%', 'form_feature', 'tab_data', 'Node Top Elev 2:', 'Node Top Elev 2'), +('omzone_id', '%_arc%', 'form_feature', 'tab_data', 'Omzone:', 'Omzone_id'), +('placement_type', '%_arc%', 'form_feature', 'tab_data', 'Placement Type:', 'Placement Type'), +('prot_surface', '%_arc%', 'form_feature', 'tab_data', 'Surface protector:', 'prot_surface - Information whether exists the surface protector.'), +('pumpipe_param_1', '%_arc%', 'form_feature', 'tab_data', 'Ppipe param 1:', 'Ppipe param_1'), +('pumpipe_param_2', '%_arc%', 'form_feature', 'tab_data', 'Ppipe param 2:', 'Ppipe param_2'), +('r1', '%_arc%', 'form_feature', 'tab_data', 'R1:', 'r1 - Coating. Distance between the upper generatrix and the surface at node 1'), +('r2', '%_arc%', 'form_feature', 'tab_data', 'R2:', 'R2:'), +('sander_depth', '%_arc%', 'form_feature', 'tab_data', 'Sander depth:', 'sander_depth - Depth of the sander.'), +('sander_length', '%_arc%', 'form_feature', 'tab_data', 'Snader length:', 'sander_length - Length of the sander.'), +('siphon_code', '%_arc%', 'form_feature', 'tab_data', 'Siphon code:', 'Siphon code:'), +('slope', '%_arc%', 'form_feature', 'tab_data', 'Slope:', 'Slope:'), +('streetname', '%_arc%', 'form_feature', 'tab_data', 'Streetname:', 'Streetname:'), +('streetname2', '%_arc%', 'form_feature', 'tab_data', 'Streetname2:', 'Streetname2:'), +('sys_elev1', '%_arc%', 'form_feature', 'tab_data', 'Sys elev1:', 'Sys elev1:'), +('sys_elev2', '%_arc%', 'form_feature', 'tab_data', 'Sys elev2:', 'sys_elev2 - Input level of the final node selected for the calculation'), +('sys_y1', '%_arc%', 'form_feature', 'tab_data', 'Sys y1:', 'Sys y1:'), +('sys_y2', '%_arc%', 'form_feature', 'tab_data', 'Sys y2:', 'Sys y2:'), +('uncertain', '%_arc%', 'form_feature', 'tab_data', 'Uncertain:', 'Uncertain:'), +('visitability', '%_arc%', 'form_feature', 'tab_data', 'Visitability:', 'Visitability:'), +('waccel_code', '%_arc%', 'form_feature', 'tab_data', 'Waccel code:', 'Waccel code:'), +('y1', '%_arc%', 'form_feature', 'tab_data', 'Y1:', 'Y1:'), +('y2', '%_arc%', 'form_feature', 'tab_data', 'Y2:', 'y2 - Depth of the conduit at end node'), +('z1', '%_arc%', 'form_feature', 'tab_data', 'Z1:', 'Z1:'), +('z2', '%_arc%', 'form_feature', 'tab_data', 'Z2:', 'Z2:'), +('brand_id', '%_connec%', 'form_feature', 'tab_data', 'Brand id:', 'Brand id:'), +('connec_depth', '%_connec%', 'form_feature', 'tab_data', 'Connec depth:', 'Connec depth:'), +('diagonal', '%_connec%', 'form_feature', 'tab_data', 'Diagonal:', 'Diagonal:'), +('dwfzone_id', '%_connec%', 'form_feature', 'tab_data', 'Dwfzone', 'Dwfzone'), +('matcat_id', '%_connec%', 'form_feature', 'tab_data', 'Matcat id:', 'Matcat id:'), +('model_id', '%_connec%', 'form_feature', 'tab_data', 'Model id:', 'Model id:'), +('omzone_id', '%_connec%', 'form_feature', 'tab_data', 'Omzone:', 'Omzone_id'), +('private_conneccat_id', '%_connec%', 'form_feature', 'tab_data', 'Private conneccat id:', 'Private conneccat id:'), +('streetname', '%_connec%', 'form_feature', 'tab_data', 'Street:', 'streetname - Street identifier.'), +('streetname2', '%_connec%', 'form_feature', 'tab_data', 'Street 2:', 'streetname2 - Second street identifier.'), +('uncertain', '%_connec%', 'form_feature', 'tab_data', 'Uncertain:', 'uncertain - To set if the element''s location is uncertain'), +('y1', '%_connec%', 'form_feature', 'tab_data', 'Y1:', 'y1 - Depth at the point of connection with the building'), +('y2', '%_connec%', 'form_feature', 'tab_data', 'Y2:', 'y2 - Depth at the point of connection to the public network'), +('muni_id', '%_element%', 'form_feature', 'tab_data', 'Municipality id:', 'muni_id - Identifier of the municipality'), +('access_type', '%_gully%', 'form_feature', 'tab_data', 'Access type:', 'Access type:'), +('adate', '%_gully%', 'form_feature', 'tab_data', 'Adate:', 'Adate:'), +('adescript', '%_gully%', 'form_feature', 'tab_data', 'Adescript:', 'Adescript:'), +('annotation', '%_gully%', 'form_feature', 'tab_data', 'Annotation:', 'annotation - Annotations related to gully. Additional information'), +('arc_id', '%_gully%', 'form_feature', 'tab_data', 'Arc Id:', 'Arc_id'), +('asset_id', '%_gully%', 'form_feature', 'tab_data', 'Asset Id:', 'Asset Id'), +('brand_id', '%_gully%', 'form_feature', 'tab_data', 'Brand id:', 'Brand id:'), +('builtdate', '%_gully%', 'form_feature', 'tab_data', 'Builtdate:', 'Builtdate - Id of the construction date related to gully.'), +('cat_grate_matcat', '%_gully%', 'form_feature', 'tab_data', 'Material:', 'Material'), +('category_type', '%_gully%', 'form_feature', 'tab_data', 'Category type:', 'Category type:'), +('code', '%_gully%', 'form_feature', 'tab_data', 'Code:', 'Code:'), +('comment', '%_gully%', 'form_feature', 'tab_data', 'Comment:', 'Comment:'), +('connec_arccat_id', '%_gully%', 'form_feature', 'tab_data', 'Connec arccat id:', 'Connec arccat id:'), +('connec_depth', '%_gully%', 'form_feature', 'tab_data', 'Connec depth:', 'connec_depth - Profundidad de la conexión'), +('connec_length', '%_gully%', 'form_feature', 'tab_data', 'Connec length:', 'Connec length:'), +('connec_matcat_id', '%_gully%', 'form_feature', 'tab_data', 'Connec matcat Id:', 'Material of a conection arc'), +('connec_y1', '%_gully%', 'form_feature', 'tab_data', 'Connec y1:', 'Connec y1:'), +('connec_y2', '%_gully%', 'form_feature', 'tab_data', 'Connec y2:', 'Connec y2:'), +('descript', '%_gully%', 'form_feature', 'tab_data', 'Descript:', 'descript - Field to store additional information about the feature.'), +('district_id', '%_gully%', 'form_feature', 'tab_data', 'District:', 'district_id - Identifier of the neighborhood with which the element is linked. To choose from those available in the drop-down (it is filtered according to the selected municipality)'), +('dma_id', '%_gully%', 'form_feature', 'tab_data', 'Dma', 'Dma'), +('dwfzone_id', '%_gully%', 'form_feature', 'tab_data', 'Dwfzone', 'Dwfzone'), +('enddate', '%_gully%', 'form_feature', 'tab_data', 'Enddate:', 'Enddate'), +('epa_type', '%_gully%', 'form_feature', 'tab_data', 'Epa type:', 'epa_type - Type of node to use for the hydraulic model. It is not necessary to enter it, it is automatic depending on the node type.'), +('expl_id', '%_gully%', 'form_feature', 'tab_data', 'Exploitation:', 'Exploitation:'), +('expl_id2', '%_gully%', 'form_feature', 'tab_data', 'Exploitation 2:', 'expl_id - Exploitation to which the element belongs. If the configuration is not changed, the program automatically selects it based on the geometry'), +('expl_visibility', '%_gully%', 'form_feature', 'tab_data', 'Expl id visibility:', 'Expl_id visibility'), +('feature_id', '%_gully%', 'form_feature', 'tab_data', 'Feature id:', 'Feature id:'), +('featurecat_id', '%_gully%', 'form_feature', 'tab_data', 'Featurecat id:', 'Featurecat id:'), +('fluid_type', '%_gully%', 'form_feature', 'tab_data', 'Fluid type:', 'Fluid_type - Id of the fluid type related to gully.'), +('function_type', '%_gully%', 'form_feature', 'tab_data', 'Function type:', 'Function type:'), +('grate_param_1', '%_gully%', 'form_feature', 'tab_data', 'Grate param 1:', 'Grate param_1'), +('grate_param_2', '%_gully%', 'form_feature', 'tab_data', 'Grate param 2:', 'Grate param_2'), +('groove', '%_gully%', 'form_feature', 'tab_data', 'Groove:', 'Groove:'), +('groove_height', '%_gully%', 'form_feature', 'tab_data', 'Groove height:', 'Groove height:'), +('groove_length', '%_gully%', 'form_feature', 'tab_data', 'Groove length:', 'Groove length:'), +('gully_id', '%_gully%', 'form_feature', 'tab_data', 'Gully id:', 'Gully id:'), +('gully_type', '%_gully%', 'form_feature', 'tab_data', 'Gully type:', 'Gully type:'), +('gullycat2_id', '%_gully%', 'form_feature', 'tab_data', 'Gullycat2 id:', 'Gullycat2 id:'), +('gullycat_id', '%_gully%', 'form_feature', 'tab_data', 'Gullycat id:', 'Gullycat id:'), +('inventory', '%_gully%', 'form_feature', 'tab_data', 'Inventory:', 'Inventory:'), +('label', '%_gully%', 'form_feature', 'tab_data', 'Label:', 'label - Label shown on the item form'), +('label_quadrant', '%_gully%', 'form_feature', 'tab_data', 'Label quadrant:', 'Label quadrant:'), +('label_rotation', '%_gully%', 'form_feature', 'tab_data', 'Label rotation:', 'Label rotation:'), +('label_x', '%_gully%', 'form_feature', 'tab_data', 'Label x:', 'label_x - X coordinate of the label''s location'), +('label_y', '%_gully%', 'form_feature', 'tab_data', 'Label y:', 'label_y - Y coordinate of the label''s location'), +('lastupdate', '%_gully%', 'form_feature', 'tab_data', 'Last update:', 'lastupdate - Last time this element was updated'), +('lastupdate_user', '%_gully%', 'form_feature', 'tab_data', 'Last update user:', 'Last update user:'), +('link', '%_gully%', 'form_feature', 'tab_data', 'Link:', 'link - Field to store link to information related to the gully'), +('location_type', '%_gully%', 'form_feature', 'tab_data', 'Location type:', 'Location_type - Id of the location type related to gully.'), +('macrodma_id', '%_gully%', 'form_feature', 'tab_data', 'Macroomzone Id:', 'Macroomzone Id'), +('macroexpl_id', '%_gully%', 'form_feature', 'tab_data', 'Macroexploitation:', 'macroexploitation - Identifier of the macroexploitation. It is filled automatically depending on the exploitation'), +('macrominsector_id', '%_gully%', 'form_feature', 'tab_data', 'Macrominsector id:', 'Macrominsector id:'), +('macrosector_id', '%_gully%', 'form_feature', 'tab_data', 'Macrosector id:', 'Macrosector id:'), +('matcat_id', '%_gully%', 'form_feature', 'tab_data', 'Material:', 'matcat_id - Material of the element. It cannot be filled in. The one with the matcat_id field of the corresponding catalog is used'), +('minsector_id', '%_gully%', 'form_feature', 'tab_data', 'Minsector id:', 'Minsector id:'), +('model_id', '%_gully%', 'form_feature', 'tab_data', 'Model id:', 'Model id:'), +('muni_id', '%_gully%', 'form_feature', 'tab_data', 'Municipality id:', 'muni_id - Municipality to which the element belongs. If the configuration is not modified, the program automatically selects it based on the geometry'), +('num_value', '%_gully%', 'form_feature', 'tab_data', 'Number value:', 'Number value'), +('observ', '%_gully%', 'form_feature', 'tab_data', 'Observation:', 'observ - Optional field to add observations about the element'), +('odorflap', '%_gully%', 'form_feature', 'tab_data', 'Odorflap:', 'Odorflap:'), +('omzone_id', '%_gully%', 'form_feature', 'tab_data', 'Omzone:', 'Omzone_id'), +('ownercat_id', '%_gully%', 'form_feature', 'tab_data', 'Ownercat id:', 'Ownercat id:'), +('pjoint_id', '%_gully%', 'form_feature', 'tab_data', 'Pjoint id:', 'Pjoint id:'), +('pjoint_type', '%_gully%', 'form_feature', 'tab_data', 'Pjoint type:', 'Pjoint type:'), +('placement_type', '%_gully%', 'form_feature', 'tab_data', 'Placement type:', 'Placement type:'), +('postcode', '%_gully%', 'form_feature', 'tab_data', 'Postcode:', 'Postcode:'), +('postcomplement', '%_gully%', 'form_feature', 'tab_data', 'Optional complement of the street number:', 'postcomplement - Optional complement of the street number'), +('postcomplement2', '%_gully%', 'form_feature', 'tab_data', 'Optional complement of the second street number:', 'postcomplement2 - Optional complement of the second street number'), +('postnumber', '%_gully%', 'form_feature', 'tab_data', 'Street number:', 'postnumber - Street number'), +('postnumber2', '%_gully%', 'form_feature', 'tab_data', 'Postnumber2:', 'Postnumber2:'), +('province_id', '%_gully%', 'form_feature', 'tab_data', 'Province:', 'Province:'), +('publish', '%_gully%', 'form_feature', 'tab_data', 'Publish:', 'Publish:'), +('region_id', '%_gully%', 'form_feature', 'tab_data', 'Region:', 'Region:'), +('rotation', '%_gully%', 'form_feature', 'tab_data', 'Rotation:', 'rotation - Field to use in order to rotate the symbology of the GIS canvas'), +('sandbox', '%_gully%', 'form_feature', 'tab_data', 'Sandbox:', 'Sandbox:'), +('sector_id', '%_gully%', 'form_feature', 'tab_data', 'Sector Id:', 'Sector_id - Hydraulic sector identifier related to the primary key of sector table'), +('siphon', '%_gully%', 'form_feature', 'tab_data', 'Siphon:', 'Siphon:'), +('siphon_type', '%_gully%', 'form_feature', 'tab_data', 'Siphon type:', 'Siphon type:'), +('soilcat_id', '%_gully%', 'form_feature', 'tab_data', 'Soilcat id:', 'Soilcat_id - Id of the soil related to the gully.'), +('state', '%_gully%', 'form_feature', 'tab_data', 'State:', 'state - State of the element. To choose between the 3 types of states available'), +('state_type', '%_gully%', 'form_feature', 'tab_data', 'State type:', 'State type:'), +('streetname', '%_gully%', 'form_feature', 'tab_data', 'Street:', 'streetname - Street identifier.'), +('streetname2', '%_gully%', 'form_feature', 'tab_data', 'Streetname2:', 'Streetname2:'), +('svg', '%_gully%', 'form_feature', 'tab_data', 'Svg:', 'Svg:'), +('top_elev', '%_gully%', 'form_feature', 'tab_data', 'Top elevation:', 'top_elev - Elevation of the gully in ft or m.'), +('tstamp', '%_gully%', 'form_feature', 'tab_data', 'Insert tstamp:', 'tstamp - Fecha de inserción del elemento a la base de datos'), +('uncertain', '%_gully%', 'form_feature', 'tab_data', 'Uncertain:', 'Uncertain:'), +('units', '%_gully%', 'form_feature', 'tab_data', 'Units:', 'Units:'), +('units_placement', '%_gully%', 'form_feature', 'tab_data', 'Units placement:', 'Units placement:'), +('verified', '%_gully%', 'form_feature', 'tab_data', 'Verified:', 'Verified:'), +('workcat_id', '%_gully%', 'form_feature', 'tab_data', 'Workcat Id:', 'Workcat_id - Id of the construction work related to gully.'), +('workcat_id_end', '%_gully%', 'form_feature', 'tab_data', 'Workcat Id end:', 'Workcat_id_end - Id of the end of construction work.'), +('workcat_id_plan', '%_gully%', 'form_feature', 'tab_data', 'Workcat id plan:', 'Workcat id plan:'), +('ymax', '%_gully%', 'form_feature', 'tab_data', 'Ymax:', 'Ymax:'), +('macroomzone_id', '%_link%', 'form_feature', 'tab_data', 'Macroomzone Id:', 'Macroomzone Id'), +('omzone_id', '%_link%', 'form_feature', 'tab_data', 'Omzone Id:', 'Omzone Id'), +('omzone_name', '%_link%', 'form_feature', 'tab_data', 'Omzone name:', 'Omzone name:'), +('y1', '%_link%', 'form_feature', 'tab_data', 'Y1:', 'Y1:'), +('y2', '%_link%', 'form_feature', 'tab_data', 'Y2:', 'Y2:'), +('date_to', '%_link%', 'form_feature', 'tab_documents', 'Date to:', 'Date to:'), +('bottom_channel', '%_node%', 'form_feature', 'tab_data', 'Bottom channel:', 'Bottom channel'), +('bottom_mat', '%_node%', 'form_feature', 'tab_data', 'Bottom mat:', 'Bottom mat:'), +('chamber_param_1', '%_node%', 'form_feature', 'tab_data', 'Chamber param 1:', 'Chamber param_1'), +('chamber_param_2', '%_node%', 'form_feature', 'tab_data', 'Chamber param 2:', 'Chamber param_2'), +('cirmanhole_param_1', '%_node%', 'form_feature', 'tab_data', 'Cmanhole param 1:', 'Cmanhole param_1'), +('cirmanhole_param_2', '%_node%', 'form_feature', 'tab_data', 'Cmanhole param 2:', 'Cmanhole param_2'), +('cover', '%_node%', 'form_feature', 'tab_data', 'Cover:', 'Cover:'), +('custom_area', '%_node%', 'form_feature', 'tab_data', 'Custom area:', 'Custom area:'), +('custom_elev', '%_node%', 'form_feature', 'tab_data', 'Custom elev:', 'Custom elev:'), +('custom_ymax', '%_node%', 'form_feature', 'tab_data', 'Custom ymax:', 'Custom_ymax'), +('dwfzone_id', '%_node%', 'form_feature', 'tab_data', 'Dwfzone', 'Dwfzone'), +('efficiency', '%_node%', 'form_feature', 'tab_data', 'Efficiency:', 'Efficiency:'), +('elev', '%_node%', 'form_feature', 'tab_data', 'Elev:', 'Elev:'), +('groove', '%_node%', 'form_feature', 'tab_data', 'Groove:', 'Groove:'), +('groove_height', '%_node%', 'form_feature', 'tab_data', 'Groove height:', 'Groove height:'), +('groove_length', '%_node%', 'form_feature', 'tab_data', 'Groove length:', 'Groove length:'), +('gullycat2_id', '%_node%', 'form_feature', 'tab_data', 'Gullycat2 id:', 'Gullycat2 id:'), +('gullycat_id', '%_node%', 'form_feature', 'tab_data', 'Gullycat id:', 'Gullycat id:'), +('inlet', '%_node%', 'form_feature', 'tab_data', 'Inlet:', 'Inlet'), +('inlet_medium', '%_node%', 'form_feature', 'tab_data', 'Inlet medium:', 'Inlet medium:'), +('label_rotation', '%_node%', 'form_feature', 'tab_data', 'Label rotation:', 'Label rotation:'), +('macrodma_id', '%_node%', 'form_feature', 'tab_data', 'Macroomzone Id:', 'Macroomzone Id'), +('manhole_code', '%_node%', 'form_feature', 'tab_data', 'Manhole code:', 'Manhole code:'), +('matcat_id', '%_node%', 'form_feature', 'tab_data', 'Matcat id:', 'Matcat id:'), +('min_height', '%_node%', 'form_feature', 'tab_data', 'Min height:', 'Min height:'), +('omzone_id', '%_node%', 'form_feature', 'tab_data', 'Omzone:', 'Omzone_id'), +('outfall_medium', '%_node%', 'form_feature', 'tab_data', 'Outfall medium:', 'Outfall medium:'), +('prot_surface', '%_node%', 'form_feature', 'tab_data', 'Surface protector:', 'prot_surface - Information whether exists the surface protector.'), +('recmanhole_param_1', '%_node%', 'form_feature', 'tab_data', 'Rect. mhole param 1:', 'Rect. mhole param_1'), +('recmanhole_param_2', '%_node%', 'form_feature', 'tab_data', 'Rect. mhole param 2:', 'Rect. mhole param_2'), +('register_param_1', '%_node%', 'form_feature', 'tab_data', 'Register param 1:', 'Register param_1'), +('register_param_2', '%_node%', 'form_feature', 'tab_data', 'Register param 2:', 'Register param_2'), +('sander_depth', '%_node%', 'form_feature', 'tab_data', 'Sander depth:', 'Sander depth:'), +('served_hydrometer', '%_node%', 'form_feature', 'tab_data', 'Served hydrometer:', 'Served hydrometer:'), +('sewstorage_param_1', '%_node%', 'form_feature', 'tab_data', 'Sstorage param 1:', 'Sstorage param_1'), +('sewstorage_param_2', '%_node%', 'form_feature', 'tab_data', 'Sstorage param 1:', 'Sstorage param_1'), +('siphon', '%_node%', 'form_feature', 'tab_data', 'Siphon:', 'Siphon:'), +('slope', '%_node%', 'form_feature', 'tab_data', 'Slope:', 'Slope:'), +('sludge_disposition', '%_node%', 'form_feature', 'tab_data', 'Sludge disposition:', 'Sludge disposition:'), +('sludge_treatment', '%_node%', 'form_feature', 'tab_data', 'Sludge treatment:', 'Sludge treatment:'), +('step_fe', '%_node%', 'form_feature', 'tab_data', 'Step fe:', 'Step fe:'), +('step_pp', '%_node%', 'form_feature', 'tab_data', 'Step pp:', 'Step pp:'), +('step_replace', '%_node%', 'form_feature', 'tab_data', 'Step replace:', 'Step replace:'), +('streetname', '%_node%', 'form_feature', 'tab_data', 'Streetname:', 'Streetname:'), +('streetname2', '%_node%', 'form_feature', 'tab_data', 'Streetname2:', 'Streetname2:'), +('sys_elev', '%_node%', 'form_feature', 'tab_data', 'Sys elev:', 'Sys elev:'), +('sys_top_elev', '%_node%', 'form_feature', 'tab_data', 'Sys top elev:', 'Sys top elev:'), +('sys_ymax', '%_node%', 'form_feature', 'tab_data', 'Sys ymax:', 'Sys ymax:'), +('treatment_type', '%_node%', 'form_feature', 'tab_data', 'Treatment type:', 'Treatment type:'), +('uncertain', '%_node%', 'form_feature', 'tab_data', 'Uncertain:', 'Uncertain:'), +('unconnected', '%_node%', 'form_feature', 'tab_data', 'Unconnected:', 'Unconnected:'), +('units', '%_node%', 'form_feature', 'tab_data', 'Units:', 'Units:'), +('units_placement', '%_node%', 'form_feature', 'tab_data', 'Units placement:', 'Units placement:'), +('weir_param_1', '%_node%', 'form_feature', 'tab_data', 'Weir param 1:', 'Weir param_1'), +('weir_param_2', '%_node%', 'form_feature', 'tab_data', 'Weir param 2:', 'Weir param_2'), +('wjump_code', '%_node%', 'form_feature', 'tab_data', 'Wjump code:', 'Wjump code:'), +('wwtp_code', '%_node%', 'form_feature', 'tab_data', 'Wwtp code:', 'Wwtp code:'), +('wwtp_function', '%_node%', 'form_feature', 'tab_data', 'Wwtp function:', 'Wwtp function:'), +('wwtp_type', '%_node%', 'form_feature', 'tab_data', 'Wwtp type:', 'Wwtp type:'), +('xyz_date', '%_node%', 'form_feature', 'tab_data', 'Xyz date:', 'Xyz date:'), +('ymax', '%_node%', 'form_feature', 'tab_data', 'Ymax:', 'Ymax:'), +('adate', '%_arc%', 'form_feature', 'tab_data', 'Adate:', 'Adate:'), +('adescript', '%_arc%', 'form_feature', 'tab_data', 'Adescript:', 'Adescript:'), +('annotation', '%_arc%', 'form_feature', 'tab_data', 'Annotation:', 'annotation - Annotations related to arc. Additional information'), +('arc_id', '%_arc%', 'form_feature', 'tab_data', 'Arc Id:', 'Arc_id'), +('arc_type', '%_arc%', 'form_feature', 'tab_data', 'Arc type:', 'cat_arctype_id - Type of arc. It is auto-populated based on the arccat_id'), +('arccat_id', '%_arc%', 'form_feature', 'tab_data', 'Arccat Id:', 'Arccat_id - To be selected from the catalog of arcs. It is independent of the type of arch'), +('asset_id', '%_arc%', 'form_feature', 'tab_data', 'Asset id:', 'Asset id:'), +('brand_id', '%_arc%', 'form_feature', 'tab_data', 'Brand:', 'Brand:'), +('builtdate', '%_arc%', 'form_feature', 'tab_data', 'Builtdate:', 'Builtdate:'), +('cat_dr', '%_arc%', 'form_feature', 'tab_data', 'Cat dr:', 'Cat dr:'), +('category_type', '%_arc%', 'form_feature', 'tab_data', 'Category type:', 'Category type:'), +('code', '%_arc%', 'form_feature', 'tab_data', 'Code:', 'code - Code previously used by the company. This will be used in many Giswater tools. If left empty, it will be filled with the element''s id'), +('comment', '%_arc%', 'form_feature', 'tab_data', 'Comment:', 'comment - Optional field to add comments about the element'), +('custom_length', '%_arc%', 'form_feature', 'tab_data', 'Custom length:', 'Custom length:'), +('descript', '%_arc%', 'form_feature', 'tab_data', 'Descript:', 'descript - Field to store additional information about the feature.'), +('district_id', '%_arc%', 'form_feature', 'tab_data', 'District:', 'district_id - Identifier of the neighborhood with which the element is linked. To choose from those available in the drop-down (it is filtered according to the selected municipality)'), +('dma_id', '%_arc%', 'form_feature', 'tab_data', 'Dma', 'Dma'), +('enddate', '%_arc%', 'form_feature', 'tab_data', 'Enddate:', 'enddate - End date of the element. It will only be filled in if the element is in a deregistration state.'), +('epa_type', '%_arc%', 'form_feature', 'tab_data', 'Epa type:', 'Epa type:'), +('expl_id', '%_arc%', 'form_feature', 'tab_data', 'Exploitation:', 'Exploitation:'), +('expl_id2', '%_arc%', 'form_feature', 'tab_data', 'Exploitation 2:', 'expl_id - Exploitation to which the element belongs. If the configuration is not changed, the program automatically selects it based on the geometry'), +('expl_visibility', '%_arc%', 'form_feature', 'tab_data', 'Expl id visibility:', 'Expl_id visibility'), +('fluid_type', '%_arc%', 'form_feature', 'tab_data', 'Fluid type:', 'Fluid type:'), +('function_type', '%_arc%', 'form_feature', 'tab_data', 'Function type:', 'function_type - Type of function to choose from the user-customized dropdown in the man_type_function table'), +('gis_length', '%_arc%', 'form_feature', 'tab_data', 'Gis length:', 'Gis length:'), +('inventory', '%_arc%', 'form_feature', 'tab_data', 'Inventory:', 'Inventory:'), +('label', '%_arc%', 'form_feature', 'tab_data', 'Catalog label:', 'label - Label from the catalog of arcs, therefore it will not be editable in the form'), +('label_quadrant', '%_arc%', 'form_feature', 'tab_data', 'Label quadrant:', 'Label quadrant:'), +('label_rotation', '%_arc%', 'form_feature', 'tab_data', 'Label rotation:', 'label_rotation - Angle of rotation of the label'), +('label_x', '%_arc%', 'form_feature', 'tab_data', 'Label x:', 'label_x - X coordinate of the label''s location'), +('label_y', '%_arc%', 'form_feature', 'tab_data', 'Label y:', 'label_y - Y coordinate of the label''s location'), +('lastupdate', '%_arc%', 'form_feature', 'tab_data', 'Last update:', 'lastupdate - Last time this element was updated'), +('lastupdate_user', '%_arc%', 'form_feature', 'tab_data', 'Last update user:', 'Last update user:'), +('link', '%_arc%', 'form_feature', 'tab_data', 'Link:', 'link - URL of the link that will open when clicking the button in the form bar. It must be edited from the database. link_path (from type tables) + link is concatenated'), +('location_type', '%_arc%', 'form_feature', 'tab_data', 'Location type:', 'Location type:'), +('macroexpl_id', '%_arc%', 'form_feature', 'tab_data', 'Macroexploitation:', 'Macroexploitation:'), +('macrominsector_id', '%_arc%', 'form_feature', 'tab_data', 'Macrominsector id:', 'Macrominsector id:'), +('macrosector_id', '%_arc%', 'form_feature', 'tab_data', 'Macrosector:', 'Macrosector'), +('minsector_id', '%_arc%', 'form_feature', 'tab_data', 'Minsector id:', 'Minsector id:'), +('model_id', '%_arc%', 'form_feature', 'tab_data', 'Model:', 'Model:'), +('muni_id', '%_arc%', 'form_feature', 'tab_data', 'Muni id:', 'Muni id:'), +('node_1', '%_arc%', 'form_feature', 'tab_data', 'Node 1:', 'Node 1:'), +('node_2', '%_arc%', 'form_feature', 'tab_data', 'Node 2:', 'node_2 - Node located at the end of the arc'), +('num_value', '%_arc%', 'form_feature', 'tab_data', 'Num value:', 'Num value:'), +('observ', '%_arc%', 'form_feature', 'tab_data', 'Observation:', 'observ - Optional field to add observations about the element'), +('ownercat_id', '%_arc%', 'form_feature', 'tab_data', 'Ownercat id:', 'Ownercat id:'), +('parent_id', '%_arc%', 'form_feature', 'tab_data', 'Parent id:', 'Parent id:'), +('pavcat_id', '%_arc%', 'form_feature', 'tab_data', 'Pavcat id:', 'Pavcat id:'), +('postcode', '%_arc%', 'form_feature', 'tab_data', 'Postcode:', 'postcode - Postal code of the municipality'), +('postcomplement', '%_arc%', 'form_feature', 'tab_data', 'Optional complement of the street number:', 'postcomplement - Optional complement of the street number'), +('postcomplement2', '%_arc%', 'form_feature', 'tab_data', 'Optional complement of the second street number:', 'postcomplement2 - Optional complement of the second street number'), +('postnumber', '%_arc%', 'form_feature', 'tab_data', 'Street number:', 'postnumber - Street number'), +('postnumber2', '%_arc%', 'form_feature', 'tab_data', 'Second street number:', 'postnumber2 - Second street number'), +('province_id', '%_arc%', 'form_feature', 'tab_data', 'Province:', 'Province:'), +('publish', '%_arc%', 'form_feature', 'tab_data', 'Publish:', 'publish - To set if the element is published or should be'), +('region_id', '%_arc%', 'form_feature', 'tab_data', 'Region:', 'Region:'), +('sector_id', '%_arc%', 'form_feature', 'tab_data', 'Sector Id:', 'Sector_id - Hydraulic sector identifier related to the primary key of sector table'), +('serial_number', '%_arc%', 'form_feature', 'tab_data', 'Serial number:', 'Serial number:'), +('soilcat_id', '%_arc%', 'form_feature', 'tab_data', 'Soilcat id:', 'Soilcat id:'), +('state', '%_arc%', 'form_feature', 'tab_data', 'State:', 'state - Domain value of arc''s state (on service, planified, obsolete)'), +('state_type', '%_arc%', 'form_feature', 'tab_data', 'State type:', 'state_type - The state type of the element. It allows to obtain more detail of the state. To select from those available depending on the chosen state'), +('tstamp', '%_arc%', 'form_feature', 'tab_data', 'Insert tstamp:', 'tstamp - Fecha de inserción del elemento a la base de datos'), +('verified', '%_arc%', 'form_feature', 'tab_data', 'Verified:', 'Verified:'), +('workcat_id', '%_arc%', 'form_feature', 'tab_data', 'Workcat Id:', 'Workcat_id - Related to the catalog of work files (cat_work). File that registers the element'), +('workcat_id_end', '%_arc%', 'form_feature', 'tab_data', 'Workcat Id end:', 'Workcat_id_end - Id of the end of construction work.'), +('workcat_id_plan', '%_arc%', 'form_feature', 'tab_data', 'Workcat Id plan:', 'Workcat_id_plan - Item planning record'), +('access_type', '%_connec%', 'form_feature', 'tab_data', 'Access type:', 'Access type:'), +('accessibility', '%_connec%', 'form_feature', 'tab_data', 'Accessibility:', 'accessibility - Acceso al elemento'), +('adate', '%_connec%', 'form_feature', 'tab_data', 'Adate:', 'Adate:'), +('adescript', '%_connec%', 'form_feature', 'tab_data', 'Adescript:', 'Adescript:'), +('annotation', '%_connec%', 'form_feature', 'tab_data', 'Annotation:', 'annotation - Annotations related to connec. Additional information'), +('arc_id', '%_connec%', 'form_feature', 'tab_data', 'Arc Id:', 'Arc identifier'), +('asset_id', '%_connec%', 'form_feature', 'tab_data', 'Asset id:', 'Asset id:'), +('builtdate', '%_connec%', 'form_feature', 'tab_data', 'Builtdate:', 'Builtdate:'), +('category_type', '%_connec%', 'form_feature', 'tab_data', 'Category type:', 'Category type:'), +('code', '%_connec%', 'form_feature', 'tab_data', 'Code:', 'Code:'), +('comment', '%_connec%', 'form_feature', 'tab_data', 'Comment:', 'comment - Optional field to add comments about the element'), +('connec_id', '%_connec%', 'form_feature', 'tab_data', 'Connec Id:', 'Connec_id - Identifier of the connec. It is not necessary to enter it, it is an automatic serial'), +('connec_length', '%_connec%', 'form_feature', 'tab_data', 'Connec length:', 'connec_length - Length of the connection'), +('connec_type', '%_connec%', 'form_feature', 'tab_data', 'Connec type:', 'Connec type:'), +('conneccat_id', '%_connec%', 'form_feature', 'tab_data', 'Conneccat id:', 'Conneccat id:'), +('customer_code', '%_connec%', 'form_feature', 'tab_data', 'Customer code:', 'customer_code - Account code'), +('demand', '%_connec%', 'form_feature', 'tab_data', 'Demand:', 'Demand:'), +('descript', '%_connec%', 'form_feature', 'tab_data', 'Descript:', 'Descript:'), +('district_id', '%_connec%', 'form_feature', 'tab_data', 'District:', 'district_id - Identifier of the neighborhood with which the element is linked. To choose from those available in the drop-down (it is filtered according to the selected municipality)'), +('dma_id', '%_connec%', 'form_feature', 'tab_data', 'Dma', 'Dma'), +('enddate', '%_connec%', 'form_feature', 'tab_data', 'Enddate:', 'Enddate'), +('expl_id', '%_connec%', 'form_feature', 'tab_data', 'Exploitation Id:', 'Expl_id - Exploitation to which the element belongs. If the configuration is not changed, the program automatically selects it based on the geometry'), +('expl_id2', '%_connec%', 'form_feature', 'tab_data', 'Exploitation 2:', 'Exploitation 2:'), +('expl_visibility', '%_connec%', 'form_feature', 'tab_data', 'Expl id visibility:', 'Expl_id visibility'), +('feature_id', '%_connec%', 'form_feature', 'tab_data', 'Feature id:', 'Feature id:'), +('featurecat_id', '%_connec%', 'form_feature', 'tab_data', 'Featurecat Id:', 'Featurecat_id - Type of feature to which the connec is connected'), +('fluid_type', '%_connec%', 'form_feature', 'tab_data', 'Fluid type:', 'fluid_type - Tipo de fluido a escoger en el desplegable personalizado por el usuario en la tabla man_type_fluid'), +('function_type', '%_connec%', 'form_feature', 'tab_data', 'Function type:', 'Function type:'), +('inventory', '%_connec%', 'form_feature', 'tab_data', 'Inventory:', 'Inventory:'), +('label', '%_connec%', 'form_feature', 'tab_data', 'Catalog label:', 'label - Label from the catalog of connecs, therefore it will not be editable in the form'), +('label_quadrant', '%_connec%', 'form_feature', 'tab_data', 'Label quadrant:', 'Label quadrant:'), +('label_rotation', '%_connec%', 'form_feature', 'tab_data', 'Label rotation:', 'label_rotation - Angle of rotation of the label'), +('label_x', '%_connec%', 'form_feature', 'tab_data', 'Label x:', 'Label x:'), +('label_y', '%_connec%', 'form_feature', 'tab_data', 'Label y:', 'Label y:'), +('lastupdate', '%_connec%', 'form_feature', 'tab_data', 'Last update:', 'lastupdate - Last time this element was updated'), +('lastupdate_user', '%_connec%', 'form_feature', 'tab_data', 'Last update user:', 'lastupdate_user - Last user who updated this item'), +('link', '%_connec%', 'form_feature', 'tab_data', 'Link:', 'Link:'), +('location_type', '%_connec%', 'form_feature', 'tab_data', 'Location type:', 'Location type:'), +('macrodma_id', '%_connec%', 'form_feature', 'tab_data', 'Macrodma id:', 'Macrodma id:'), +('macroexpl_id', '%_connec%', 'form_feature', 'tab_data', 'Macroexploitation:', 'Macroexploitation:'), +('macrominsector_id', '%_connec%', 'form_feature', 'tab_data', 'Macrominsector id:', 'Macrominsector id:'), +('macrosector_id', '%_connec%', 'form_feature', 'tab_data', 'Macrosector id:', 'Macrosector id:'), +('minsector_id', '%_connec%', 'form_feature', 'tab_data', 'Minsector id:', 'Minsector id:'), +('muni_id', '%_connec%', 'form_feature', 'tab_data', 'Muni id:', 'Muni id:'), +('n_hydrometer', '%_connec%', 'form_feature', 'tab_data', 'N hydrometer:', 'N hydrometer:'), +('num_value', '%_connec%', 'form_feature', 'tab_data', 'Number value:', 'Number value'), +('observ', '%_connec%', 'form_feature', 'tab_data', 'Observation:', 'observ - Observations related to connect. Additional information'), +('ownercat_id', '%_connec%', 'form_feature', 'tab_data', 'Owner:', 'Ownercat_id - Id of the owner related to connect.'), +('pjoint_id', '%_connec%', 'form_feature', 'tab_data', 'Junction point id:', 'pjoint_id - Identifier of the connection point with the network'), +('pjoint_type', '%_connec%', 'form_feature', 'tab_data', 'Pjoint type:', 'Pjoint type:'), +('placement_type', '%_connec%', 'form_feature', 'tab_data', 'Placement Type:', 'Placement Type'), +('plot_code', '%_connec%', 'form_feature', 'tab_data', 'Plot code:', 'Plot code:'), +('postcode', '%_connec%', 'form_feature', 'tab_data', 'Postcode:', 'postcode - Postal code of the municipality'), +('postcomplement', '%_connec%', 'form_feature', 'tab_data', 'Optional complement of the street number:', 'postcomplement - Optional complement of the street number'), +('postcomplement2', '%_connec%', 'form_feature', 'tab_data', 'Postcomplement2:', 'Postcomplement2:'), +('postnumber', '%_connec%', 'form_feature', 'tab_data', 'Street number:', 'postnumber - Street number'), +('postnumber2', '%_connec%', 'form_feature', 'tab_data', 'Second street number:', 'postnumber2 - Second street number'), +('province_id', '%_connec%', 'form_feature', 'tab_data', 'Province:', 'Province:'), +('publish', '%_connec%', 'form_feature', 'tab_data', 'Publish:', 'publish - To set if the element is published or should be'), +('region_id', '%_connec%', 'form_feature', 'tab_data', 'Region:', 'Region:'), +('rotation', '%_connec%', 'form_feature', 'tab_data', 'Rotation:', 'Rotation:'), +('sector_id', '%_connec%', 'form_feature', 'tab_data', 'Sector Id:', 'Sector_id - Hydraulic sector identifier related to the primary key of sector table'), +('soilcat_id', '%_connec%', 'form_feature', 'tab_data', 'Soilcat id:', 'Soilcat_id - Id of the soil related to the connect.'), +('state', '%_connec%', 'form_feature', 'tab_data', 'State:', 'state - Domain value of connect''s state.'), +('state_type', '%_connec%', 'form_feature', 'tab_data', 'State type:', 'state_type - The state type of the element. It allows to obtain more detail of the state. To select from those available depending on the chosen state'), +('svg', '%_connec%', 'form_feature', 'tab_data', 'Svg:', 'svg - In case of using svg symbology, the path to the file containing the symbology is shown'), +('top_elev', '%_connec%', 'form_feature', 'tab_data', 'Top elevation:', 'top_elev - Elevation of the connec in ft or m.'), +('tstamp', '%_connec%', 'form_feature', 'tab_data', 'Insert tstamp:', 'tstamp - Fecha de inserción del elemento a la base de datos'), +('verified', '%_connec%', 'form_feature', 'tab_data', 'Verified:', 'Verified:'), +('workcat_id', '%_connec%', 'form_feature', 'tab_data', 'Workcat id:', 'Workcat id:'), +('workcat_id_end', '%_connec%', 'form_feature', 'tab_data', 'Workcat Id end:', 'Workcat_id_end - Id of the end of construction work.'), +('workcat_id_plan', '%_connec%', 'form_feature', 'tab_data', 'Workcat id plan:', 'Workcat id plan:'), +('brand_id', '%_element%', 'form_feature', 'tab_data', 'Brand:', 'Brand:'), +('builtdate', '%_element%', 'form_feature', 'tab_data', 'Built Date:', 'Built Date'), +('category_type', '%_element%', 'form_feature', 'tab_data', 'Category Type:', 'Category Type'), +('code', '%_element%', 'form_feature', 'tab_data', 'Code:', 'Code'), +('comment', '%_element%', 'form_feature', 'tab_data', 'Comments:', 'Comments'), +('elementcat_id', '%_element%', 'form_feature', 'tab_data', 'Element Catalog:', 'Element Catalog'), +('enddate', '%_element%', 'form_feature', 'tab_data', 'End Date:', 'End Date'), +('epa_type', '%_element%', 'form_feature', 'tab_data', 'EPA Type:', 'EPA Type'), +('expl_id', '%_element%', 'form_feature', 'tab_data', 'Exploitation Id:', 'Exploitation Id'), +('flwreg_length', '%_element%', 'form_feature', 'tab_data', 'Flwreg length:', 'Flwreg length:'), +('function_type', '%_element%', 'form_feature', 'tab_data', 'Function Type:', 'Function Type'), +('location_type', '%_element%', 'form_feature', 'tab_data', 'Location Type:', 'Location Type'), +('model_id', '%_element%', 'form_feature', 'tab_data', 'Model:', 'Model:'), +('node_id', '%_element%', 'form_feature', 'tab_data', 'Node id:', 'Node id:'), +('num_elements', '%_element%', 'form_feature', 'tab_data', 'Number of Elements:', 'Number of Elements'), +('observ', '%_element%', 'form_feature', 'tab_data', 'Observations:', 'Observations'), +('ownercat_id', '%_element%', 'form_feature', 'tab_data', 'Owner Catalog:', 'Owner Catalog'), +('rotation', '%_element%', 'form_feature', 'tab_data', 'Rotation:', 'Rotation'), +('sector_id', '%_element%', 'form_feature', 'tab_data', 'Sector Id:', 'Sector Id'), +('state', '%_element%', 'form_feature', 'tab_data', 'State:', 'State'), +('state_type', '%_element%', 'form_feature', 'tab_data', 'State Type:', 'State Type'), +('to_arc', '%_element%', 'form_feature', 'tab_data', 'To arc:', 'To arc:'), +('top_elev', '%_element%', 'form_feature', 'tab_data', 'Top Elevation:', 'Top Elevation'), +('workcat_id', '%_element%', 'form_feature', 'tab_data', 'Workcat Id:', 'Workcat Id'), +('workcat_id_end', '%_element%', 'form_feature', 'tab_data', 'Workcat Id End:', 'Workcat Id End'), +('btn_doc_delete', '%_element%', 'form_feature', 'tab_documents', NULL, 'Delete document'), +('btn_doc_insert', '%_element%', 'form_feature', 'tab_documents', NULL, 'Insert document'), +('btn_doc_new', '%_element%', 'form_feature', 'tab_documents', NULL, 'New document'), +('date_from', '%_element%', 'form_feature', 'tab_documents', 'Date from:', 'Date from:'), +('date_to', '%_element%', 'form_feature', 'tab_documents', 'Date to:', 'Date to:'), +('doc_name', '%_element%', 'form_feature', 'tab_documents', 'Doc id:', 'Doc id:'), +('doc_type', '%_element%', 'form_feature', 'tab_documents', 'Doc type:', 'Doc type:'), +('open_doc', '%_element%', 'form_feature', 'tab_documents', NULL, 'Open document'), +('tbl_element_x_arc', '%_element%', 'form_feature', 'tab_features', ':', ':'), +('tbl_element_x_connec', '%_element%', 'form_feature', 'tab_features', ':', ':'), +('tbl_element_x_link', '%_element%', 'form_feature', 'tab_features', ':', ':'), +('tbl_element_x_node', '%_element%', 'form_feature', 'tab_features', ':', ':'), +('annotation', '%_link%', 'form_feature', 'tab_data', 'Annotation:', 'annotation - Annotations related to link. Additional information'), +('builtdate', '%_link%', 'form_feature', 'tab_data', 'Builtdate:', 'builtdate - Date the element was added. In insertion of new elements the date of the day is shown'), +('comment', '%_link%', 'form_feature', 'tab_data', 'Comment:', 'Comment'), +('conneccat_id', '%_link%', 'form_feature', 'tab_data', 'Connecat Id:', 'Connecat_id - A seleccionar del catálogo de acometida. Es independiente del tipo de acometida'), +('depth1', '%_link%', 'form_feature', 'tab_data', 'Depth1:', 'Depth1:'), +('depth2', '%_link%', 'form_feature', 'tab_data', 'Depth2:', 'Depth2:'), +('descript', '%_link%', 'form_feature', 'tab_data', 'Descript:', 'Descript'), +('dma_name', '%_link%', 'form_feature', 'tab_data', 'Dma name:', 'Dma name:'), +('dqa_id', '%_link%', 'form_feature', 'tab_data', 'Dqa id:', 'Dqa id:'), +('dqa_name', '%_link%', 'form_feature', 'tab_data', 'Dqa name:', 'Dqa name:'), +('elevation1', '%_link%', 'form_feature', 'tab_data', 'Elevation1:', 'Elevation1:'), +('elevation2', '%_link%', 'form_feature', 'tab_data', 'Elevation2:', 'Elevation2:'), +('enddate', '%_link%', 'form_feature', 'tab_data', 'Enddate:', 'enddate - End date of the element. It will only be filled in if the element is in a deregistration state.'), +('exit_id', '%_link%', 'form_feature', 'tab_data', 'Exit Id:', 'Exit Id'), +('exit_type', '%_link%', 'form_feature', 'tab_data', 'Exit type:', 'Exit type'), +('expl_id', '%_link%', 'form_feature', 'tab_data', 'Exploitation Id:', 'Expl_id - Exploitation to which the element belongs. If the configuration is not changed, the program automatically selects it based on the geometry'), +('expl_visibility', '%_link%', 'form_feature', 'tab_data', 'Expl id visibility:', 'Expl_id visibility'), +('feature_id', '%_link%', 'form_feature', 'tab_data', 'Feature id:', 'Feature id:'), +('feature_type', '%_link%', 'form_feature', 'tab_data', 'Feature type:', 'Feature type'), +('fluid_type', '%_link%', 'form_feature', 'tab_data', 'Fluid type:', 'Fluid type:'), +('gis_length', '%_link%', 'form_feature', 'tab_data', 'Gis length:', 'Gis length'), +('is_operative', '%_link%', 'form_feature', 'tab_data', 'Is operative:', 'Is operative:'), +('link', '%_link%', 'form_feature', 'tab_data', 'Link:', 'Link'), +('link_id', '%_link%', 'form_feature', 'tab_data', 'Link Id:', 'Link Id'), +('link_type', '%_link%', 'form_feature', 'tab_data', 'Link Type:', 'Type of link. It is auto-populated based on the linkcat_id'), +('linkcat_id', '%_link%', 'form_feature', 'tab_data', 'Linkcat Id:', 'Linkcat_id - To be selected from the catalog of arcs. It is independent of the type of arch'), +('location_type', '%_link%', 'form_feature', 'tab_data', 'Location Type:', 'Location Type'), +('macrodqa_id', '%_link%', 'form_feature', 'tab_data', 'Macrodqa id:', 'Macrodqa id:'), +('macrosector_id', '%_link%', 'form_feature', 'tab_data', 'Macrosector id:', 'Macrosector id'), +('minsector_id', '%_link%', 'form_feature', 'tab_data', 'Minsector id:', 'Minsector id:'), +('num_value', '%_link%', 'form_feature', 'tab_data', 'Num Value:', 'Num Value'), +('observ', '%_link%', 'form_feature', 'tab_data', 'Observ:', 'Observ'), +('presszone_id', '%_link%', 'form_feature', 'tab_data', 'Presszone id:', 'Presszone id:'), +('presszone_name', '%_link%', 'form_feature', 'tab_data', 'Presszone name:', 'Presszone name:'), +('sector_id', '%_link%', 'form_feature', 'tab_data', 'Sector Id:', 'Sector_id - Sector identifier.'), +('sector_name', '%_link%', 'form_feature', 'tab_data', 'Sector name:', 'Sector name:'), +('state', '%_link%', 'form_feature', 'tab_data', 'State:', 'State:'), +('state_type', '%_link%', 'form_feature', 'tab_data', 'State type:', 'state_type - The state type of the element. It allows to obtain more detail of the state. To select from those available depending on the chosen state'), +('top_elev1', '%_link%', 'form_feature', 'tab_data', 'Top Elev 1:', 'Top Elev 1:'), +('top_elev2', '%_link%', 'form_feature', 'tab_data', 'Top elev 2:', 'Top elev 2:'), +('uncertain', '%_link%', 'form_feature', 'tab_data', 'Uncertain:', 'uncertain - To set if the element''s location is uncertain'), +('workcat_id', '%_link%', 'form_feature', 'tab_data', 'Workcat Id:', 'Workcat_id - Related to the catalog of work files (cat_work). File that registers the element'), +('workcat_id_end', '%_link%', 'form_feature', 'tab_data', 'Workcat Id end:', 'Workcat_id_end - Id of the end of construction work.'), +('btn_doc_delete', '%_link%', 'form_feature', 'tab_documents', NULL, 'Delete document'), +('btn_doc_insert', '%_link%', 'form_feature', 'tab_documents', NULL, 'Insert document'), +('btn_doc_new', '%_link%', 'form_feature', 'tab_documents', NULL, 'New document'), +('date_from', '%_link%', 'form_feature', 'tab_documents', 'Date from:', 'Date from:'), +('doc_name', '%_link%', 'form_feature', 'tab_documents', 'Doc id:', 'Doc id:'), +('doc_type', '%_link%', 'form_feature', 'tab_documents', 'Doc type:', 'Doc type:'), +('open_doc', '%_link%', 'form_feature', 'tab_documents', NULL, 'Open document'), +('btn_link', '%_link%', 'form_feature', 'tab_elements', NULL, 'Open link'), +('delete_element', '%_link%', 'form_feature', 'tab_elements', NULL, 'Delete element'), +('element_id', '%_link%', 'form_feature', 'tab_elements', 'Element id:', 'Element id'), +('insert_element', '%_link%', 'form_feature', 'tab_elements', NULL, 'Insert element'), +('new_element', '%_link%', 'form_feature', 'tab_elements', NULL, 'New element'), +('open_element', '%_link%', 'form_feature', 'tab_elements', NULL, 'Open element'), +('btn_new_visit', '%_link%', 'form_feature', 'tab_event', NULL, 'New visit'), +('btn_open_gallery', '%_link%', 'form_feature', 'tab_event', NULL, 'Open gallery'), +('btn_open_visit', '%_link%', 'form_feature', 'tab_event', NULL, 'Open visit'), +('btn_open_visit_doc', '%_link%', 'form_feature', 'tab_event', NULL, 'Open visit document'), +('btn_open_visit_event', '%_link%', 'form_feature', 'tab_event', NULL, 'Open visit event'), +('date_event_from', '%_link%', 'form_feature', 'tab_event', 'From:', 'From:'), +('date_event_to', '%_link%', 'form_feature', 'tab_event', 'To:', 'To:'), +('parameter_id', '%_link%', 'form_feature', 'tab_event', 'Parameter:', 'Parameter:'), +('parameter_type', '%_link%', 'form_feature', 'tab_event', 'Parameter type:', 'Parameter type:'), +('date_visit_from', '%_link%', 'form_feature', 'tab_visit', 'From:', 'From:'), +('date_visit_to', '%_link%', 'form_feature', 'tab_visit', 'To:', 'To:'), +('open_gallery', '%_link%', 'form_feature', 'tab_visit', NULL, 'Open gallery'), +('visit_class', '%_link%', 'form_feature', 'tab_visit', 'Visit class:', 'Visit class:'), +('access_type', '%_node%', 'form_feature', 'tab_data', 'Access type:', 'Access type:'), +('accessibility', '%_node%', 'form_feature', 'tab_data', 'Accessibility:', 'Accessibility'), +('adate', '%_node%', 'form_feature', 'tab_data', 'Adate:', 'Adate:'), +('adescript', '%_node%', 'form_feature', 'tab_data', 'Adescript:', 'Adescript:'), +('annotation', '%_node%', 'form_feature', 'tab_data', 'Annotation:', 'annotation - Annotations related to node. Additional information'), +('asset_id', '%_node%', 'form_feature', 'tab_data', 'Asset id:', 'Asset id:'), +('brand_id', '%_node%', 'form_feature', 'tab_data', 'Brand:', 'Brand:'), +('builtdate', '%_node%', 'form_feature', 'tab_data', 'Builtdate:', 'Builtdate:'), +('category_type', '%_node%', 'form_feature', 'tab_data', 'Category type:', 'Category_type - Id of the category type related to node.'), +('code', '%_node%', 'form_feature', 'tab_data', 'Code:', 'Code:'), +('comment', '%_node%', 'form_feature', 'tab_data', 'Comment:', 'Comment:'), +('custom_top_elev', '%_node%', 'form_feature', 'tab_data', 'Custom top elev:', 'Custom top elev:'), +('descript', '%_node%', 'form_feature', 'tab_data', 'Descript:', 'Descript:'), +('district_id', '%_node%', 'form_feature', 'tab_data', 'District:', 'District:'), +('dma_id', '%_node%', 'form_feature', 'tab_data', 'Dma', 'Dma'), +('enddate', '%_node%', 'form_feature', 'tab_data', 'Enddate:', 'Enddate:'), +('epa_type', '%_node%', 'form_feature', 'tab_data', 'Epa type:', 'epa_type - Type of node to use for the hydraulic model. It is not necessary to enter it, it is automatic depending on the node type.'), +('expl_id', '%_node%', 'form_feature', 'tab_data', 'Exploitation Id:', 'Exploitation Id'), +('expl_id2', '%_node%', 'form_feature', 'tab_data', 'Exploitation 2:', 'expl_id - Exploitation to which the element belongs. If the configuration is not changed, the program automatically selects it based on the geometry'), +('expl_visibility', '%_node%', 'form_feature', 'tab_data', 'Expl id visibility:', 'Expl_id visibility'), +('flowsetting', '%_node%', 'form_feature', 'tab_data', 'Flow Setting:', 'Flow Setting:'), +('fluid_type', '%_node%', 'form_feature', 'tab_data', 'Fluid type:', 'Fluid type:'), +('function_type', '%_node%', 'form_feature', 'tab_data', 'Function type:', 'Function type:'), +('height', '%_node%', 'form_feature', 'tab_data', 'Height:', 'Height:'), +('hemisphere', '%_node%', 'form_feature', 'tab_data', 'Hemisphere:', 'Hemisphere:'), +('inventory', '%_node%', 'form_feature', 'tab_data', 'Inventory:', 'Inventory:'), +('label', '%_node%', 'form_feature', 'tab_data', 'Catalog label:', 'Catalog label:'), +('label_quadrant', '%_node%', 'form_feature', 'tab_data', 'Label quadrant:', 'Label quadrant:'), +('label_x', '%_node%', 'form_feature', 'tab_data', 'Label x:', 'label_x - X coordinate of the label''s location'), +('label_y', '%_node%', 'form_feature', 'tab_data', 'Label y:', 'Label y:'), +('lastupdate', '%_node%', 'form_feature', 'tab_data', 'Last update:', 'Last update:'), +('lastupdate_user', '%_node%', 'form_feature', 'tab_data', 'Last update user:', 'Last update user:'), +('length', '%_node%', 'form_feature', 'tab_data', 'Length:', 'Length:'), +('link', '%_node%', 'form_feature', 'tab_data', 'Link:', 'link - Field to store link to information related to the node.'), +('location_type', '%_node%', 'form_feature', 'tab_data', 'Location type:', 'Location type:'), +('macroexpl_id', '%_node%', 'form_feature', 'tab_data', 'Macroexploitation:', 'Macroexploitation:'), +('macrominsector_id', '%_node%', 'form_feature', 'tab_data', 'Macrominsector id:', 'Macrominsector id:'), +('macrosector_id', '%_node%', 'form_feature', 'tab_data', 'Macrosector id:', 'Macrosector id:'), +('max_volume', '%_node%', 'form_feature', 'tab_data', 'Max volume:', 'Max volume'), +('maxflow', '%_node%', 'form_feature', 'tab_data', 'Maxflow:', 'Maxflow:'), +('minsector_id', '%_node%', 'form_feature', 'tab_data', 'Minsector id:', 'Minsector id:'), +('model_id', '%_node%', 'form_feature', 'tab_data', 'Model:', 'Model:'), +('muni_id', '%_node%', 'form_feature', 'tab_data', 'Muni id:', 'Muni id:'), +('name', '%_node%', 'form_feature', 'tab_data', 'Name:', 'name - Name of the element'), +('node_id', '%_node%', 'form_feature', 'tab_data', 'Node id:', 'Node id:'), +('node_type', '%_node%', 'form_feature', 'tab_data', 'Node type:', 'nodetype_id - Node type. It is automatically populated based on nodecat_id'), +('nodecat_id', '%_node%', 'form_feature', 'tab_data', 'Nodecat id:', 'Nodecat id:'), +('num_value', '%_node%', 'form_feature', 'tab_data', 'Number value:', 'Number value'), +('observ', '%_node%', 'form_feature', 'tab_data', 'Observ:', 'Observ:'), +('opsflow', '%_node%', 'form_feature', 'tab_data', 'Opsflow:', 'Opsflow:'), +('ownercat_id', '%_node%', 'form_feature', 'tab_data', 'Ownercat id:', 'Ownercat id:'), +('placement_type', '%_node%', 'form_feature', 'tab_data', 'Placement Type:', 'Placement Type'), +('postcode', '%_node%', 'form_feature', 'tab_data', 'Postcode:', 'Postcode:'), +('postcomplement', '%_node%', 'form_feature', 'tab_data', 'Postcomplement:', 'Postcomplement:'), +('postcomplement2', '%_node%', 'form_feature', 'tab_data', 'Postcomplement2:', 'Postcomplement2:'), +('postnumber', '%_node%', 'form_feature', 'tab_data', 'Postnumber:', 'Postnumber:'), +('postnumber2', '%_node%', 'form_feature', 'tab_data', 'Second street number:', 'postnumber2 - Second street number'), +('province_id', '%_node%', 'form_feature', 'tab_data', 'Province:', 'Province:'), +('publish', '%_node%', 'form_feature', 'tab_data', 'Publish:', 'Publish:'), +('region_id', '%_node%', 'form_feature', 'tab_data', 'Region:', 'Region:'), +('rotation', '%_node%', 'form_feature', 'tab_data', 'Rotation:', 'rotation - Field to use in order to rotate the symbology of the GIS canvas'), +('sector_id', '%_node%', 'form_feature', 'tab_data', 'Sector Id:', 'Sector_id'), +('serial_number', '%_node%', 'form_feature', 'tab_data', 'Serial number:', 'Serial number:'), +('soilcat_id', '%_node%', 'form_feature', 'tab_data', 'Soilcat id:', 'soilcat_id - Relacionado con el catalogo de suelos (cat_soil)'), +('state', '%_node%', 'form_feature', 'tab_data', 'State:', 'State:'), +('state_type', '%_node%', 'form_feature', 'tab_data', 'State type:', 'state_type - The state type of the element. It allows to obtain more detail of the state. To select from those available depending on the chosen state'), +('svg', '%_node%', 'form_feature', 'tab_data', 'Svg:', 'svg - In case of using svg symbology, the path to the file containing the symbology is shown'), +('top_elev', '%_node%', 'form_feature', 'tab_data', 'Top elev:', 'Top elev:'), +('util_volume', '%_node%', 'form_feature', 'tab_data', 'Util volume:', 'Util volume:'), +('verified', '%_node%', 'form_feature', 'tab_data', 'Verified:', 'Verified:'), +('width', '%_node%', 'form_feature', 'tab_data', 'Width:', 'width - Total width of the chamber'), +('workcat_id', '%_node%', 'form_feature', 'tab_data', 'Workcat Id:', 'Workcat_id - Id of the construction work related to node.'), +('workcat_id_end', '%_node%', 'form_feature', 'tab_data', 'Workcat id end:', 'Workcat id end:'), +('workcat_id_plan', '%_node%', 'form_feature', 'tab_data', 'Workcat Id plan:', 'Workcat_id_plan - Item planning record'), +('cat_arc_type', '%_arc%', 'form_feature', 'tab_data', 'Arc type:', 'Arc type:'), +('cat_dint', '%_arc%', 'form_feature', 'tab_data', 'Cat dint:', 'Cat dint:'), +('cat_dnom', '%_arc%', 'form_feature', 'tab_data', 'Nominal diameter:', 'cat_dnom - Nominal diameter of the element in mm. It cannot be refilled. The one with the dnom field in the corresponding catalog is used'), +('cat_matcat_id', '%_arc%', 'form_feature', 'tab_data', 'Cat matcat id:', 'Cat matcat id:'), +('cat_pnom', '%_arc%', 'form_feature', 'tab_data', 'Nominal pressure:', 'cat_pnom - Nominal pressure of the element in atm. It cannot be refilled. The one with the pnom field in the corresponding catalog is used'), +('conserv_state', '%_arc%', 'form_feature', 'tab_data', 'Conserv state:', 'Conserv state:'), +('datasource', '%_arc%', 'form_feature', 'tab_data', 'Datasource:', 'Datasource'), +('depth', '%_arc%', 'form_feature', 'tab_data', 'Depth:', 'Depth'), +('depth1', '%_arc%', 'form_feature', 'tab_data', 'Depth 1:', 'Depth 1'), +('depth2', '%_arc%', 'form_feature', 'tab_data', 'Depth 2:', 'Depth 2:'), +('dma_name', '%_arc%', 'form_feature', 'tab_data', 'Dma name:', 'Dma name:'), +('dma_style', '%_arc%', 'form_feature', 'tab_data', 'Dma color:', 'Dma color:'), +('dqa_id', '%_arc%', 'form_feature', 'tab_data', 'Dqa:', 'Dqa:'), +('dqa_name', '%_arc%', 'form_feature', 'tab_data', 'Dqa name:', 'Dqa name'), +('elevation1', '%_arc%', 'form_feature', 'tab_data', 'Elevation 1:', 'Elevation 1:'), +('elevation2', '%_arc%', 'form_feature', 'tab_data', 'Elevation2:', 'Elevation2:'), +('flow_avg', '%_arc%', 'form_feature', 'tab_data', 'Flow avg:', 'Flow avg:'), +('flow_max', '%_arc%', 'form_feature', 'tab_data', 'Flow max:', 'Flow max:'), +('flow_min', '%_arc%', 'form_feature', 'tab_data', 'Flow min:', 'Flow min:'), +('is_scadamap', '%_arc%', 'form_feature', 'tab_data', 'Is scadamap:', 'Is scadamap:'), +('lock_level', '%_arc%', 'form_feature', 'tab_data', 'Lock level:', 'Lock level:'), +('macrodma_id', '%_arc%', 'form_feature', 'tab_data', 'Macrodma Id:', 'Macrodma_id - Identifier of the macrodma. Auto-populates based on dma'), +('macrodqa_id', '%_arc%', 'form_feature', 'tab_data', 'Macrodqa id:', 'Macrodqa id:'), +('nodetype_1', '%_arc%', 'form_feature', 'tab_data', 'Node type 1:', 'nodetype_1 - Type of node 1'), +('nodetype_2', '%_arc%', 'form_feature', 'tab_data', 'Node type 2:', 'nodetype_2 - Type of node 2'), +('om_state', '%_arc%', 'form_feature', 'tab_data', 'Om state:', 'Om state:'), +('pipe_param_1', '%_arc%', 'form_feature', 'tab_data', 'Pipe param 1:', 'Pipe param_1'), +('presszone_id', '%_arc%', 'form_feature', 'tab_data', 'Presszone:', 'Presszone:'), +('presszone_name', '%_arc%', 'form_feature', 'tab_data', 'Presszone name:', 'Presszone name:'), +('presszone_style', '%_arc%', 'form_feature', 'tab_data', 'Pressure zone color:', 'Presszone color'), +('sector_name', '%_arc%', 'form_feature', 'tab_data', 'Sector name:', 'Sector name'), +('staticpressure1', '%_arc%', 'form_feature', 'tab_data', 'Staticpressure1:', 'Staticpressure1:'), +('staticpressure2', '%_arc%', 'form_feature', 'tab_data', 'Staticpressure2:', 'Staticpressure2:'), +('streetaxis2_id', '%_arc%', 'form_feature', 'tab_data', 'Streetname2:', 'streetname2'), +('streetaxis_id', '%_arc%', 'form_feature', 'tab_data', 'Streetname:', 'streetname'), +('supplyzone_id', '%_arc%', 'form_feature', 'tab_data', 'Supplyzone id:', 'Supplyzone id:'), +('sys_type', '%_arc%', 'form_feature', 'tab_data', 'Sys type:', 'Sys type:'), +('vel_avg', '%_arc%', 'form_feature', 'tab_data', 'Average velocity:', 'Average velocity:'), +('vel_max', '%_arc%', 'form_feature', 'tab_data', 'Vel max:', 'Vel max:'), +('vel_min', '%_arc%', 'form_feature', 'tab_data', 'Vel min:', 'Vel min:'), +('arq_patrimony', '%_connec%', 'form_feature', 'tab_data', 'Arq patrimony:', 'Arq patrimony'), +('block_code', '%_connec%', 'form_feature', 'tab_data', 'Block code:', 'Block code:'), +('brand', '%_connec%', 'form_feature', 'tab_data', 'Brand:', 'Brand:'), +('brand_id', '%_connec%', 'form_feature', 'tab_data', 'Brand:', 'Brand:'), +('cat_connec_type', '%_connec%', 'form_feature', 'tab_data', 'Connec type:', 'connec_type'), +('cat_dint', '%_connec%', 'form_feature', 'tab_data', 'Cat dint:', 'Cat dint:'), +('cat_dnom', '%_connec%', 'form_feature', 'tab_data', 'Nominal diameter:', 'cat_dnom - Nominal diameter of the element in mm. It cannot be refilled. The one with the dnom field in the corresponding catalog is used'), +('cat_matcat_id', '%_connec%', 'form_feature', 'tab_data', 'Cat matcat id:', 'Cat matcat id:'), +('cat_pnom', '%_connec%', 'form_feature', 'tab_data', 'Cat pnom:', 'Cat pnom:'), +('cat_valve', '%_connec%', 'form_feature', 'tab_data', 'Cat valve:', 'Cat valve:'), +('chlorinator', '%_connec%', 'form_feature', 'tab_data', 'Chlorinator:', 'chlorinator - Chlorination'), +('com_state', '%_connec%', 'form_feature', 'tab_data', 'Communication state:', 'Communication state'), +('conserv_state', '%_connec%', 'form_feature', 'tab_data', 'Conserv state:', 'Conserv state:'), +('container_number', '%_connec%', 'form_feature', 'tab_data', 'Container number:', 'container_number - Number of water containers'), +('crmzone_id', '%_connec%', 'form_feature', 'tab_data', 'Crmzone id:', 'Crmzone id:'), +('crmzone_name', '%_connec%', 'form_feature', 'tab_data', 'Crmzone name:', 'Crmzone name:'), +('datasource', '%_connec%', 'form_feature', 'tab_data', 'Datasource:', 'Datasource:'), +('depth', '%_connec%', 'form_feature', 'tab_data', 'Depth:', 'depth - Depth of the element in meters'), +('dma_name', '%_connec%', 'form_feature', 'tab_data', 'Dma name:', 'Dma name:'), +('dma_style', '%_connec%', 'form_feature', 'tab_data', 'Dma color:', 'Dma color:'), +('dqa_id', '%_connec%', 'form_feature', 'tab_data', 'Dqa:', 'Dqa:'), +('dqa_name', '%_connec%', 'form_feature', 'tab_data', 'Dqa name:', 'Dqa name:'), +('drain_diam', '%_connec%', 'form_feature', 'tab_data', 'Drain diameter:', 'drain_diam - Drain diameter'), +('drain_distance', '%_connec%', 'form_feature', 'tab_data', 'Drain distance:', 'drain_distance - Drain distance'), +('drain_exit', '%_connec%', 'form_feature', 'tab_data', 'Drain exit:', 'drain_exit - Exit of a drain'), +('drain_gully', '%_connec%', 'form_feature', 'tab_data', 'Drain gully:', 'drain_gully - Type of drain connection to the gully'), +('epa_type', '%_connec%', 'form_feature', 'tab_data', 'Epa type:', 'Epa type'), +('greentap_type', '%_connec%', 'form_feature', 'tab_data', 'Greentap type:', 'Greentap type:'), +('linked_connec', '%_connec%', 'form_feature', 'tab_data', 'Linked connec:', 'Linked connec'), +('lock_level', '%_connec%', 'form_feature', 'tab_data', 'Lock level:', 'Lock level:'), +('macrodqa_id', '%_connec%', 'form_feature', 'tab_data', 'Macrodqa Id:', 'Macrodqa Id'), +('model', '%_connec%', 'form_feature', 'tab_data', 'Model:', 'Model:'), +('model_id', '%_connec%', 'form_feature', 'tab_data', 'Model:', 'Model:'), +('n_inhabitants', '%_connec%', 'form_feature', 'tab_data', 'N inhabitants:', 'N inhabitants:'), +('name', '%_connec%', 'form_feature', 'tab_data', 'Name:', 'name - Name of the element'), +('om_state', '%_connec%', 'form_feature', 'tab_data', 'Om state:', 'Om state:'), +('power', '%_connec%', 'form_feature', 'tab_data', 'Power:', 'power - Total power (Kw)'), +('press_avg', '%_connec%', 'form_feature', 'tab_data', 'Press avg:', 'Press avg:'), +('press_max', '%_connec%', 'form_feature', 'tab_data', 'Press max:', 'Press max:'), +('press_min', '%_connec%', 'form_feature', 'tab_data', 'Press min:', 'Press min:'), +('presszone_id', '%_connec%', 'form_feature', 'tab_data', 'Presszone:', 'presszonecat_id - Related to the pressure zone catalog'), +('presszone_name', '%_connec%', 'form_feature', 'tab_data', 'Presszone name:', 'Presszone name:'), +('presszone_style', '%_connec%', 'form_feature', 'tab_data', 'Presszone color:', 'Presszone color:'), +('priority', '%_connec%', 'form_feature', 'tab_data', 'Priority:', 'Priority:'), +('pump_number', '%_connec%', 'form_feature', 'tab_data', 'Pump number:', 'pump_number - Number of pumps'), +('regulation_tank', '%_connec%', 'form_feature', 'tab_data', 'Regulation tank:', 'regulation_tank - Existence of regulation tank'), +('sector_name', '%_connec%', 'form_feature', 'tab_data', 'Sector name:', 'Sector name:'), +('serial_number', '%_connec%', 'form_feature', 'tab_data', 'Serial number:', 'Serial number:'), +('shutoff_valve', '%_connec%', 'form_feature', 'tab_data', 'Shutoff valve:', 'Shutoff valve:'), +('staticpressure', '%_connec%', 'form_feature', 'tab_data', 'Staticpressure:', 'Staticpressure:'), +('streetaxis2_id', '%_connec%', 'form_feature', 'tab_data', 'Streetname2:', 'streetname2'), +('streetaxis_id', '%_connec%', 'form_feature', 'tab_data', 'Streetname:', 'streetname'), +('supplyzone_id', '%_connec%', 'form_feature', 'tab_data', 'Supplyzone id:', 'Supplyzone id:'), +('sys_type', '%_connec%', 'form_feature', 'tab_data', 'Sys type:', 'Sys type:'), +('top_floor', '%_connec%', 'form_feature', 'tab_data', 'Top floor:', 'Top floor'), +('valve_location', '%_connec%', 'form_feature', 'tab_data', 'Valve location:', 'Valve location:'), +('valve_type', '%_connec%', 'form_feature', 'tab_data', 'Valve type:', 'Valve type:'), +('vmax', '%_connec%', 'form_feature', 'tab_data', 'Max volume:', 'vmax - Maximum volume.'), +('vtotal', '%_connec%', 'form_feature', 'tab_data', 'Total volume:', 'vtotal - Total volume.'), +('wjoin_type', '%_connec%', 'form_feature', 'tab_data', 'Wjoin type:', 'Wjoin type:'), +('muni_id', '%_element%', 'form_feature', 'tab_data', 'Municipality:', 'Municipality:'), +('dma_id', '%_link%', 'form_feature', 'tab_data', 'Dma Id:', 'Dma Id'), +('macrodma_id', '%_link%', 'form_feature', 'tab_data', 'Macrodma Id:', 'Macrodma Id'), +('date_to', '%_link%', 'form_feature', 'tab_documents', 'Date to:', 'Date to:'), +('airvalve_param_1', '%_node%', 'form_feature', 'tab_data', 'Airvalve param 1:', 'Airvalve param_1'), +('airvalve_param_2', '%_node%', 'form_feature', 'tab_data', 'Airvalve param 2:', 'Airvalve param_2'), +('aquifer_name', '%_node%', 'form_feature', 'tab_data', 'Aquifer name:', 'Aquifer name:'), +('aquifer_type', '%_node%', 'form_feature', 'tab_data', 'Aquifer type:', 'Aquifer type:'), +('arc_id', '%_node%', 'form_feature', 'tab_data', 'Arc Id:', 'Arc_id'), +('area', '%_node%', 'form_feature', 'tab_data', 'Area:', 'area - Surface of the tank'), +('auth_code', '%_node%', 'form_feature', 'tab_data', 'Auth code:', 'Auth code:'), +('automated', '%_node%', 'form_feature', 'tab_data', 'Automated:', 'Automated:'), +('basin_id', '%_node%', 'form_feature', 'tab_data', 'Basin id:', 'Basin id:'), +('brand', '%_node%', 'form_feature', 'tab_data', 'Brand:', 'Brand:'), +('brand2', '%_node%', 'form_feature', 'tab_data', 'Brand2:', 'Brand2:'), +('broken', '%_node%', 'form_feature', 'tab_data', 'Broken:', 'Broken:'), +('buried', '%_node%', 'form_feature', 'tab_data', 'Buried:', 'Buried:'), +('cat_dint', '%_node%', 'form_feature', 'tab_data', 'Cat dint:', 'Cat dint:'), +('cat_dnom', '%_node%', 'form_feature', 'tab_data', 'Nominal diameter:', 'cat_dnom - Nominal diameter of the element in mm. It cannot be refilled. The one with the dnom field in the corresponding catalog is used'), +('cat_matcat_id', '%_node%', 'form_feature', 'tab_data', 'Cat matcat id:', 'Cat matcat id:'), +('cat_node_type', '%_node%', 'form_feature', 'tab_data', 'Node type:', 'node_type'), +('cat_pnom', '%_node%', 'form_feature', 'tab_data', 'Nominal pressure:', 'cat_pnom - Nominal pressure of the element in atm. It cannot be refilled. The one with the pnom field in the corresponding catalog is used'), +('cat_valve', '%_node%', 'form_feature', 'tab_data', 'Valve:', 'Valve'), +('cat_valve2', '%_node%', 'form_feature', 'tab_data', 'Cat valve2:', 'Cat valve2:'), +('checkvalve_param_1', '%_node%', 'form_feature', 'tab_data', 'Check param 1:', 'Check param_1'), +('checkvalve_param_2', '%_node%', 'form_feature', 'tab_data', 'Check param 2:', 'Check param_2'), +('chemical', '%_node%', 'form_feature', 'tab_data', 'Chemcond:', 'chemcond'), +('chlorination', '%_node%', 'form_feature', 'tab_data', 'Chlorination:', 'chlorination - Chlorination of a tank'), +('closed', '%_node%', 'form_feature', 'tab_data', 'Closed:', 'Closed:'), +('coagulation', '%_node%', 'form_feature', 'tab_data', 'Coagulation:', 'Coagulation:'), +('communication', '%_node%', 'form_feature', 'tab_data', 'Communication:', 'communication - Communication'), +('connection_type', '%_node%', 'form_feature', 'tab_data', 'Connection type:', 'Connection type:'), +('conserv_state', '%_node%', 'form_feature', 'tab_data', 'Conserv state:', 'Conserv state:'), +('customer_code', '%_node%', 'form_feature', 'tab_data', 'Customer code:', 'Customer code:'), +('datasource', '%_node%', 'form_feature', 'tab_data', 'Datasource:', 'Datasource:'), +('demand_avg', '%_node%', 'form_feature', 'tab_data', 'Demand avg:', 'Demand avg:'), +('demand_max', '%_node%', 'form_feature', 'tab_data', 'Demand max:', 'Demand max:'), +('demand_min', '%_node%', 'form_feature', 'tab_data', 'Demand min:', 'Demand min:'), +('depth', '%_node%', 'form_feature', 'tab_data', 'Depth:', 'Depth:'), +('depth_valveshaft', '%_node%', 'form_feature', 'tab_data', 'Depth valveshaft:', 'Depth valveshaft:'), +('desander', '%_node%', 'form_feature', 'tab_data', 'Desander:', 'Desander:'), +('diam1', '%_node%', 'form_feature', 'tab_data', 'Diameter 1:', 'Diameter 1'), +('diam2', '%_node%', 'form_feature', 'tab_data', 'Diameter 2:', 'Diameter 2'), +('disinfection', '%_node%', 'form_feature', 'tab_data', 'Disinfection:', 'Disinfection:'), +('dma_name', '%_node%', 'form_feature', 'tab_data', 'Dma name:', 'Dma name:'), +('dma_style', '%_node%', 'form_feature', 'tab_data', 'Dma color:', 'Dma color'), +('dqa_id', '%_node%', 'form_feature', 'tab_data', 'Dqa:', 'Dqa:'), +('dqa_name', '%_node%', 'form_feature', 'tab_data', 'Dqa name:', 'Dqa name:'), +('drive_type', '%_node%', 'form_feature', 'tab_data', 'Drive type:', 'Drive type:'), +('elev_height', '%_node%', 'form_feature', 'tab_data', 'Elevation height:', 'Elevation height'), +('engine_type', '%_node%', 'form_feature', 'tab_data', 'Engine Type:', 'Engine Type'), +('exit_code', '%_node%', 'form_feature', 'tab_data', 'Exit code:', 'Exit code:'), +('exit_type', '%_node%', 'form_feature', 'tab_data', 'Exit type:', 'Exit type:'), +('fence_length', '%_node%', 'form_feature', 'tab_data', 'Fence length:', 'Fence length:'), +('fence_type', '%_node%', 'form_feature', 'tab_data', 'Fence type:', 'Fence type:'), +('filter_param_1', '%_node%', 'form_feature', 'tab_data', 'Filter param 1:', 'Filter param_1'), +('filter_param_2', '%_node%', 'form_feature', 'tab_data', 'Filter param 2:', 'Filter param_2'), +('filtration', '%_node%', 'form_feature', 'tab_data', 'Filtration:', 'Filtration:'), +('fire_code', '%_node%', 'form_feature', 'tab_data', 'Fire code:', 'Fire code'), +('floculation', '%_node%', 'form_feature', 'tab_data', 'Floculation:', 'Floculation:'), +('geom1', '%_node%', 'form_feature', 'tab_data', 'Geom1:', 'Geom1:'), +('geom2', '%_node%', 'form_feature', 'tab_data', 'Geom2:', 'Geom2:'), +('greenvalve_param_1', '%_node%', 'form_feature', 'tab_data', 'Gvalve param 1:', 'Gvalve param_1'), +('greenvalve_param_2', '%_node%', 'form_feature', 'tab_data', 'Gvalve param 2:', 'Gvalve param_2'), +('head_avg', '%_node%', 'form_feature', 'tab_data', 'Head avg:', 'Head avg:'), +('head_max', '%_node%', 'form_feature', 'tab_data', 'Head max:', 'Head max:'), +('head_min', '%_node%', 'form_feature', 'tab_data', 'Head min:', 'Head min:'), +('hmax', '%_node%', 'form_feature', 'tab_data', 'Hmax:', 'Hmax:'), +('hydrant_param_1', '%_node%', 'form_feature', 'tab_data', 'Hydrant param 1:', 'Hydrant param_1'), +('hydrant_param_2', '%_node%', 'form_feature', 'tab_data', 'Hydrant param 2:', 'Hydrant param_2'), +('hydrant_type', '%_node%', 'form_feature', 'tab_data', 'Hydrant type:', 'Hydrant type:'), +('inlet_arc', '%_node%', 'form_feature', 'tab_data', 'Inlet arc:', 'Inlet arc:'), +('invert_level', '%_node%', 'form_feature', 'tab_data', 'Invert level:', 'Invert level'), +('irrigation_indicator', '%_node%', 'form_feature', 'tab_data', 'Irrigation indicator:', 'Irrigation indicator:'), +('is_scadamap', '%_node%', 'form_feature', 'tab_data', 'Is scadamap:', 'Is scadamap:'), +('lab_code', '%_node%', 'form_feature', 'tab_data', 'Laboratory code:', 'Laboratory code'), +('label_rotation', '%_node%', 'form_feature', 'tab_data', 'Label rotation:', 'label_rotation - Angle of rotation of the label'), +('lin_meters', '%_node%', 'form_feature', 'tab_data', 'Lin meters:', 'Lin meters:'), +('lock_level', '%_node%', 'form_feature', 'tab_data', 'Lock level:', 'Lock level:'), +('macrodma_id', '%_node%', 'form_feature', 'tab_data', 'Macrodma Id:', 'Macrodma Id'), +('macrodqa_id', '%_node%', 'form_feature', 'tab_data', 'Macrodqa id:', 'Macrodqa id:'), +('max_flow', '%_node%', 'form_feature', 'tab_data', 'Max flow:', 'Max flow:'), +('meter_code', '%_node%', 'form_feature', 'tab_data', 'Meter code:', 'Meter code:'), +('min_flow', '%_node%', 'form_feature', 'tab_data', 'Min flow:', 'Min Flow'), +('model', '%_node%', 'form_feature', 'tab_data', 'Model:', 'Model:'), +('model2', '%_node%', 'form_feature', 'tab_data', 'Model2:', 'Model2:'), +('nom_flow', '%_node%', 'form_feature', 'tab_data', 'Optimal flow:', 'Optimal flow'), +('nominal_flowrate', '%_node%', 'form_feature', 'tab_data', 'Nominal Flowrate:', 'Nominal Flowrate:'), +('om_state', '%_node%', 'form_feature', 'tab_data', 'Om state:', 'Om state:'), +('ordinarystatus', '%_node%', 'form_feature', 'tab_data', 'Ordinarystatus:', 'Ordinarystatus:'), +('outfallvalve_param_1', '%_node%', 'form_feature', 'tab_data', 'Outvalve param 1:', 'Outvalve param_1'), +('outfallvalve_param_2', '%_node%', 'form_feature', 'tab_data', 'Outvalve param 2:', 'Outvalve param_2'), +('oxidation', '%_node%', 'form_feature', 'tab_data', 'Oxidation:', 'Oxidation:'), +('parent_id', '%_node%', 'form_feature', 'tab_data', 'Parent id:', 'Parent id:'), +('pavcat_id', '%_node%', 'form_feature', 'tab_data', 'Pavcat id:', 'Pavcat id:'), +('power', '%_node%', 'form_feature', 'tab_data', 'Power:', 'Power'), +('presendiment', '%_node%', 'form_feature', 'tab_data', 'Presendiment:', 'Presendiment:'), +('press_avg', '%_node%', 'form_feature', 'tab_data', 'Press avg:', 'Press avg:'), +('press_max', '%_node%', 'form_feature', 'tab_data', 'Press max:', 'Press max:'), +('press_min', '%_node%', 'form_feature', 'tab_data', 'Press min:', 'Press min:'), +('pressmeter_param_1', '%_node%', 'form_feature', 'tab_data', 'Pressmeter param 1:', 'Pressmeter param_1'), +('pressmeter_param_2', '%_node%', 'form_feature', 'tab_data', 'Pressmeter param 2:', 'Pressmeter param_2'), +('pressure_entry', '%_node%', 'form_feature', 'tab_data', 'Pression entry:', 'pression_entry'), +('pressure_exit', '%_node%', 'form_feature', 'tab_data', 'Pression exit:', 'pression_exit'), +('presszone_id', '%_node%', 'form_feature', 'tab_data', 'Presszone:', 'Presszone:'), +('presszone_name', '%_node%', 'form_feature', 'tab_data', 'Presszone name:', 'Presszone name:'), +('presszone_style', '%_node%', 'form_feature', 'tab_data', 'Presszone color:', 'Presszone color:'), +('pump_number', '%_node%', 'form_feature', 'tab_data', 'Pump number:', 'pump_number - Number of pumps'), +('pump_type', '%_node%', 'form_feature', 'tab_data', 'Pump Type:', 'Pump Type'), +('quality_avg', '%_node%', 'form_feature', 'tab_data', 'Quality avg:', 'Quality avg:'), +('quality_max', '%_node%', 'form_feature', 'tab_data', 'Quality max:', 'Quality max:'), +('quality_min', '%_node%', 'form_feature', 'tab_data', 'Quality min:', 'Quality min:'), +('real_press_avg', '%_node%', 'form_feature', 'tab_data', 'Real press avg:', 'Real press avg:'), +('real_press_max', '%_node%', 'form_feature', 'tab_data', 'Real press max:', 'Real press max:'), +('real_press_min', '%_node%', 'form_feature', 'tab_data', 'Real press min:', 'Real press min:'), +('registered_flow', '%_node%', 'form_feature', 'tab_data', 'Registered flow:', 'Registered flow:'), +('regulator_location', '%_node%', 'form_feature', 'tab_data', 'Regulator location:', 'Regulator location:'), +('regulator_observ', '%_node%', 'form_feature', 'tab_data', 'Regulator observ:', 'Regulator observ:'), +('regulator_situation', '%_node%', 'form_feature', 'tab_data', 'Regulator situation:', 'Regulator situation:'), +('screening', '%_node%', 'form_feature', 'tab_data', 'Screening:', 'Screening:'), +('sector_name', '%_node%', 'form_feature', 'tab_data', 'Sector name:', 'Sector name:'), +('security_cover', '%_node%', 'form_feature', 'tab_data', 'Security cover:', 'Security cover:'), +('sediment', '%_node%', 'form_feature', 'tab_data', 'Sediment:', 'Sediment:'), +('shape', '%_node%', 'form_feature', 'tab_data', 'Shape:', 'Shape:'), +('shtvalve_param_1', '%_node%', 'form_feature', 'tab_data', 'Shtvalve param 1:', 'Shtvalve param_1'), +('shtvalve_param_2', '%_node%', 'form_feature', 'tab_data', 'Shtvalve param 2:', 'Shtvalve param_2'), +('shutter', '%_node%', 'form_feature', 'tab_data', 'Shutter:', 'Shutter:'), +('sludgeman', '%_node%', 'form_feature', 'tab_data', 'Sludgeman:', 'Sludgeman:'), +('source_code', '%_node%', 'form_feature', 'tab_data', 'Source code:', 'Source code:'), +('source_type', '%_node%', 'form_feature', 'tab_data', 'Source type:', 'Source type:'), +('staticpressure', '%_node%', 'form_feature', 'tab_data', 'Staticpressure:', 'Staticpressure:'), +('storage', '%_node%', 'form_feature', 'tab_data', 'Storage:', 'Storage:'), +('streetaxis2_id', '%_node%', 'form_feature', 'tab_data', 'Streetname2:', 'streetname2'), +('streetaxis_id', '%_node%', 'form_feature', 'tab_data', 'Streetname:', 'streetname'), +('subbasin_id', '%_node%', 'form_feature', 'tab_data', 'Subbasin id:', 'Subbasin id:'), +('supplyzone_id', '%_node%', 'form_feature', 'tab_data', 'Supplyzone id:', 'Supplyzone id:'), +('sys_type', '%_node%', 'form_feature', 'tab_data', 'Sys type:', 'Sys type:'), +('tank_param_1', '%_node%', 'form_feature', 'tab_data', 'Tank param 1:', 'Tank param_1'), +('tank_param_2', '%_node%', 'form_feature', 'tab_data', 'Tank param 2:', 'Tank param_2'), +('to_arc', '%_node%', 'form_feature', 'tab_data', 'To arc:', 'To arc:'), +('top_floor', '%_node%', 'form_feature', 'tab_data', 'Top floor:', 'Top floor'), +('valve', '%_node%', 'form_feature', 'tab_data', 'Valve:', 'valve - Valve type'), +('valve_type', '%_node%', 'form_feature', 'tab_data', 'Valve type:', 'Valve type:'), +('vmax', '%_node%', 'form_feature', 'tab_data', 'Max volume:', 'vmax - Maximum volumen of the tank'), +('vutil', '%_node%', 'form_feature', 'tab_data', 'Util volume:', 'Util volume'), +('wjoin_type', '%_node%', 'form_feature', 'tab_data', 'Wjoin type:', 'Wjoin type:'), +('wtp_id', '%_node%', 'form_feature', 'tab_data', 'Wtp id:', 'Wtp id:') +) AS v(columnname, formname, formtype, tabname, label, tooltip) +WHERE t.columnname = v.columnname AND t.formname LIKE v.formname AND t.formtype = v.formtype AND t.tabname = v.tabname; +UPDATE config_param_system SET value = TRUE WHERE parameter = 'admin_config_control_trigger'; diff --git a/dbmodel/schemas/addon/utils/final_pass/i18n/en_US/dbconfig_form_fields_json.sql b/dbmodel/schemas/addon/utils/final_pass/i18n/en_US/dbconfig_form_fields_json.sql new file mode 100644 index 0000000000..04b61f64f3 --- /dev/null +++ b/dbmodel/schemas/addon/utils/final_pass/i18n/en_US/dbconfig_form_fields_json.sql @@ -0,0 +1,73 @@ +/* +This file is part of Giswater +The program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. +*/ + + +SET search_path = SCHEMA_NAME, public, pg_catalog; +UPDATE config_param_system SET value = FALSE WHERE parameter = 'admin_config_control_trigger'; + +UPDATE config_form_fields AS t SET widgetcontrols = v.text::json FROM ( + VALUES + ('btn_accept', 'generic', 'form_visit', 'tab_data', '{"setMultiline":false,"text":"Accept"}'), + ('btn_apply', 'generic', 'form_visit', 'tab_file', '{"setMultiline":false,"text":"Apply"}'), + ('btn_cancel', 'generic', 'form_visit', 'tab_file', '{"setMultiline":false,"text":"Cancel"}'), + ('btn_accept', 'generic', 'link_to_gully', 'tab_none', '{"text":"Accept"}'), + ('btn_close', 'generic', 'link_to_gully', 'tab_none', '{"text":"Close"}'), + ('btn_accept', 'gully', 'form_feature', 'tab_none', '{"text":"Accept"}'), + ('btn_apply', 'gully', 'form_feature', 'tab_none', '{"text":"Apply"}'), + ('btn_cancel', 'gully', 'form_feature', 'tab_none', '{"text":"Cancel"}'), + ('btn_accept', 'arc', 'form_feature', 'tab_none', '{"text":"Accept"}'), + ('btn_apply', 'arc', 'form_feature', 'tab_none', '{"text":"Apply"}'), + ('btn_cancel', 'arc', 'form_feature', 'tab_none', '{"text":"Cancel"}'), + ('btn_accept', 'connec', 'form_feature', 'tab_none', '{"text":"Accept"}'), + ('btn_apply', 'connec', 'form_feature', 'tab_none', '{"text":"Apply"}'), + ('btn_cancel', 'connec', 'form_feature', 'tab_none', '{"text":"Cancel"}'), + ('cancel', 'element_manager', 'form_element', 'tab_none', '{"saveValue":false,"text":"Close"}'), + ('create', 'element_manager', 'form_element', 'tab_none', '{"saveValue":false,"text":"Create"}'), + ('delete', 'element_manager', 'form_element', 'tab_none', '{"onContextMenu":"Delete","saveValue":false,"text":"Delete"}'), + ('btn_close', 'generic', 'audit', 'tab_none', '{"text":"Close"}'), + ('btn_close', 'generic', 'audit_manager', 'tab_none', '{"text":"Close"}'), + ('btn_open', 'generic', 'audit_manager', 'tab_none', '{"text":"Open"}'), + ('btn_open_date', 'generic', 'audit_manager', 'tab_none', '{"text":"Open date"}'), + ('Info:', 'generic', 'check_project', 'tab_data', '{"vdefault_value":"This function verifies both the project and the database. For the database verification, all objects selected by the user through their sector and exploitation selector are checked."}'), + ('btn_accept', 'generic', 'create_organization', 'tab_none', '{"text":"Accept"}'), + ('btn_close', 'generic', 'create_organization', 'tab_none', '{"text":"Close"}'), + ('btn_close', 'generic', 'dscenario', 'tab_none', '{"text":"Close"}'), + ('btn_close', 'generic', 'dscenario_manager', 'tab_none', '{"text":"Close"}'), + ('btn_close', 'generic', 'epa_manager', 'tab_none', '{"text":"Close"}'), + ('btn_accept', 'generic', 'epa_selector', 'tab_none', '{"text":"Accept"}'), + ('btn_cancel', 'generic', 'epa_selector', 'tab_none', '{"text":"Cancel"}'), + ('btn_accept', 'generic', 'form_featuretype_change', 'tab_none', '{"text":"Accept"}'), + ('btn_cancel', 'generic', 'form_featuretype_change', 'tab_none', '{"text":"Cancel"}'), + ('btn_options', 'generic', 'go2epa', 'tab_data', '{"text":"Options"}'), + ('btn_selector', 'generic', 'go2epa', 'tab_data', '{"text":"Selector"}'), + ('btn_download_inp', 'generic', 'go2epa', 'tab_log', '{"text":"INP File"}'), + ('btn_download_rpt', 'generic', 'go2epa', 'tab_log', '{"text":"RPT File"}'), + ('btn_close', 'generic', 'go2epa', 'tab_none', '{"text":"Close"}'), + ('btn_execute_epa', 'generic', 'go2epa', 'tab_none', '{"text":"Execute"}'), + ('btn_accept', 'generic', 'link_to_connec', 'tab_none', '{"text":"Accept"}'), + ('btn_close', 'generic', 'link_to_connec', 'tab_none', '{"text":"Close"}'), + ('btn_cancel', 'generic', 'nvo_manager', 'tab_none', '{"text":"Close"}'), + ('btn_accept', 'generic', 'psector', 'tab_none', '{"text":"Accept"}'), + ('btn_close', 'generic', 'psector', 'tab_none', '{"text":"Cancel"}'), + ('btn_close', 'generic', 'psector_manager', 'tab_none', '{"text":"Close"}'), + ('btn_close', 'generic', 'snapshot_view', 'tab_none', '{"text":"Close"}'), + ('btn_run', 'generic', 'snapshot_view', 'tab_none', '{"text":"Run"}'), + ('btn_close', 'generic', 'workspace_manager', 'tab_none', '{"text":"Close"}'), + ('btn_accept', 'generic', 'workspace_open', 'tab_none', '{"text":"Save"}'), + ('btn_close', 'generic', 'workspace_open', 'tab_none', '{"text":"Close"}'), + ('btn_accept', 'node', 'form_feature', 'tab_none', '{"text":"Accept"}'), + ('btn_apply', 'node', 'form_feature', 'tab_none', '{"text":"Apply"}'), + ('btn_cancel', 'node', 'form_feature', 'tab_none', '{"text":"Cancel"}'), + ('btn_accept', 'mincut', 'form_mincut', 'tab_mincut', '{"text":"Aceptar"}'), + ('btn_apply', 'mincut', 'form_mincut', 'tab_mincut', '{"text":"Apply"}'), + ('btn_cancel', 'mincut', 'form_mincut', 'tab_mincut', '{"text":"Cancelar"}'), + ('btn_end', 'mincut', 'form_mincut', 'tab_mincut', '{"text":"Fin"}'), + ('btn_start', 'mincut', 'form_mincut', 'tab_mincut', '{"text":"Inicio"}'), + ('cancel', 'mincut_manager', 'form_mincut', 'tab_none', '{"saveValue":false,"text":"Close"}'), + ('cancel_mincut', 'mincut_manager', 'form_mincut', 'tab_none', '{"onContextMenu":"Cancel mincut","saveValue":false,"text":"Cancel mincut"}'), + ('delete', 'mincut_manager', 'form_mincut', 'tab_none', '{"onContextMenu":"Delete mincut","saveValue":false,"text":"Delete mincut"}') +) AS v(columnname, formname, formtype, tabname, text) +WHERE t.columnname = v.columnname AND t.formname = v.formname AND t.formtype = v.formtype AND t.tabname = v.tabname; +UPDATE config_param_system SET value = TRUE WHERE parameter = 'admin_config_control_trigger'; diff --git a/dbmodel/schemas/addon/utils/final_pass/i18n/en_US/dbconfig_form_tableview.sql b/dbmodel/schemas/addon/utils/final_pass/i18n/en_US/dbconfig_form_tableview.sql new file mode 100644 index 0000000000..8891fb5cfa --- /dev/null +++ b/dbmodel/schemas/addon/utils/final_pass/i18n/en_US/dbconfig_form_tableview.sql @@ -0,0 +1,1268 @@ +/* +This file is part of Giswater +The program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. +*/ + + +SET search_path = SCHEMA_NAME, public, pg_catalog; +UPDATE config_form_tableview AS t SET alias = v.alias FROM ( + VALUES + ('dscenario_additional', 'id', 'id'), + ('dscenario_conduit', 'id', 'Id'), + ('dscenario_connec', 'id', 'id'), + ('dscenario_demand', 'id', 'id'), + ('dscenario_inflows', 'id', 'Id'), + ('dscenario_inlet', 'id', 'id'), + ('dscenario_lids', 'id', 'Id'), + ('dscenario_orifice', 'id', 'Id'), + ('dscenario_outfall', 'id', 'Id'), + ('dscenario_outlet', 'id', 'Id'), + ('dscenario_pipe', 'id', 'id'), + ('dscenario_poll', 'id', 'Id'), + ('dscenario_raingage', 'id', 'Id'), + ('dscenario_reservoir', 'id', 'id'), + ('dscenario_rules', 'id', 'id'), + ('dscenario_shortpipe', 'id', 'id'), + ('dscenario_storage', 'id', 'Id'), + ('dscenario_tank', 'id', 'id'), + ('dscenario_treatment', 'id', 'Id'), + ('dscenario_valve', 'id', 'id'), + ('dscenario_virtualpump', 'id', 'id'), + ('dscenario_virtualvalve', 'id', 'id'), + ('dscenario_weir', 'id', 'Id'), + ('inp_dscenario_flwreg_orifice', 'cd', 'Cd'), + ('inp_dscenario_flwreg_orifice', 'close_time', 'Close time'), + ('inp_dscenario_flwreg_orifice', 'dscenario_id', 'Dscenario id'), + ('inp_dscenario_flwreg_orifice', 'flap', 'Flap'), + ('inp_dscenario_flwreg_orifice', 'geom1', 'Geom1'), + ('inp_dscenario_flwreg_orifice', 'geom2', 'Geom2'), + ('inp_dscenario_flwreg_orifice', 'geom3', 'Geom3'), + ('inp_dscenario_flwreg_orifice', 'geom4', 'Geom4'), + ('inp_dscenario_flwreg_orifice', 'nodarc_id', 'Nodarc id'), + ('inp_dscenario_flwreg_orifice', 'offsetval', 'Offsetval'), + ('inp_dscenario_flwreg_orifice', 'orate', 'Orate'), + ('inp_dscenario_flwreg_orifice', 'ori_type', 'Ori type'), + ('inp_dscenario_flwreg_orifice', 'shape', 'Shape'), + ('inp_dscenario_flwreg_outlet', 'cd1', 'Cd1'), + ('inp_dscenario_flwreg_outlet', 'cd2', 'Cd2'), + ('inp_dscenario_flwreg_outlet', 'curve_id', 'Curve id'), + ('inp_dscenario_flwreg_outlet', 'dscenario_id', 'Dscenario id'), + ('inp_dscenario_flwreg_outlet', 'flap', 'Flap'), + ('inp_dscenario_flwreg_outlet', 'nodarc_id', 'Nodarc id'), + ('inp_dscenario_flwreg_outlet', 'offsetval', 'Offsetval'), + ('inp_dscenario_flwreg_outlet', 'outlet_type', 'Outlet type'), + ('inp_dscenario_flwreg_pump', 'curve_id', 'Curve id'), + ('inp_dscenario_flwreg_pump', 'dscenario_id', 'Dscenario id'), + ('inp_dscenario_flwreg_pump', 'nodarc_id', 'Nodarc id'), + ('inp_dscenario_flwreg_pump', 'shutoff', 'Shutoff'), + ('inp_dscenario_flwreg_pump', 'startup', 'Startup'), + ('inp_dscenario_flwreg_pump', 'status', 'Status'), + ('inp_dscenario_flwreg_weir', 'cd', 'Cd'), + ('inp_dscenario_flwreg_weir', 'cd2', 'Cd2'), + ('inp_dscenario_flwreg_weir', 'coef_curve', 'Coef curve'), + ('inp_dscenario_flwreg_weir', 'dscenario_id', 'Dscenario id'), + ('inp_dscenario_flwreg_weir', 'ec', 'Ec'), + ('inp_dscenario_flwreg_weir', 'flap', 'Flap'), + ('inp_dscenario_flwreg_weir', 'geom1', 'Geom1'), + ('inp_dscenario_flwreg_weir', 'geom2', 'Geom2'), + ('inp_dscenario_flwreg_weir', 'geom3', 'Geom3'), + ('inp_dscenario_flwreg_weir', 'geom4', 'Geom4'), + ('inp_dscenario_flwreg_weir', 'nodarc_id', 'Nodarc id'), + ('inp_dscenario_flwreg_weir', 'offsetval', 'Offsetval'), + ('inp_dscenario_flwreg_weir', 'road_surf', 'Road surf'), + ('inp_dscenario_flwreg_weir', 'road_width', 'Road width'), + ('inp_dscenario_flwreg_weir', 'surcharge', 'Surcharge'), + ('inp_dscenario_flwreg_weir', 'weir_type', 'Weir type'), + ('inp_flwreg_orifice', 'cd', 'Cd'), + ('inp_flwreg_orifice', 'close_time', 'Close time'), + ('inp_flwreg_orifice', 'flap', 'Flap'), + ('inp_flwreg_orifice', 'flwreg_length', 'Flwreg length'), + ('inp_flwreg_orifice', 'geom1', 'Geom1'), + ('inp_flwreg_orifice', 'geom2', 'Geom2'), + ('inp_flwreg_orifice', 'geom3', 'Geom3'), + ('inp_flwreg_orifice', 'geom4', 'Geom4'), + ('inp_flwreg_orifice', 'id', 'Id'), + ('inp_flwreg_orifice', 'nodarc_id', 'Nodarc id'), + ('inp_flwreg_orifice', 'node_id', 'Node id'), + ('inp_flwreg_orifice', 'offsetval', 'Offsetval'), + ('inp_flwreg_orifice', 'orate', 'Orate'), + ('inp_flwreg_orifice', 'order_id', 'Order id'), + ('inp_flwreg_orifice', 'ori_type', 'Ori type'), + ('inp_flwreg_orifice', 'shape', 'Shape'), + ('inp_flwreg_orifice', 'to_arc', 'To arc'), + ('inp_flwreg_outlet', 'cd1', 'Cd1'), + ('inp_flwreg_outlet', 'cd2', 'Cd2'), + ('inp_flwreg_outlet', 'curve_id', 'Curve id'), + ('inp_flwreg_outlet', 'flap', 'Flap'), + ('inp_flwreg_outlet', 'flwreg_length', 'Flwreg length'), + ('inp_flwreg_outlet', 'id', 'Id'), + ('inp_flwreg_outlet', 'nodarc_id', 'Nodarc id'), + ('inp_flwreg_outlet', 'node_id', 'Node id'), + ('inp_flwreg_outlet', 'offsetval', 'Offsetval'), + ('inp_flwreg_outlet', 'order_id', 'Order id'), + ('inp_flwreg_outlet', 'outlet_type', 'Outlet type'), + ('inp_flwreg_outlet', 'to_arc', 'To arc'), + ('inp_flwreg_pump', 'curve_id', 'Curve id'), + ('inp_flwreg_pump', 'flwreg_length', 'Flwreg length'), + ('inp_flwreg_pump', 'id', 'Id'), + ('inp_flwreg_pump', 'nodarc_id', 'Nodarc id'), + ('inp_flwreg_pump', 'node_id', 'Node id'), + ('inp_flwreg_pump', 'order_id', 'Order id'), + ('inp_flwreg_pump', 'shutoff', 'Shutoff'), + ('inp_flwreg_pump', 'startup', 'Startup'), + ('inp_flwreg_pump', 'status', 'Status'), + ('inp_flwreg_pump', 'to_arc', 'To arc'), + ('inp_flwreg_weir', 'cd', 'Cd'), + ('inp_flwreg_weir', 'cd2', 'Cd2'), + ('inp_flwreg_weir', 'coef_curve', 'Coef curve'), + ('inp_flwreg_weir', 'ec', 'Ec'), + ('inp_flwreg_weir', 'flap', 'Flap'), + ('inp_flwreg_weir', 'flwreg_length', 'Flwreg length'), + ('inp_flwreg_weir', 'geom1', 'Geom1'), + ('inp_flwreg_weir', 'geom2', 'Geom2'), + ('inp_flwreg_weir', 'geom3', 'Geom3'), + ('inp_flwreg_weir', 'geom4', 'Geom4'), + ('inp_flwreg_weir', 'id', 'Id'), + ('inp_flwreg_weir', 'nodarc_id', 'Nodarc id'), + ('inp_flwreg_weir', 'node_id', 'Node id'), + ('inp_flwreg_weir', 'offsetval', 'Offsetval'), + ('inp_flwreg_weir', 'order_id', 'Order id'), + ('inp_flwreg_weir', 'road_surf', 'Road surf'), + ('inp_flwreg_weir', 'road_width', 'Road width'), + ('inp_flwreg_weir', 'surcharge', 'Surcharge'), + ('inp_flwreg_weir', 'to_arc', 'To arc'), + ('inp_flwreg_weir', 'weir_type', 'Weir type'), + ('inp_lid', 'lidco_id', 'Lidco id'), + ('inp_lid', 'lidco_type', 'Lidco type'), + ('inp_lid', 'log', 'Log'), + ('inp_lid', 'observ', 'Observ'), + ('plan_psector_x_gully', '_link_geom_', ' link geom '), + ('plan_psector_x_gully', '_userdefined_geom_', ' userdefined geom '), + ('plan_psector_x_gully', 'arc_id', 'Arc id'), + ('plan_psector_x_gully', 'descript', 'Descript'), + ('plan_psector_x_gully', 'doable', 'Doable'), + ('plan_psector_x_gully', 'gully_id', 'Gully id'), + ('plan_psector_x_gully', 'id', 'Id'), + ('plan_psector_x_gully', 'insert_tstamp', 'Insert tstamp'), + ('plan_psector_x_gully', 'insert_user', 'Insert user'), + ('plan_psector_x_gully', 'link_id', 'Link id'), + ('plan_psector_x_gully', 'psector_id', 'Psector id'), + ('plan_psector_x_gully', 'state', 'State'), + ('tbl_connection_downstream', 'arccat_id', 'Arccat id'), + ('tbl_connection_downstream', 'depth', 'Depth'), + ('tbl_connection_downstream', 'downstream_code', 'Downstream code'), + ('tbl_connection_downstream', 'downstream_depth', 'Downstream depth'), + ('tbl_connection_downstream', 'downstream_id', 'Downstream id'), + ('tbl_connection_downstream', 'downstream_type', 'Downstream type'), + ('tbl_connection_downstream', 'feature_code', 'Feature code'), + ('tbl_connection_downstream', 'feature_id', 'Feature id'), + ('tbl_connection_downstream', 'featurecat_id', 'Featurecat id'), + ('tbl_connection_downstream', 'length', 'Length'), + ('tbl_connection_downstream', 'node_id', 'Node id'), + ('tbl_connection_downstream', 'rid', 'Rid'), + ('tbl_connection_downstream', 'sys_table_id', 'Sys table id'), + ('tbl_connection_downstream', 'sys_type', 'Sys type'), + ('tbl_connection_downstream', 'x', 'X'), + ('tbl_connection_downstream', 'y', 'Y'), + ('tbl_connection_upstream', 'arccat_id', 'Arccat id'), + ('tbl_connection_upstream', 'depth', 'Depth'), + ('tbl_connection_upstream', 'feature_code', 'Feature code'), + ('tbl_connection_upstream', 'feature_id', 'Feature id'), + ('tbl_connection_upstream', 'featurecat_id', 'Featurecat id'), + ('tbl_connection_upstream', 'length', 'Length'), + ('tbl_connection_upstream', 'node_id', 'Node id'), + ('tbl_connection_upstream', 'rid', 'Rid'), + ('tbl_connection_upstream', 'sys_table_id', 'Sys table id'), + ('tbl_connection_upstream', 'sys_type', 'Sys type'), + ('tbl_connection_upstream', 'upstream_code', 'Upstream code'), + ('tbl_connection_upstream', 'upstream_depth', 'Upstream depth'), + ('tbl_connection_upstream', 'upstream_id', 'Upstream id'), + ('tbl_connection_upstream', 'upstream_type', 'Upstream type'), + ('tbl_connection_upstream', 'x', 'X'), + ('tbl_connection_upstream', 'y', 'Y'), + ('tbl_doc_x_gully', 'date', 'Date'), + ('tbl_doc_x_gully', 'doc_id', 'Doc id'), + ('tbl_doc_x_gully', 'doc_type', 'Doc type'), + ('tbl_doc_x_gully', 'gully_id', 'Gully id'), + ('tbl_doc_x_gully', 'id', 'Id'), + ('tbl_doc_x_gully', 'observ', 'Observ'), + ('tbl_doc_x_gully', 'path', 'Path'), + ('tbl_doc_x_gully', 'sys_id', 'Sys id'), + ('tbl_doc_x_gully', 'user_name', 'User name'), + ('tbl_element_x_gully', 'builtdate', 'Builtdate'), + ('tbl_element_x_gully', 'comment', 'Comment'), + ('tbl_element_x_gully', 'descript', 'Descript'), + ('tbl_element_x_gully', 'element_id', 'Element id'), + ('tbl_element_x_gully', 'element_type', 'Element type'), + ('tbl_element_x_gully', 'elementcat_id', 'Elementcat id'), + ('tbl_element_x_gully', 'enddate', 'Enddate'), + ('tbl_element_x_gully', 'epa_type', 'Epa type'), + ('tbl_element_x_gully', 'feature_class', 'Feature class'), + ('tbl_element_x_gully', 'gully_id', 'Gully id'), + ('tbl_element_x_gully', 'id', 'id'), + ('tbl_element_x_gully', 'location_type', 'Location type'), + ('tbl_element_x_gully', 'num_elements', 'Num elements'), + ('tbl_element_x_gully', 'observ', 'Observ'), + ('tbl_element_x_gully', 'state', 'State'), + ('tbl_element_x_gully', 'state_type', 'State type'), + ('tbl_frelem_dsc_orifice', 'cd', 'Cd'), + ('tbl_frelem_dsc_orifice', 'dscenario_id', 'Dscenario id'), + ('tbl_frelem_dsc_orifice', 'element_id', 'Element id'), + ('tbl_frelem_dsc_orifice', 'flap', 'Flap'), + ('tbl_frelem_dsc_orifice', 'geom1', 'Geom1'), + ('tbl_frelem_dsc_orifice', 'geom2', 'Geom2'), + ('tbl_frelem_dsc_orifice', 'geom3', 'Geom3'), + ('tbl_frelem_dsc_orifice', 'geom4', 'Geom4'), + ('tbl_frelem_dsc_orifice', 'node_id', 'Node id'), + ('tbl_frelem_dsc_orifice', 'offsetval', 'Offsetval'), + ('tbl_frelem_dsc_orifice', 'orate', 'Orate'), + ('tbl_frelem_dsc_orifice', 'orifice_type', 'Orifice type'), + ('tbl_frelem_dsc_orifice', 'shape', 'Shape'), + ('tbl_frelem_dsc_orifice', 'the_geom', 'The geom'), + ('tbl_frelem_dsc_outlet', 'cd1', 'Cd1'), + ('tbl_frelem_dsc_outlet', 'cd2', 'Cd2'), + ('tbl_frelem_dsc_outlet', 'curve_id', 'Curve id'), + ('tbl_frelem_dsc_outlet', 'dscenario_id', 'Dscenario id'), + ('tbl_frelem_dsc_outlet', 'element_id', 'Element id'), + ('tbl_frelem_dsc_outlet', 'flap', 'Flap'), + ('tbl_frelem_dsc_outlet', 'node_id', 'Node id'), + ('tbl_frelem_dsc_outlet', 'offsetval', 'Offsetval'), + ('tbl_frelem_dsc_outlet', 'outlet_type', 'Outlet type'), + ('tbl_frelem_dsc_outlet', 'the_geom', 'The geom'), + ('tbl_frelem_dsc_pump', 'shutoff', 'Shutoff'), + ('tbl_frelem_dsc_pump', 'startup', 'Startup'), + ('tbl_frelem_dsc_weir', 'cd', 'Cd'), + ('tbl_frelem_dsc_weir', 'cd2', 'Cd2'), + ('tbl_frelem_dsc_weir', 'coef_curve', 'Coef curve'), + ('tbl_frelem_dsc_weir', 'dscenario_id', 'Dscenario id'), + ('tbl_frelem_dsc_weir', 'ec', 'Ec'), + ('tbl_frelem_dsc_weir', 'element_id', 'Element id'), + ('tbl_frelem_dsc_weir', 'flap', 'Flap'), + ('tbl_frelem_dsc_weir', 'geom1', 'Geom1'), + ('tbl_frelem_dsc_weir', 'geom2', 'Geom2'), + ('tbl_frelem_dsc_weir', 'geom3', 'Geom3'), + ('tbl_frelem_dsc_weir', 'geom4', 'Geom4'), + ('tbl_frelem_dsc_weir', 'node_id', 'Node id'), + ('tbl_frelem_dsc_weir', 'offsetval', 'Offsetval'), + ('tbl_frelem_dsc_weir', 'road_surf', 'Road surf'), + ('tbl_frelem_dsc_weir', 'road_width', 'Road width'), + ('tbl_frelem_dsc_weir', 'surcharge', 'Surcharge'), + ('tbl_frelem_dsc_weir', 'the_geom', 'The geom'), + ('tbl_frelem_dsc_weir', 'weir_type', 'Weir type'), + ('tbl_nvo_mng_lids', 'active', 'Active'), + ('tbl_nvo_mng_lids', 'lidco_id', 'Lidco id'), + ('tbl_nvo_mng_lids', 'lidco_type', 'Lidco type'), + ('tbl_nvo_mng_lids', 'log', 'Log'), + ('tbl_nvo_mng_lids', 'observ', 'Observ'), + ('tbl_nvo_mng_timeseries', 'active', 'Active'), + ('tbl_nvo_mng_timeseries', 'descript', 'Descript'), + ('tbl_nvo_mng_timeseries', 'expl_id', 'Expl id'), + ('tbl_nvo_mng_timeseries', 'fname', 'Fname'), + ('tbl_nvo_mng_timeseries', 'id', 'Id'), + ('tbl_nvo_mng_timeseries', 'idval', 'Idval'), + ('tbl_nvo_mng_timeseries', 'times_type', 'Times type'), + ('tbl_nvo_mng_timeseries', 'timser_type', 'Timser type'), + ('tbl_relations', 'arc_state', 'arc_state'), + ('tbl_visit_x_gully', 'sys_id', 'Sys id'), + ('v_edit_plan_psector_x_gully', 'active', 'Active'), + ('v_edit_plan_psector_x_gully', 'arc_id', 'Arc id'), + ('v_edit_plan_psector_x_gully', 'descript', 'Descript'), + ('v_edit_plan_psector_x_gully', 'doable', 'Doable'), + ('v_edit_plan_psector_x_gully', 'gully_id', 'Gully id'), + ('v_edit_plan_psector_x_gully', 'id', 'Id'), + ('v_edit_plan_psector_x_gully', 'insert_tstamp', 'Insert tstamp'), + ('v_edit_plan_psector_x_gully', 'insert_user', 'Insert user'), + ('v_edit_plan_psector_x_gully', 'link_id', 'Link id'), + ('v_edit_plan_psector_x_gully', 'psector_id', 'Psector id'), + ('v_edit_plan_psector_x_gully', 'state', 'State'), + ('v_ui_doc_x_gully', 'date', 'date'), + ('v_ui_doc_x_gully', 'doc_id', 'doc_id'), + ('v_ui_doc_x_gully', 'doc_type', 'doc_type'), + ('v_ui_doc_x_gully', 'gully_id', 'gully_id'), + ('v_ui_doc_x_gully', 'id', 'id'), + ('v_ui_doc_x_gully', 'observ', 'observ'), + ('v_ui_doc_x_gully', 'path', 'path'), + ('v_ui_doc_x_gully', 'user_name', 'user_name'), + ('v_ui_element_x_gully', 'builtdate', 'builtdate'), + ('v_ui_element_x_gully', 'comment', 'comment'), + ('v_ui_element_x_gully', 'descript', 'descript'), + ('v_ui_element_x_gully', 'element_id', 'element_id'), + ('v_ui_element_x_gully', 'elementcat_id', 'elementcat_id'), + ('v_ui_element_x_gully', 'enddate', 'enddate'), + ('v_ui_element_x_gully', 'gully_id', 'gully_id'), + ('v_ui_element_x_gully', 'id', 'id'), + ('v_ui_element_x_gully', 'num_elements', 'num_elements'), + ('v_ui_element_x_gully', 'observ', 'observ'), + ('v_ui_element_x_gully', 'state', 'state'), + ('v_ui_mincut', 'anl_cause', 'Anl cause'), + ('v_ui_mincut', 'anl_descript', 'Anl descript'), + ('v_ui_mincut', 'anl_feature_id', 'Anl feature id'), + ('v_ui_mincut', 'anl_feature_type', 'Anl feature type'), + ('v_ui_mincut', 'anl_the_geom', 'Anl the geom'), + ('v_ui_mincut', 'anl_tstamp', 'Anl tstamp'), + ('v_ui_mincut', 'anl_user', 'Anl user'), + ('v_ui_mincut', 'assigned_to', 'Assigned to'), + ('v_ui_mincut', 'class', 'Class'), + ('v_ui_mincut', 'exec_appropiate', 'Exec appropiate'), + ('v_ui_mincut', 'exec_depth', 'Exec depth'), + ('v_ui_mincut', 'exec_descript', 'Exec descript'), + ('v_ui_mincut', 'exec_end', 'Exec end'), + ('v_ui_mincut', 'exec_from_plot', 'Exec from plot'), + ('v_ui_mincut', 'exec_start', 'Exec start'), + ('v_ui_mincut', 'exec_the_geom', 'Exec the geom'), + ('v_ui_mincut', 'exec_user', 'Exec user'), + ('v_ui_mincut', 'expl_id', 'Expl id'), + ('v_ui_mincut', 'forecast_end', 'Forecast end'), + ('v_ui_mincut', 'forecast_start', 'Forecast start'), + ('v_ui_mincut', 'id', 'Id'), + ('v_ui_mincut', 'macroexpl_id', 'Macroexpl id'), + ('v_ui_mincut', 'mincut_type', 'Mincut type'), + ('v_ui_mincut', 'muni_id', 'Muni id'), + ('v_ui_mincut', 'name', 'Name'), + ('v_ui_mincut', 'postcode', 'Postcode'), + ('v_ui_mincut', 'postnumber', 'Postnumber'), + ('v_ui_mincut', 'received_date', 'Received date'), + ('v_ui_mincut', 'state', 'State'), + ('v_ui_mincut', 'streetaxis_id', 'Streetaxis id'), + ('v_ui_mincut', 'work_order', 'Work order'), + ('v_ui_node_x_connection_downstream', 'arccat_id', 'arccat_id'), + ('v_ui_node_x_connection_downstream', 'depth', 'depth'), + ('v_ui_node_x_connection_downstream', 'downstream_code', 'downstream_code'), + ('v_ui_node_x_connection_downstream', 'downstream_depth', 'downstream_depth'), + ('v_ui_node_x_connection_downstream', 'downstream_id', 'downstream_id'), + ('v_ui_node_x_connection_downstream', 'downstream_type', 'downstream_type'), + ('v_ui_node_x_connection_downstream', 'feature_code', 'feature_code'), + ('v_ui_node_x_connection_downstream', 'feature_id', 'feature_id'), + ('v_ui_node_x_connection_downstream', 'featurecat_id', 'featurecat_id'), + ('v_ui_node_x_connection_downstream', 'length', 'length'), + ('v_ui_node_x_connection_downstream', 'node_id', 'node_id'), + ('v_ui_node_x_connection_downstream', 'rid', 'rid'), + ('v_ui_node_x_connection_downstream', 'sys_type', 'sys_type'), + ('v_ui_node_x_connection_downstream', 'x', 'x'), + ('v_ui_node_x_connection_downstream', 'y', 'y'), + ('v_ui_node_x_connection_upstream', 'arccat_id', 'arccat_id'), + ('v_ui_node_x_connection_upstream', 'depth', 'depth'), + ('v_ui_node_x_connection_upstream', 'feature_code', 'feature_code'), + ('v_ui_node_x_connection_upstream', 'feature_id', 'feature_id'), + ('v_ui_node_x_connection_upstream', 'featurecat_id', 'featurecat_id'), + ('v_ui_node_x_connection_upstream', 'length', 'length'), + ('v_ui_node_x_connection_upstream', 'node_id', 'node_id'), + ('v_ui_node_x_connection_upstream', 'rid', 'rid'), + ('v_ui_node_x_connection_upstream', 'sys_type', 'sys_type'), + ('v_ui_node_x_connection_upstream', 'upstream_code', 'upstream_code'), + ('v_ui_node_x_connection_upstream', 'upstream_depth', 'upstream_depth'), + ('v_ui_node_x_connection_upstream', 'upstream_id', 'upstream_id'), + ('v_ui_node_x_connection_upstream', 'upstream_type', 'upstream_type'), + ('v_ui_node_x_connection_upstream', 'x', 'x'), + ('v_ui_node_x_connection_upstream', 'y', 'y'), + ('v_ui_om_visitman_x_gully', 'code', 'Code'), + ('v_ui_om_visitman_x_gully', 'feature_type', 'Feature type'), + ('v_ui_om_visitman_x_gully', 'form_type', 'Form type'), + ('v_ui_om_visitman_x_gully', 'gully_id', 'Gully id'), + ('v_ui_om_visitman_x_gully', 'is_done', 'Is done'), + ('v_ui_om_visitman_x_gully', 'user_name', 'User name'), + ('v_ui_om_visitman_x_gully', 'visit_end', 'Visit end'), + ('v_ui_om_visitman_x_gully', 'visit_id', 'Visit id'), + ('v_ui_om_visitman_x_gully', 'visit_start', 'Visit start'), + ('v_ui_om_visitman_x_gully', 'visitcat_name', 'Visitcat name'), + ('ve_inp_pattern', 'log', 'Log'), + ('ve_inp_pattern', 'tsparameters', 'Tsparameters'), + ('ve_inp_timeseries', 'active', 'Active'), + ('ve_inp_timeseries', 'addparam', 'Addparam'), + ('ve_inp_timeseries', 'descript', 'Descript'), + ('ve_inp_timeseries', 'expl_id', 'Expl id'), + ('ve_inp_timeseries', 'fname', 'Fname'), + ('ve_inp_timeseries', 'id', 'Id'), + ('ve_inp_timeseries', 'times_type', 'Times type'), + ('ve_inp_timeseries', 'timeser_type', 'Timeser type'), + ('cat_result', 'budget', 'budget'), + ('cat_result', 'cur_user', 'cur_user'), + ('cat_result', 'descript', 'descript'), + ('cat_result', 'dnom', 'dnom'), + ('cat_result', 'expl_id', 'expl_id'), + ('cat_result', 'features', 'features'), + ('cat_result', 'iscorporate', 'iscorporate'), + ('cat_result', 'material_id', 'material_id'), + ('cat_result', 'presszone_id', 'presszone_id'), + ('cat_result', 'report', 'report'), + ('cat_result', 'result_id', 'result_id'), + ('cat_result', 'result_name', 'result_name'), + ('cat_result', 'result_type', 'result_type'), + ('cat_result', 'status', 'status'), + ('cat_result', 'target_year', 'target_year'), + ('cat_result', 'tstamp', 'tstamp'), + ('config_catalog_def', 'compliance', 'compliance'), + ('config_catalog_def', 'cost_constr', 'cost_constr'), + ('config_catalog_def', 'cost_repmain', 'cost_repmain'), + ('config_catalog_def', 'dnom', 'dnom'), + ('config_engine_def', 'active', 'active'), + ('config_engine_def', 'datatype', 'datatype'), + ('config_engine_def', 'descript', 'descript'), + ('config_engine_def', 'dv_controls', 'dv_controls'), + ('config_engine_def', 'dv_querytext', 'dv_querytext'), + ('config_engine_def', 'iseditable', 'iseditable'), + ('config_engine_def', 'ismandatory', 'ismandatory'), + ('config_engine_def', 'label', 'label'), + ('config_engine_def', 'layoutname', 'layoutname'), + ('config_engine_def', 'layoutorder', 'layoutorder'), + ('config_engine_def', 'method', 'method'), + ('config_engine_def', 'parameter', 'parameter'), + ('config_engine_def', 'planceholder', 'planceholder'), + ('config_engine_def', 'round', 'round'), + ('config_engine_def', 'standardvalue', 'standardvalue'), + ('config_engine_def', 'stylesheet', 'stylesheet'), + ('config_engine_def', 'value', 'value'), + ('config_engine_def', 'widgetcontrols', 'widgetcontrols'), + ('config_engine_def', 'widgettype', 'widgettype'), + ('config_form_fields', 'layout_id', 'Layout id'), + ('config_form_fields', 'layout_name', 'Layout name'), + ('config_form_fields', 'layout_order', 'Layout order'), + ('config_material_def', 'age_max', 'age_max'), + ('config_material_def', 'age_med', 'age_med'), + ('config_material_def', 'age_min', 'age_min'), + ('config_material_def', 'builtdate_vdef', 'builtdate_vdef'), + ('config_material_def', 'compliance', 'compliance'), + ('config_material_def', 'material', 'material'), + ('config_material_def', 'pleak', 'pleak'), + ('doc', 'date', 'Date'), + ('doc', 'doc_type', 'Doc type'), + ('doc', 'id', 'Id'), + ('doc', 'observ', 'Observ'), + ('doc', 'path', 'Path'), + ('doc', 'tstamp', 'Tstamp'), + ('doc', 'user_name', 'User name'), + ('dscenario_controls', 'id', 'Id'), + ('dscenario_junction', 'id', 'Id'), + ('dscenario_pump', 'id', 'Id'), + ('dscenario_results', 'active', 'Active'), + ('dscenario_results', 'descript', 'Descript'), + ('dscenario_results', 'dscenario_type', 'Dscenario type'), + ('dscenario_results', 'expl_id', 'Expl id'), + ('dscenario_results', 'id', 'Id'), + ('dscenario_results', 'log', 'Log'), + ('dscenario_results', 'name', 'Name'), + ('dscenario_results', 'parent_id', 'Parent id'), + ('element', 'buildercat_id', 'Buildercat id'), + ('element', 'builtdate', 'Builtdate'), + ('element', 'category_type', 'Category type'), + ('element', 'code', 'Code'), + ('element', 'comment', 'Comment'), + ('element', 'element_id', 'Element id'), + ('element', 'elementcat_id', 'Elementcat id'), + ('element', 'enddate', 'Enddate'), + ('element', 'expl_id', 'Expl id'), + ('element', 'feature_type', 'Feature type'), + ('element', 'fluid_type', 'Fluid type'), + ('element', 'function_type', 'Function type'), + ('element', 'inventory', 'Inventory'), + ('element', 'label_rotation', 'Label rotation'), + ('element', 'label_x', 'Label x'), + ('element', 'label_y', 'Label y'), + ('element', 'link', 'Link'), + ('element', 'location_type', 'Location type'), + ('element', 'num_elements', 'Num elements'), + ('element', 'observ', 'Observ'), + ('element', 'ownercat_id', 'Ownercat id'), + ('element', 'publish', 'Publish'), + ('element', 'rotation', 'Rotation'), + ('element', 'serial_number', 'Serial number'), + ('element', 'state', 'State'), + ('element', 'state_type', 'State type'), + ('element', 'the_geom', 'The geom'), + ('element', 'tstamp', 'Tstamp'), + ('element', 'undelete', 'Undelete'), + ('element', 'verified', 'Verified'), + ('element', 'workcat_id', 'Workcat id'), + ('element', 'workcat_id_end', 'Workcat id end'), + ('epa_results', 'addparam', 'Addparam'), + ('epa_results', 'export_options', 'Export options'), + ('epa_results', 'id', 'Id'), + ('epa_results', 'inp_options', 'Inp options'), + ('epa_results', 'network_stats', 'Network stats'), + ('plan_psector', 'active', 'Active'), + ('plan_psector', 'atlas_id', 'Atlas id'), + ('plan_psector', 'descript', 'Descript'), + ('plan_psector', 'expl_id', 'Expl id'), + ('plan_psector', 'gexpenses', 'Gexpenses'), + ('plan_psector', 'name', 'Name'), + ('plan_psector', 'observ', 'Observ'), + ('plan_psector', 'other', 'Other'), + ('plan_psector', 'priority', 'Priority'), + ('plan_psector', 'psector_id', 'Psector id'), + ('plan_psector', 'psector_type', 'Psector type'), + ('plan_psector', 'rotation', 'Rotation'), + ('plan_psector', 'scale', 'Scale'), + ('plan_psector', 'sector_id', 'Sector id'), + ('plan_psector', 'text1', 'Text1'), + ('plan_psector', 'text2', 'Text2'), + ('plan_psector', 'the_geom', 'The geom'), + ('plan_psector', 'vat', 'Vat'), + ('plan_psector_x_arc', 'active', 'Active'), + ('plan_psector_x_arc', 'addparam', 'Addparam'), + ('plan_psector_x_arc', 'arc_id', 'Arc id'), + ('plan_psector_x_arc', 'descript', 'Descript'), + ('plan_psector_x_arc', 'doable', 'Doable'), + ('plan_psector_x_arc', 'id', 'Id'), + ('plan_psector_x_arc', 'insert_tstamp', 'Insert tstamp'), + ('plan_psector_x_arc', 'insert_user', 'Insert user'), + ('plan_psector_x_arc', 'psector_id', 'Psector id'), + ('plan_psector_x_arc', 'state', 'State'), + ('plan_psector_x_connec', '_link_geom_', ' link geom '), + ('plan_psector_x_connec', '_userdefined_geom_', ' userdefined geom '), + ('plan_psector_x_connec', 'arc_id', 'Arc id'), + ('plan_psector_x_connec', 'connec_id', 'Connec id'), + ('plan_psector_x_connec', 'descript', 'Descript'), + ('plan_psector_x_connec', 'doable', 'Doable'), + ('plan_psector_x_connec', 'id', 'Id'), + ('plan_psector_x_connec', 'insert_tstamp', 'Insert tstamp'), + ('plan_psector_x_connec', 'insert_user', 'Insert user'), + ('plan_psector_x_connec', 'link_id', 'Link id'), + ('plan_psector_x_connec', 'psector_id', 'Psector id'), + ('plan_psector_x_connec', 'state', 'State'), + ('plan_psector_x_node', 'active', 'Active'), + ('plan_psector_x_node', 'addparam', 'Addparam'), + ('plan_psector_x_node', 'descript', 'Descript'), + ('plan_psector_x_node', 'doable', 'Doable'), + ('plan_psector_x_node', 'id', 'Id'), + ('plan_psector_x_node', 'insert_tstamp', 'Insert tstamp'), + ('plan_psector_x_node', 'insert_user', 'Insert user'), + ('plan_psector_x_node', 'node_id', 'Node id'), + ('plan_psector_x_node', 'psector_id', 'Psector id'), + ('plan_psector_x_node', 'state', 'State'), + ('tbl_doc_x_arc', 'arc_id', 'Arc id'), + ('tbl_doc_x_arc', 'date', 'Date'), + ('tbl_doc_x_arc', 'doc_id', 'Doc id'), + ('tbl_doc_x_arc', 'doc_type', 'Doc type'), + ('tbl_doc_x_arc', 'id', 'Id'), + ('tbl_doc_x_arc', 'observ', 'Observ'), + ('tbl_doc_x_arc', 'path', 'Path'), + ('tbl_doc_x_arc', 'sys_id', 'Sys id'), + ('tbl_doc_x_arc', 'user_name', 'User name'), + ('tbl_doc_x_connec', 'connec_id', 'Connec id'), + ('tbl_doc_x_connec', 'date', 'Date'), + ('tbl_doc_x_connec', 'doc_id', 'Doc id'), + ('tbl_doc_x_connec', 'doc_type', 'Doc type'), + ('tbl_doc_x_connec', 'id', 'Id'), + ('tbl_doc_x_connec', 'observ', 'Observ'), + ('tbl_doc_x_connec', 'path', 'Path'), + ('tbl_doc_x_connec', 'sys_id', 'Sys id'), + ('tbl_doc_x_connec', 'user_name', 'User name'), + ('tbl_doc_x_link', 'date', 'Date'), + ('tbl_doc_x_link', 'doc_id', 'Doc id'), + ('tbl_doc_x_link', 'doc_type', 'Doc type'), + ('tbl_doc_x_link', 'id', 'Id'), + ('tbl_doc_x_link', 'link_id', 'Link id'), + ('tbl_doc_x_link', 'observ', 'Observ'), + ('tbl_doc_x_link', 'path', 'Path'), + ('tbl_doc_x_link', 'sys_id', 'Sys id'), + ('tbl_doc_x_link', 'user_name', 'User name'), + ('tbl_doc_x_node', 'date', 'Date'), + ('tbl_doc_x_node', 'doc_id', 'Doc id'), + ('tbl_doc_x_node', 'doc_type', 'Doc type'), + ('tbl_doc_x_node', 'id', 'Id'), + ('tbl_doc_x_node', 'node_id', 'Node id'), + ('tbl_doc_x_node', 'observ', 'Observ'), + ('tbl_doc_x_node', 'path', 'Path'), + ('tbl_doc_x_node', 'sys_id', 'Sys id'), + ('tbl_doc_x_node', 'user_name', 'User name'), + ('tbl_element_x_arc', 'arc_id', 'Arc id'), + ('tbl_element_x_arc', 'builtdate', 'Builtdate'), + ('tbl_element_x_arc', 'comment', 'Comment'), + ('tbl_element_x_arc', 'descript', 'Descript'), + ('tbl_element_x_arc', 'element_id', 'Element id'), + ('tbl_element_x_arc', 'element_type', 'Element type'), + ('tbl_element_x_arc', 'elementcat_id', 'Elementcat id'), + ('tbl_element_x_arc', 'enddate', 'Enddate'), + ('tbl_element_x_arc', 'epa_type', 'Epa type'), + ('tbl_element_x_arc', 'feature_class', 'Feature class'), + ('tbl_element_x_arc', 'id', 'id'), + ('tbl_element_x_arc', 'inventory', 'Inventory'), + ('tbl_element_x_arc', 'link', 'Link'), + ('tbl_element_x_arc', 'location_type', 'Location type'), + ('tbl_element_x_arc', 'num_elements', 'Num elements'), + ('tbl_element_x_arc', 'observ', 'Observ'), + ('tbl_element_x_arc', 'publish', 'Publish'), + ('tbl_element_x_arc', 'state', 'State'), + ('tbl_element_x_arc', 'state_type', 'State type'), + ('tbl_element_x_arc', 'sys_id', 'sys_id'), + ('tbl_element_x_connec', 'builtdate', 'Builtdate'), + ('tbl_element_x_connec', 'comment', 'Comment'), + ('tbl_element_x_connec', 'connec_id', 'Connec id'), + ('tbl_element_x_connec', 'descript', 'Descript'), + ('tbl_element_x_connec', 'element_id', 'Element id'), + ('tbl_element_x_connec', 'element_type', 'Element type'), + ('tbl_element_x_connec', 'elementcat_id', 'Elementcat id'), + ('tbl_element_x_connec', 'enddate', 'Enddate'), + ('tbl_element_x_connec', 'epa_type', 'Epa type'), + ('tbl_element_x_connec', 'feature_class', 'Feature class'), + ('tbl_element_x_connec', 'id', 'id'), + ('tbl_element_x_connec', 'inventory', 'Inventory'), + ('tbl_element_x_connec', 'link', 'Link'), + ('tbl_element_x_connec', 'location_type', 'Location type'), + ('tbl_element_x_connec', 'num_elements', 'Num elements'), + ('tbl_element_x_connec', 'observ', 'Observ'), + ('tbl_element_x_connec', 'publish', 'Publish'), + ('tbl_element_x_connec', 'state', 'State'), + ('tbl_element_x_connec', 'state_type', 'State type'), + ('tbl_element_x_connec', 'sys_id', 'sys_id'), + ('tbl_element_x_gully', 'sys_id', 'sys_id'), + ('tbl_element_x_link', 'builtdate', 'Builtdate'), + ('tbl_element_x_link', 'comment', 'Comment'), + ('tbl_element_x_link', 'descript', 'Descript'), + ('tbl_element_x_link', 'element_id', 'Element id'), + ('tbl_element_x_link', 'element_type', 'Element type'), + ('tbl_element_x_link', 'elementcat_id', 'Elementcat id'), + ('tbl_element_x_link', 'enddate', 'Enddate'), + ('tbl_element_x_link', 'epa_type', 'Epa type'), + ('tbl_element_x_link', 'feature_class', 'Feature class'), + ('tbl_element_x_link', 'inventory', 'Inventory'), + ('tbl_element_x_link', 'link', 'Link'), + ('tbl_element_x_link', 'link_id', 'Link id'), + ('tbl_element_x_link', 'location_type', 'Location type'), + ('tbl_element_x_link', 'num_elements', 'Num elements'), + ('tbl_element_x_link', 'observ', 'Observ'), + ('tbl_element_x_link', 'publish', 'Publish'), + ('tbl_element_x_link', 'state', 'State'), + ('tbl_element_x_link', 'state_type', 'State type'), + ('tbl_element_x_node', 'builtdate', 'Builtdate'), + ('tbl_element_x_node', 'comment', 'Comment'), + ('tbl_element_x_node', 'descript', 'Descript'), + ('tbl_element_x_node', 'element_id', 'Element id'), + ('tbl_element_x_node', 'element_type', 'Element type'), + ('tbl_element_x_node', 'elementcat_id', 'Elementcat id'), + ('tbl_element_x_node', 'enddate', 'Enddate'), + ('tbl_element_x_node', 'epa_type', 'Epa type'), + ('tbl_element_x_node', 'feature_class', 'Feature class'), + ('tbl_element_x_node', 'id', 'id'), + ('tbl_element_x_node', 'inventory', 'Inventory'), + ('tbl_element_x_node', 'link', 'Link'), + ('tbl_element_x_node', 'location_type', 'Location type'), + ('tbl_element_x_node', 'node_id', 'Node id'), + ('tbl_element_x_node', 'num_elements', 'Num elements'), + ('tbl_element_x_node', 'observ', 'Observ'), + ('tbl_element_x_node', 'publish', 'Publish'), + ('tbl_element_x_node', 'state', 'State'), + ('tbl_element_x_node', 'state_type', 'State type'), + ('tbl_element_x_node', 'sys_id', 'sys_id'), + ('tbl_frelem_dsc_pump', 'curve_id', 'Curve id'), + ('tbl_frelem_dsc_pump', 'dscenario_id', 'Dscenario id'), + ('tbl_frelem_dsc_pump', 'element_id', 'Element id'), + ('tbl_frelem_dsc_pump', 'node_id', 'Node id'), + ('tbl_frelem_dsc_pump', 'status', 'Status'), + ('tbl_frelem_dsc_pump', 'the_geom', 'The geom'), + ('tbl_hydrometer', 'connec_customer_code', 'Connec ccode'), + ('tbl_hydrometer', 'connec_id', 'Sys connec id'), + ('tbl_hydrometer', 'expl_id', 'Exploitation'), + ('tbl_hydrometer', 'hydrometer_customer_code', 'Hydro ccode'), + ('tbl_hydrometer', 'hydrometer_id', 'Sys hydrometer id'), + ('tbl_hydrometer', 'hydrometer_link', 'Link'), + ('tbl_hydrometer', 'state', 'State'), + ('tbl_nvo_mng_controls', 'active', 'Active'), + ('tbl_nvo_mng_controls', 'id', 'Id'), + ('tbl_nvo_mng_controls', 'sector_id', 'Sector id'), + ('tbl_nvo_mng_controls', 'text', 'Text'), + ('tbl_nvo_mng_curves', 'curve_type', 'Curve type'), + ('tbl_nvo_mng_curves', 'descript', 'Descript'), + ('tbl_nvo_mng_curves', 'expl_id', 'Expl id'), + ('tbl_nvo_mng_curves', 'id', 'Id'), + ('tbl_nvo_mng_curves', 'log', 'Log'), + ('tbl_nvo_mng_patterns', 'expl_id', 'Expl id'), + ('tbl_nvo_mng_patterns', 'log', 'Log'), + ('tbl_nvo_mng_patterns', 'observ', 'Observ'), + ('tbl_nvo_mng_patterns', 'pattern_id', 'Pattern id'), + ('tbl_nvo_mng_patterns', 'tscode', 'Tscode'), + ('tbl_nvo_mng_patterns', 'tsparameters', 'Tsparameters'), + ('tbl_relations', 'arc_id', 'Arc id'), + ('tbl_relations', 'catalog', 'Catalog'), + ('tbl_relations', 'feature_code', 'Feature code'), + ('tbl_relations', 'feature_id', 'Feature id'), + ('tbl_relations', 'feature_state', 'Feature state'), + ('tbl_relations', 'featurecat_id', 'Featurecat id'), + ('tbl_relations', 'rid', 'Rid'), + ('tbl_relations', 'sys_id', 'Sys id'), + ('tbl_relations', 'sys_table_id', 'Sys table id'), + ('tbl_relations', 'sys_type', 'Sys type'), + ('tbl_relations', 'x', 'X'), + ('tbl_relations', 'y', 'Y'), + ('tbl_visit_x_arc', 'sys_id', 'Sys id'), + ('tbl_visit_x_connec', 'sys_id', 'Sys id'), + ('tbl_visit_x_node', 'sys_id', 'Sys id'), + ('tbl_workspace_manager', 'config', 'Config'), + ('tbl_workspace_manager', 'descript', 'Descript'), + ('tbl_workspace_manager', 'id', 'Id'), + ('tbl_workspace_manager', 'name', 'Name'), + ('tbl_workspace_manager', 'private', 'Private'), + ('v_edit_plan_psector_x_connec', 'active', 'Active'), + ('v_edit_plan_psector_x_connec', 'arc_id', 'Arc id'), + ('v_edit_plan_psector_x_connec', 'connec_id', 'Connec id'), + ('v_edit_plan_psector_x_connec', 'descript', 'Descript'), + ('v_edit_plan_psector_x_connec', 'doable', 'Doable'), + ('v_edit_plan_psector_x_connec', 'id', 'Id'), + ('v_edit_plan_psector_x_connec', 'insert_tstamp', 'Insert tstamp'), + ('v_edit_plan_psector_x_connec', 'insert_user', 'Insert user'), + ('v_edit_plan_psector_x_connec', 'link_id', 'Link id'), + ('v_edit_plan_psector_x_connec', 'psector_id', 'Psector id'), + ('v_edit_plan_psector_x_connec', 'rank', 'Rank'), + ('v_edit_plan_psector_x_connec', 'state', 'State'), + ('v_edit_plan_psector_x_other', 'id', 'Id'), + ('v_edit_plan_psector_x_other', 'psector_id', 'Psector id'), + ('v_plan_node', 'annotation', 'Annotation'), + ('v_plan_node', 'budget', 'Budget'), + ('v_plan_node', 'cost', 'Cost'), + ('v_plan_node', 'cost_unit', 'Cost unit'), + ('v_plan_node', 'descript', 'Descript'), + ('v_plan_node', 'elev', 'Elev'), + ('v_plan_node', 'epa_type', 'Epa type'), + ('v_plan_node', 'expl_id', 'Expl id'), + ('v_plan_node', 'measurement', 'Units'), + ('v_plan_node', 'node_id', 'Node id'), + ('v_plan_node', 'node_type', 'Node type'), + ('v_plan_node', 'nodecat_id', 'Nodecat id'), + ('v_plan_node', 'sector_id', 'Sector id'), + ('v_plan_node', 'state', 'State'), + ('v_plan_node', 'the_geom', 'The geom'), + ('v_plan_node', 'top_elev', 'Top elev'), + ('v_price_compost', 'descript', 'Descript'), + ('v_price_compost', 'id', 'Id'), + ('v_price_compost', 'price', 'Price'), + ('v_price_compost', 'unit', 'Unit'), + ('v_rtc_hydrometer', 'address1', 'Address1'), + ('v_rtc_hydrometer', 'address2', 'Address2'), + ('v_rtc_hydrometer', 'address2_1', 'Address2 1'), + ('v_rtc_hydrometer', 'address2_2', 'Address2 2'), + ('v_rtc_hydrometer', 'address2_3', 'Address2 3'), + ('v_rtc_hydrometer', 'address3', 'Address3'), + ('v_rtc_hydrometer', 'catalog_id', 'Catalog id'), + ('v_rtc_hydrometer', 'category_id', 'Category id'), + ('v_rtc_hydrometer', 'connec_customer_code', 'Connec customer code'), + ('v_rtc_hydrometer', 'connec_id', 'Connec id'), + ('v_rtc_hydrometer', 'crm_number', 'Crm number'), + ('v_rtc_hydrometer', 'customer_name', 'Customer name'), + ('v_rtc_hydrometer', 'end_date', 'End date'), + ('v_rtc_hydrometer', 'expl_id', 'Expl id'), + ('v_rtc_hydrometer', 'expl_name', 'Expl name'), + ('v_rtc_hydrometer', 'hydro_man_date', 'Hydro man date'), + ('v_rtc_hydrometer', 'hydro_number', 'Hydro number'), + ('v_rtc_hydrometer', 'hydrometer_customer_code', 'Hydrometer customer code'), + ('v_rtc_hydrometer', 'hydrometer_id', 'Hydrometer id'), + ('v_rtc_hydrometer', 'hydrometer_link', 'Hydrometer link'), + ('v_rtc_hydrometer', 'm3_volume', 'M3 volume'), + ('v_rtc_hydrometer', 'muni_name', 'Muni name'), + ('v_rtc_hydrometer', 'plot_code', 'Plot code'), + ('v_rtc_hydrometer', 'priority_id', 'Priority id'), + ('v_rtc_hydrometer', 'start_date', 'Start date'), + ('v_rtc_hydrometer', 'state', 'State'), + ('v_rtc_hydrometer', 'update_date', 'Update date'), + ('v_rtc_hydrometer_x_connec', 'connec_id', 'Connec id'), + ('v_rtc_hydrometer_x_connec', 'n_hydrometer', 'N hydrometer'), + ('v_ui_arc_x_relations', 'arc_id', 'arc_id'), + ('v_ui_arc_x_relations', 'arc_state', 'arc_state'), + ('v_ui_arc_x_relations', 'catalog', 'catalog'), + ('v_ui_arc_x_relations', 'feature_code', 'feature_code'), + ('v_ui_arc_x_relations', 'feature_id', 'feature_id'), + ('v_ui_arc_x_relations', 'feature_state', 'feature_state'), + ('v_ui_arc_x_relations', 'featurecat_id', 'featurecat_id'), + ('v_ui_arc_x_relations', 'proceed_from', 'proceed_from'), + ('v_ui_arc_x_relations', 'proceed_from_id', 'proceed_from_id'), + ('v_ui_arc_x_relations', 'sys_id', 'sys_id'), + ('v_ui_arc_x_relations', 'sys_table_id', 'sys_table_id'), + ('v_ui_arc_x_relations', 'sys_type', 'sys_type'), + ('v_ui_doc', 'date', 'Date'), + ('v_ui_doc', 'doc_type', 'Doc type'), + ('v_ui_doc', 'id', 'Id'), + ('v_ui_doc', 'name', 'Name'), + ('v_ui_doc', 'observ', 'Observ'), + ('v_ui_doc', 'path', 'Path'), + ('v_ui_doc', 'user_name', 'User name'), + ('v_ui_mincut_hydrometer', 'anl_cause', 'Anl cause'), + ('v_ui_mincut_hydrometer', 'anl_descript', 'Anl descript'), + ('v_ui_mincut_hydrometer', 'anl_tstamp', 'Anl tstamp'), + ('v_ui_mincut_hydrometer', 'anl_user', 'Anl user'), + ('v_ui_mincut_hydrometer', 'connec_id', 'Connec id'), + ('v_ui_mincut_hydrometer', 'end_date', 'End date'), + ('v_ui_mincut_hydrometer', 'exec_appropiate', 'Exec appropiate'), + ('v_ui_mincut_hydrometer', 'exec_descript', 'Exec descript'), + ('v_ui_mincut_hydrometer', 'exec_end', 'Exec end'), + ('v_ui_mincut_hydrometer', 'exec_start', 'Exec start'), + ('v_ui_mincut_hydrometer', 'exec_user', 'Exec user'), + ('v_ui_mincut_hydrometer', 'forecast_end', 'Forecast end'), + ('v_ui_mincut_hydrometer', 'forecast_start', 'Forecast start'), + ('v_ui_mincut_hydrometer', 'hydrometer_id', 'Hydrometer id'), + ('v_ui_mincut_hydrometer', 'id', 'Id'), + ('v_ui_mincut_hydrometer', 'mincut_class', 'Mincut class'), + ('v_ui_mincut_hydrometer', 'mincut_state', 'Mincut state'), + ('v_ui_mincut_hydrometer', 'mincut_type', 'Mincut type'), + ('v_ui_mincut_hydrometer', 'received_date', 'Received date'), + ('v_ui_mincut_hydrometer', 'result_id', 'Result id'), + ('v_ui_mincut_hydrometer', 'start_date', 'Start date'), + ('v_ui_mincut_hydrometer', 'work_order', 'Work order'), + ('v_ui_node_x_relations', 'code', 'Code'), + ('v_ui_node_x_relations', 'node_id', 'Node id'), + ('v_ui_node_x_relations', 'nodecat_id', 'Nodecat id'), + ('v_ui_node_x_relations', 'nodetype_id', 'Nodetype id'), + ('v_ui_node_x_relations', 'parent_id', 'Parent id'), + ('v_ui_node_x_relations', 'rid', 'Rid'), + ('v_ui_node_x_relations', 'sys_type', 'Sys type'), + ('v_ui_om_result_cat', 'cur_user', 'Cur user'), + ('v_ui_om_result_cat', 'descript', 'Descript'), + ('v_ui_om_result_cat', 'name', 'Name'), + ('v_ui_om_result_cat', 'network_price_coeff', 'Network price coeff'), + ('v_ui_om_result_cat', 'pricecat_id', 'Pricecat id'), + ('v_ui_om_result_cat', 'result_id', 'Result id'), + ('v_ui_om_result_cat', 'result_type', 'Result type'), + ('v_ui_om_result_cat', 'tstamp', 'Tstamp'), + ('v_ui_om_visit', 'descript', 'Descript'), + ('v_ui_om_visit', 'enddate', 'Enddate'), + ('v_ui_om_visit', 'exploitation', 'Exploitation'), + ('v_ui_om_visit', 'ext_code', 'Ext code'), + ('v_ui_om_visit', 'id', 'Id'), + ('v_ui_om_visit', 'is_done', 'Is done'), + ('v_ui_om_visit', 'startdate', 'Startdate'), + ('v_ui_om_visit', 'the_geom', 'The geom'), + ('v_ui_om_visit', 'user_name', 'User name'), + ('v_ui_om_visit', 'visit_catalog', 'Visit catalog'), + ('v_ui_om_visit', 'webclient_id', 'Webclient id'), + ('v_ui_om_visit_x_arc', 'arc_id', 'Arc id'), + ('v_ui_om_visit_x_arc', 'code', 'Code'), + ('v_ui_om_visit_x_arc', 'compass', 'Compass'), + ('v_ui_om_visit_x_arc', 'descript', 'Descript'), + ('v_ui_om_visit_x_arc', 'document', 'Document'), + ('v_ui_om_visit_x_arc', 'event_code', 'Event code'), + ('v_ui_om_visit_x_arc', 'event_id', 'Event id'), + ('v_ui_om_visit_x_arc', 'feature_type', 'Feature type'), + ('v_ui_om_visit_x_arc', 'form_type', 'Form type'), + ('v_ui_om_visit_x_arc', 'gallery', 'Gallery'), + ('v_ui_om_visit_x_arc', 'is_done', 'Is done'), + ('v_ui_om_visit_x_arc', 'parameter_id', 'Parameter id'), + ('v_ui_om_visit_x_arc', 'parameter_type', 'Parameter type'), + ('v_ui_om_visit_x_arc', 'tstamp', 'Tstamp'), + ('v_ui_om_visit_x_arc', 'user_name', 'User name'), + ('v_ui_om_visit_x_arc', 'value', 'Value'), + ('v_ui_om_visit_x_arc', 'visit_end', 'Visit end'), + ('v_ui_om_visit_x_arc', 'visit_id', 'Visit id'), + ('v_ui_om_visit_x_arc', 'visit_start', 'Visit start'), + ('v_ui_om_visit_x_arc', 'visitcat_id', 'Visitcat id'), + ('v_ui_om_visit_x_arc', 'xcoord', 'Xcoord'), + ('v_ui_om_visit_x_arc', 'ycoord', 'Ycoord'), + ('v_ui_om_visit_x_connec', 'code', 'Code'), + ('v_ui_om_visit_x_connec', 'compass', 'Compass'), + ('v_ui_om_visit_x_connec', 'connec_id', 'Connec id'), + ('v_ui_om_visit_x_connec', 'descript', 'Descript'), + ('v_ui_om_visit_x_connec', 'document', 'Document'), + ('v_ui_om_visit_x_connec', 'event_code', 'Event code'), + ('v_ui_om_visit_x_connec', 'event_id', 'Event id'), + ('v_ui_om_visit_x_connec', 'feature_type', 'Feature type'), + ('v_ui_om_visit_x_connec', 'form_type', 'Form type'), + ('v_ui_om_visit_x_connec', 'gallery', 'Gallery'), + ('v_ui_om_visit_x_connec', 'is_done', 'Is done'), + ('v_ui_om_visit_x_connec', 'parameter_id', 'Parameter id'), + ('v_ui_om_visit_x_connec', 'parameter_type', 'Parameter type'), + ('v_ui_om_visit_x_connec', 'tstamp', 'Tstamp'), + ('v_ui_om_visit_x_connec', 'user_name', 'User name'), + ('v_ui_om_visit_x_connec', 'value', 'Value'), + ('v_ui_om_visit_x_connec', 'visit_end', 'Visit end'), + ('v_ui_om_visit_x_connec', 'visit_id', 'Visit id'), + ('v_ui_om_visit_x_connec', 'visit_start', 'Visit start'), + ('v_ui_om_visit_x_connec', 'visitcat_id', 'Visitcat id'), + ('v_ui_om_visit_x_connec', 'xcoord', 'Xcoord'), + ('v_ui_om_visit_x_connec', 'ycoord', 'Ycoord'), + ('v_ui_om_visit_x_gully', 'compass', 'Compass'), + ('v_ui_om_visit_x_gully', 'descript', 'Descript'), + ('v_ui_om_visit_x_gully', 'document', 'Document'), + ('v_ui_om_visit_x_gully', 'event_code', 'Event code'), + ('v_ui_om_visit_x_gully', 'event_id', 'Event id'), + ('v_ui_om_visit_x_gully', 'ext_code', 'Ext code'), + ('v_ui_om_visit_x_gully', 'feature_type', 'Feature type'), + ('v_ui_om_visit_x_gully', 'form_type', 'Form type'), + ('v_ui_om_visit_x_gully', 'gallery', 'Gallery'), + ('v_ui_om_visit_x_gully', 'gully_id', 'Gully id'), + ('v_ui_om_visit_x_gully', 'is_done', 'Is done'), + ('v_ui_om_visit_x_gully', 'parameter_id', 'Parameter id'), + ('v_ui_om_visit_x_gully', 'parameter_type', 'Parameter type'), + ('v_ui_om_visit_x_gully', 'tstamp', 'Tstamp'), + ('v_ui_om_visit_x_gully', 'user_name', 'User name'), + ('v_ui_om_visit_x_gully', 'value', 'Value'), + ('v_ui_om_visit_x_gully', 'visit_end', 'Visit end'), + ('v_ui_om_visit_x_gully', 'visit_id', 'Visit id'), + ('v_ui_om_visit_x_gully', 'visit_start', 'Visit start'), + ('v_ui_om_visit_x_gully', 'visitcat_id', 'Visitcat id'), + ('v_ui_om_visit_x_gully', 'xcoord', 'Xcoord'), + ('v_ui_om_visit_x_gully', 'ycoord', 'Ycoord'), + ('v_ui_om_visit_x_node', 'code', 'Code'), + ('v_ui_om_visit_x_node', 'compass', 'Compass'), + ('v_ui_om_visit_x_node', 'descript', 'Descript'), + ('v_ui_om_visit_x_node', 'document', 'Document'), + ('v_ui_om_visit_x_node', 'event_code', 'Event code'), + ('v_ui_om_visit_x_node', 'event_id', 'Event id'), + ('v_ui_om_visit_x_node', 'feature_type', 'Feature type'), + ('v_ui_om_visit_x_node', 'form_type', 'Form type'), + ('v_ui_om_visit_x_node', 'gallery', 'Gallery'), + ('v_ui_om_visit_x_node', 'is_done', 'Is done'), + ('v_ui_om_visit_x_node', 'node_id', 'Node id'), + ('v_ui_om_visit_x_node', 'parameter_id', 'Parameter id'), + ('v_ui_om_visit_x_node', 'parameter_type', 'Parameter type'), + ('v_ui_om_visit_x_node', 'tstamp', 'Tstamp'), + ('v_ui_om_visit_x_node', 'user_name', 'User name'), + ('v_ui_om_visit_x_node', 'value', 'Value'), + ('v_ui_om_visit_x_node', 'visit_end', 'Visit end'), + ('v_ui_om_visit_x_node', 'visit_id', 'Visit id'), + ('v_ui_om_visit_x_node', 'visit_start', 'Visit start'), + ('v_ui_om_visit_x_node', 'visitcat_id', 'Visitcat id'), + ('v_ui_om_visit_x_node', 'xcoord', 'Xcoord'), + ('v_ui_om_visit_x_node', 'ycoord', 'Ycoord'), + ('v_ui_om_visitman_x_arc', 'arc_id', 'Arc id'), + ('v_ui_om_visitman_x_arc', 'code', 'Code'), + ('v_ui_om_visitman_x_arc', 'feature_type', 'Feature type'), + ('v_ui_om_visitman_x_arc', 'form_type', 'Form type'), + ('v_ui_om_visitman_x_arc', 'is_done', 'Is done'), + ('v_ui_om_visitman_x_arc', 'user_name', 'User name'), + ('v_ui_om_visitman_x_arc', 'visit_end', 'Visit end'), + ('v_ui_om_visitman_x_arc', 'visit_id', 'Visit id'), + ('v_ui_om_visitman_x_arc', 'visit_start', 'Visit start'), + ('v_ui_om_visitman_x_arc', 'visitcat_name', 'Visitcat name'), + ('v_ui_om_visitman_x_connec', 'code', 'Code'), + ('v_ui_om_visitman_x_connec', 'connec_id', 'Connec id'), + ('v_ui_om_visitman_x_connec', 'feature_type', 'Feature type'), + ('v_ui_om_visitman_x_connec', 'form_type', 'Form type'), + ('v_ui_om_visitman_x_connec', 'is_done', 'Is done'), + ('v_ui_om_visitman_x_connec', 'user_name', 'User name'), + ('v_ui_om_visitman_x_connec', 'visit_end', 'Visit end'), + ('v_ui_om_visitman_x_connec', 'visit_id', 'Visit id'), + ('v_ui_om_visitman_x_connec', 'visit_start', 'Visit start'), + ('v_ui_om_visitman_x_connec', 'visitcat_name', 'Visitcat name'), + ('v_ui_om_visitman_x_node', 'code', 'Code'), + ('v_ui_om_visitman_x_node', 'feature_type', 'Feature type'), + ('v_ui_om_visitman_x_node', 'form_type', 'Form type'), + ('v_ui_om_visitman_x_node', 'is_done', 'Is done'), + ('v_ui_om_visitman_x_node', 'node_id', 'Node id'), + ('v_ui_om_visitman_x_node', 'user_name', 'User name'), + ('v_ui_om_visitman_x_node', 'visit_end', 'Visit end'), + ('v_ui_om_visitman_x_node', 'visit_id', 'Visit id'), + ('v_ui_om_visitman_x_node', 'visit_start', 'Visit start'), + ('v_ui_om_visitman_x_node', 'visitcat_name', 'Visitcat name'), + ('v_ui_plan_psector', 'active', 'Active'), + ('v_ui_plan_psector', 'archived', 'Archived'), + ('v_ui_plan_psector', 'creation_date', 'Creation date'), + ('v_ui_plan_psector', 'descript', 'Descript'), + ('v_ui_plan_psector', 'expl_id', 'Expl id'), + ('v_ui_plan_psector', 'ext_code', 'Ext code'), + ('v_ui_plan_psector', 'name', 'Name'), + ('v_ui_plan_psector', 'observ', 'Observ'), + ('v_ui_plan_psector', 'other', 'Other'), + ('v_ui_plan_psector', 'parent_id', 'Parent id'), + ('v_ui_plan_psector', 'priority', 'Priority'), + ('v_ui_plan_psector', 'psector_id', 'Psector id'), + ('v_ui_plan_psector', 'psector_type', 'Psector type'), + ('v_ui_plan_psector', 'status', 'Status'), + ('v_ui_plan_psector', 'text1', 'Text1'), + ('v_ui_plan_psector', 'text2', 'Text2'), + ('v_ui_plan_psector', 'vat', 'Vat'), + ('v_ui_plan_psector', 'workcat_id', 'Workcat id'), + ('v_ui_plan_psector', 'workcat_id_plan', 'Workcat id plan'), + ('v_ui_rpt_cat_result', 'addparam', 'Addparam'), + ('v_ui_rpt_cat_result', 'cur_user', 'Cur user'), + ('v_ui_rpt_cat_result', 'descript', 'Descript'), + ('v_ui_rpt_cat_result', 'exec_date', 'Exec date'), + ('v_ui_rpt_cat_result', 'expl_id', 'Expl id'), + ('v_ui_rpt_cat_result', 'export_options', 'Export options'), + ('v_ui_rpt_cat_result', 'inp_options', 'Inp options'), + ('v_ui_rpt_cat_result', 'iscorporate', 'Iscorporate'), + ('v_ui_rpt_cat_result', 'network_stats', 'Network stats'), + ('v_ui_rpt_cat_result', 'network_type', 'Network type'), + ('v_ui_rpt_cat_result', 'result_id', 'Result id'), + ('v_ui_rpt_cat_result', 'rpt_stats', 'Rpt stats'), + ('v_ui_rpt_cat_result', 'sector_id', 'Sector id'), + ('v_ui_rpt_cat_result', 'status', 'Status'), + ('v_ui_workcat_x_feature', 'code', 'Code'), + ('v_ui_workcat_x_feature', 'expl_id', 'Expl id'), + ('v_ui_workcat_x_feature', 'expl_name', 'Expl name'), + ('v_ui_workcat_x_feature', 'feature_id', 'Feature id'), + ('v_ui_workcat_x_feature', 'feature_type', 'Feature type'), + ('v_ui_workcat_x_feature', 'featurecat_id', 'Featurecat id'), + ('v_ui_workcat_x_feature', 'rid', 'Rid'), + ('v_ui_workcat_x_feature', 'workcat_id', 'Workcat id'), + ('v_ui_workcat_x_feature_end', 'code', 'Code'), + ('v_ui_workcat_x_feature_end', 'expl_id', 'Expl id'), + ('v_ui_workcat_x_feature_end', 'expl_name', 'Expl name'), + ('v_ui_workcat_x_feature_end', 'feature_id', 'Feature id'), + ('v_ui_workcat_x_feature_end', 'feature_type', 'Feature type'), + ('v_ui_workcat_x_feature_end', 'featurecat_id', 'Featurecat id'), + ('v_ui_workcat_x_feature_end', 'rid', 'Rid'), + ('v_ui_workcat_x_feature_end', 'workcat_id', 'Workcat id'), + ('ve_inp_controls', 'active', 'Active'), + ('ve_inp_controls', 'id', 'Id'), + ('ve_inp_controls', 'sector_id', 'Sector id'), + ('ve_inp_controls', 'text', 'Text'), + ('ve_inp_curve', 'active', 'Active'), + ('ve_inp_curve', 'curve_type', 'Curve type'), + ('ve_inp_curve', 'descript', 'Descript'), + ('ve_inp_curve', 'expl_id', 'Expl id'), + ('ve_inp_curve', 'id', 'Id'), + ('ve_inp_pattern', 'expl_id', 'Expl id'), + ('ve_inp_pattern', 'observ', 'Observ'), + ('ve_inp_pattern', 'pattern_id', 'Pattern id'), + ('ve_inp_pattern', 'pattern_type', 'Pattern type'), + ('cat_mat_roughness', 'active', 'Active'), + ('cat_mat_roughness', 'descript', 'Descript'), + ('cat_mat_roughness', 'end_age', 'End age'), + ('cat_mat_roughness', 'id', 'Id'), + ('cat_mat_roughness', 'init_age', 'Init age'), + ('cat_mat_roughness', 'matcat_id', 'Matcat id'), + ('cat_mat_roughness', 'period_id', 'Period id'), + ('cat_mat_roughness', 'roughness', 'Roughness'), + ('dscenario_additional', 'id', 'Id'), + ('dscenario_conduit', 'id', 'id'), + ('dscenario_connec', 'id', 'Id'), + ('dscenario_demand', 'id', 'Id'), + ('dscenario_inflows', 'id', 'id'), + ('dscenario_inlet', 'id', 'Id'), + ('dscenario_lids', 'id', 'id'), + ('dscenario_orifice', 'id', 'id'), + ('dscenario_outfall', 'id', 'id'), + ('dscenario_outlet', 'id', 'id'), + ('dscenario_pipe', 'id', 'Id'), + ('dscenario_poll', 'id', 'id'), + ('dscenario_raingage', 'id', 'id'), + ('dscenario_reservoir', 'id', 'Id'), + ('dscenario_rules', 'id', 'Id'), + ('dscenario_shortpipe', 'id', 'Id'), + ('dscenario_storage', 'id', 'id'), + ('dscenario_tank', 'id', 'Id'), + ('dscenario_treatment', 'id', 'id'), + ('dscenario_valve', 'id', 'Id'), + ('dscenario_virtualpump', 'id', 'Id'), + ('dscenario_virtualvalve', 'id', 'Id'), + ('dscenario_weir', 'id', 'id'), + ('inp_dscenario_demand', 'demand', 'Demand'), + ('inp_dscenario_demand', 'demand_type', 'Demand type'), + ('inp_dscenario_demand', 'dscenario_id', 'Dscenario id'), + ('inp_dscenario_demand', 'feature_id', 'Feature id'), + ('inp_dscenario_demand', 'feature_type', 'Feature type'), + ('inp_dscenario_demand', 'id', 'Id'), + ('inp_dscenario_demand', 'pattern_id', 'Pattern id'), + ('inp_dscenario_demand', 'source', 'Source'), + ('inp_dscenario_pump_additional', 'curve_id', 'Curve id'), + ('inp_dscenario_pump_additional', 'dscenario_id', 'Dscenario id'), + ('inp_dscenario_pump_additional', 'effic_curve_id', 'Effic curve id'), + ('inp_dscenario_pump_additional', 'energy_pattern_id', 'Energy pattern id'), + ('inp_dscenario_pump_additional', 'energy_price', 'Energy price'), + ('inp_dscenario_pump_additional', 'energyparam', 'Energyparam'), + ('inp_dscenario_pump_additional', 'energyvalue', 'Energyvalue'), + ('inp_dscenario_pump_additional', 'id', 'Id'), + ('inp_dscenario_pump_additional', 'node_id', 'Node id'), + ('inp_dscenario_pump_additional', 'order_id', 'Order id'), + ('inp_dscenario_pump_additional', 'pattern_id', 'Pattern id'), + ('inp_dscenario_pump_additional', 'power', 'Power'), + ('inp_dscenario_pump_additional', 'speed', 'Speed'), + ('inp_dscenario_pump_additional', 'status', 'Status'), + ('inp_pump_additional', 'curve_id', 'Curve id'), + ('inp_pump_additional', 'effic_curve_id', 'Effic curve id'), + ('inp_pump_additional', 'energy_pattern_id', 'Energy pattern id'), + ('inp_pump_additional', 'energy_price', 'Energy price'), + ('inp_pump_additional', 'energyparam', 'Energyparam'), + ('inp_pump_additional', 'energyvalue', 'Energyvalue'), + ('inp_pump_additional', 'id', 'Id'), + ('inp_pump_additional', 'node_id', 'Node id'), + ('inp_pump_additional', 'order_id', 'Order id'), + ('inp_pump_additional', 'pattern_id', 'Pattern id'), + ('inp_pump_additional', 'power', 'Power'), + ('inp_pump_additional', 'speed', 'Speed'), + ('inp_pump_additional', 'status', 'Status'), + ('plan_netscenario_arc', 'netscenari_id', 'Netscenari id'), + ('plan_netscenario_connec', 'netscenari_id', 'Netscenari id'), + ('plan_netscenario_dma', 'netscenari_id', 'Netscenari id'), + ('plan_netscenario_node', 'netscenari_id', 'Netscenari id'), + ('plan_netscenario_valve', 'netscenari_id', 'Netscenari id'), + ('tbl_doc_x_gully', 'sys_id', 'sys_id'), + ('tbl_frelem_dsc_pump', 'effic_curve_id', 'Effic curve id'), + ('tbl_frelem_dsc_pump', 'energy_pattern_id', 'Energy pattern id'), + ('tbl_frelem_dsc_pump', 'energy_price', 'Energy price'), + ('tbl_frelem_dsc_pump', 'pattern_id', 'Pattern id'), + ('tbl_frelem_dsc_pump', 'power', 'Power'), + ('tbl_frelem_dsc_pump', 'speed', 'Speed'), + ('tbl_frelem_dsc_shortpipe', 'bulk_coeff', 'Bulk coeff'), + ('tbl_frelem_dsc_shortpipe', 'custom_dint', 'Custom dint'), + ('tbl_frelem_dsc_shortpipe', 'dscenario_id', 'Dscenario id'), + ('tbl_frelem_dsc_shortpipe', 'element_id', 'Element id'), + ('tbl_frelem_dsc_shortpipe', 'minorloss', 'Minorloss'), + ('tbl_frelem_dsc_shortpipe', 'node_id', 'Node id'), + ('tbl_frelem_dsc_shortpipe', 'the_geom', 'The geom'), + ('tbl_frelem_dsc_shortpipe', 'wall_coeff', 'Wall coeff'), + ('tbl_frelem_dsc_valve', 'add_settings', 'Add settings'), + ('tbl_frelem_dsc_valve', 'curve_id', 'Curve id'), + ('tbl_frelem_dsc_valve', 'custom_dint', 'Custom dint'), + ('tbl_frelem_dsc_valve', 'dscenario_id', 'Dscenario id'), + ('tbl_frelem_dsc_valve', 'element_id', 'Element id'), + ('tbl_frelem_dsc_valve', 'init_quality', 'Init quality'), + ('tbl_frelem_dsc_valve', 'minorloss', 'Minorloss'), + ('tbl_frelem_dsc_valve', 'node_id', 'Node id'), + ('tbl_frelem_dsc_valve', 'setting', 'Setting'), + ('tbl_frelem_dsc_valve', 'the_geom', 'The geom'), + ('tbl_frelem_dsc_valve', 'valve_type', 'Valve type'), + ('tbl_mincut_hydro', 'connec_code', 'Connec code'), + ('tbl_mincut_hydro', 'connec_id', 'Connec id'), + ('tbl_mincut_hydro', 'hydrometer_customer_code', 'Hydrometer customer code'), + ('tbl_mincut_hydro', 'hydrometer_id', 'Hydrometer id'), + ('tbl_mincut_manager', 'anl_cause', 'Anl cause'), + ('tbl_mincut_manager', 'anl_descript', 'Anl descript'), + ('tbl_mincut_manager', 'anl_feature_id', 'Anl feature id'), + ('tbl_mincut_manager', 'anl_feature_type', 'Anl feature type'), + ('tbl_mincut_manager', 'anl_the_geom', 'Anl the geom'), + ('tbl_mincut_manager', 'anl_tstamp', 'Anl tstamp'), + ('tbl_mincut_manager', 'anl_user', 'Anl user'), + ('tbl_mincut_manager', 'assigned_to', 'Assigned to'), + ('tbl_mincut_manager', 'class', 'Class'), + ('tbl_mincut_manager', 'exec_appropiate', 'Exec appropiate'), + ('tbl_mincut_manager', 'exec_depth', 'Exec depth'), + ('tbl_mincut_manager', 'exec_descript', 'Exec descript'), + ('tbl_mincut_manager', 'exec_end', 'Exec end'), + ('tbl_mincut_manager', 'exec_from_plot', 'Exec from plot'), + ('tbl_mincut_manager', 'exec_start', 'Exec start'), + ('tbl_mincut_manager', 'exec_the_geom', 'Exec the geom'), + ('tbl_mincut_manager', 'exec_user', 'Exec user'), + ('tbl_mincut_manager', 'expl_id', 'Expl id'), + ('tbl_mincut_manager', 'forecast_end', 'Forecast end'), + ('tbl_mincut_manager', 'forecast_start', 'Forecast start'), + ('tbl_mincut_manager', 'id', 'Id'), + ('tbl_mincut_manager', 'macroexpl_id', 'Macroexpl id'), + ('tbl_mincut_manager', 'mincut_type', 'Mincut type'), + ('tbl_mincut_manager', 'muni_id', 'Muni id'), + ('tbl_mincut_manager', 'name', 'Name'), + ('tbl_mincut_manager', 'postcode', 'Postcode'), + ('tbl_mincut_manager', 'postnumber', 'Postnumber'), + ('tbl_mincut_manager', 'received_date', 'Received date'), + ('tbl_mincut_manager', 'state', 'State'), + ('tbl_mincut_manager', 'streetaxis_id', 'Streetaxis id'), + ('tbl_mincut_manager', 'work_order', 'Work order'), + ('tbl_nvo_mng_roughness', 'active', 'Active'), + ('tbl_nvo_mng_roughness', 'descript', 'Descript'), + ('tbl_nvo_mng_roughness', 'end_age', 'End age'), + ('tbl_nvo_mng_roughness', 'id', 'Id'), + ('tbl_nvo_mng_roughness', 'init_age', 'Init age'), + ('tbl_nvo_mng_roughness', 'matcat_id', 'Matcat id'), + ('tbl_nvo_mng_roughness', 'period_id', 'Period id'), + ('tbl_nvo_mng_roughness', 'roughness', 'Roughness'), + ('tbl_nvo_mng_rules', 'active', 'Active'), + ('tbl_nvo_mng_rules', 'id', 'Id'), + ('tbl_nvo_mng_rules', 'sector_id', 'Sector id'), + ('tbl_nvo_mng_rules', 'text', 'Text'), + ('tbl_relations', 'arc_state', 'Arc state'), + ('tbl_visit_x_gully', 'sys_id', 'sys_id'), + ('v_edit_plan_psector_x_gully', 'active', 'active'), + ('v_edit_plan_psector_x_gully', 'arc_id', 'arc_id'), + ('v_edit_plan_psector_x_gully', 'descript', 'descript'), + ('v_edit_plan_psector_x_gully', 'doable', 'doable'), + ('v_edit_plan_psector_x_gully', 'gully_id', 'gully_id'), + ('v_edit_plan_psector_x_gully', 'id', 'id'), + ('v_edit_plan_psector_x_gully', 'insert_tstamp', 'insert_tstamp'), + ('v_edit_plan_psector_x_gully', 'insert_user', 'insert_user'), + ('v_edit_plan_psector_x_gully', 'link_id', 'link_id'), + ('v_edit_plan_psector_x_gully', 'psector_id', 'psector_id'), + ('v_edit_plan_psector_x_gully', 'state', 'state'), + ('v_om_mincut_hydrometer', 'connec_code', 'Connec code'), + ('v_om_mincut_hydrometer', 'connec_id', 'Connec id'), + ('v_om_mincut_hydrometer', 'hydrometer_customer_code', 'Hydrometer customer code'), + ('v_om_mincut_hydrometer', 'hydrometer_id', 'Hydrometer id'), + ('v_om_mincut_hydrometer', 'id', 'Id'), + ('v_om_mincut_hydrometer', 'result_id', 'Result id'), + ('v_om_mincut_hydrometer', 'work_order', 'Work order'), + ('v_ui_doc_x_gully', 'date', 'Date'), + ('v_ui_doc_x_gully', 'doc_id', 'Doc id'), + ('v_ui_doc_x_gully', 'doc_type', 'Doc type'), + ('v_ui_doc_x_gully', 'gully_id', 'Gully id'), + ('v_ui_doc_x_gully', 'id', 'Id'), + ('v_ui_doc_x_gully', 'observ', 'Observ'), + ('v_ui_doc_x_gully', 'path', 'Path'), + ('v_ui_doc_x_gully', 'user_name', 'User name'), + ('v_ui_element_x_gully', 'builtdate', 'Builtdate'), + ('v_ui_element_x_gully', 'comment', 'Comment'), + ('v_ui_element_x_gully', 'descript', 'Descript'), + ('v_ui_element_x_gully', 'element_id', 'Element id'), + ('v_ui_element_x_gully', 'elementcat_id', 'Elementcat id'), + ('v_ui_element_x_gully', 'enddate', 'Enddate'), + ('v_ui_element_x_gully', 'gully_id', 'Gully id'), + ('v_ui_element_x_gully', 'id', 'Id'), + ('v_ui_element_x_gully', 'num_elements', 'Num elements'), + ('v_ui_element_x_gully', 'observ', 'Observ'), + ('v_ui_element_x_gully', 'state', 'State'), + ('v_ui_mincut', 'anl_cause', 'anl_cause'), + ('v_ui_mincut', 'anl_descript', 'anl_descript'), + ('v_ui_mincut', 'anl_feature_id', 'anl_feature_id'), + ('v_ui_mincut', 'anl_feature_type', 'anl_feature_type'), + ('v_ui_mincut', 'anl_the_geom', 'anl_the_geom'), + ('v_ui_mincut', 'anl_tstamp', 'anl_tstamp'), + ('v_ui_mincut', 'anl_user', 'anl_user'), + ('v_ui_mincut', 'assigned_to', 'assigned_to'), + ('v_ui_mincut', 'class', 'class'), + ('v_ui_mincut', 'exec_appropiate', 'exec_appropiate'), + ('v_ui_mincut', 'exec_depth', 'exec_depth'), + ('v_ui_mincut', 'exec_descript', 'exec_descript'), + ('v_ui_mincut', 'exec_end', 'exec_end'), + ('v_ui_mincut', 'exec_from_plot', 'exec_from_plot'), + ('v_ui_mincut', 'exec_start', 'exec_start'), + ('v_ui_mincut', 'exec_the_geom', 'exec_the_geom'), + ('v_ui_mincut', 'exec_user', 'exec_user'), + ('v_ui_mincut', 'expl_id', 'expl_id'), + ('v_ui_mincut', 'forecast_end', 'forecast_end'), + ('v_ui_mincut', 'forecast_start', 'forecast_start'), + ('v_ui_mincut', 'id', 'id'), + ('v_ui_mincut', 'macroexpl_id', 'macroexpl_id'), + ('v_ui_mincut', 'mincut_type', 'mincut_type'), + ('v_ui_mincut', 'muni_id', 'muni_id'), + ('v_ui_mincut', 'name', 'name'), + ('v_ui_mincut', 'postcode', 'postcode'), + ('v_ui_mincut', 'postnumber', 'postnumber'), + ('v_ui_mincut', 'received_date', 'received_date'), + ('v_ui_mincut', 'state', 'state'), + ('v_ui_mincut', 'streetaxis_id', 'streetaxis_id'), + ('v_ui_mincut', 'work_order', 'work_order'), + ('v_ui_node_x_connection_downstream', 'arccat_id', 'Arccat id'), + ('v_ui_node_x_connection_downstream', 'depth', 'Depth'), + ('v_ui_node_x_connection_downstream', 'downstream_code', 'Downstream code'), + ('v_ui_node_x_connection_downstream', 'downstream_depth', 'Downstream depth'), + ('v_ui_node_x_connection_downstream', 'downstream_id', 'Downstream id'), + ('v_ui_node_x_connection_downstream', 'downstream_type', 'Downstream type'), + ('v_ui_node_x_connection_downstream', 'feature_code', 'Feature code'), + ('v_ui_node_x_connection_downstream', 'feature_id', 'Feature id'), + ('v_ui_node_x_connection_downstream', 'featurecat_id', 'Featurecat id'), + ('v_ui_node_x_connection_downstream', 'length', 'Length'), + ('v_ui_node_x_connection_downstream', 'node_id', 'Node id'), + ('v_ui_node_x_connection_downstream', 'rid', 'Rid'), + ('v_ui_node_x_connection_downstream', 'sys_type', 'Sys type'), + ('v_ui_node_x_connection_downstream', 'x', 'X'), + ('v_ui_node_x_connection_downstream', 'y', 'Y'), + ('v_ui_node_x_connection_upstream', 'arccat_id', 'Arccat id'), + ('v_ui_node_x_connection_upstream', 'depth', 'Depth'), + ('v_ui_node_x_connection_upstream', 'feature_code', 'Feature code'), + ('v_ui_node_x_connection_upstream', 'feature_id', 'Feature id'), + ('v_ui_node_x_connection_upstream', 'featurecat_id', 'Featurecat id'), + ('v_ui_node_x_connection_upstream', 'length', 'Length'), + ('v_ui_node_x_connection_upstream', 'node_id', 'Node id'), + ('v_ui_node_x_connection_upstream', 'rid', 'Rid'), + ('v_ui_node_x_connection_upstream', 'sys_type', 'Sys type'), + ('v_ui_node_x_connection_upstream', 'upstream_code', 'Upstream code'), + ('v_ui_node_x_connection_upstream', 'upstream_depth', 'Upstream depth'), + ('v_ui_node_x_connection_upstream', 'upstream_id', 'Upstream id'), + ('v_ui_node_x_connection_upstream', 'upstream_type', 'Upstream type'), + ('v_ui_node_x_connection_upstream', 'x', 'X'), + ('v_ui_node_x_connection_upstream', 'y', 'Y'), + ('v_ui_om_visitman_x_gully', 'code', 'code'), + ('v_ui_om_visitman_x_gully', 'feature_type', 'feature_type'), + ('v_ui_om_visitman_x_gully', 'form_type', 'form_type'), + ('v_ui_om_visitman_x_gully', 'gully_id', 'gully_id'), + ('v_ui_om_visitman_x_gully', 'is_done', 'is_done'), + ('v_ui_om_visitman_x_gully', 'user_name', 'user_name'), + ('v_ui_om_visitman_x_gully', 'visit_end', 'visit_end'), + ('v_ui_om_visitman_x_gully', 'visit_id', 'visit_id'), + ('v_ui_om_visitman_x_gully', 'visit_start', 'visit_start'), + ('v_ui_om_visitman_x_gully', 'visitcat_name', 'visitcat_name'), + ('v_ui_rpt_cat_result', 'dma_id', 'Dma id'), + ('ve_inp_pattern', 'active', 'Active'), + ('ve_inp_pattern', 'tscode', 'tscode'), + ('ve_inp_pattern', 'tsparameters', 'tsparameters'), + ('ve_inp_rules', 'active', 'Active'), + ('ve_inp_rules', 'id', 'Id'), + ('ve_inp_rules', 'sector_id', 'Sector id'), + ('ve_inp_rules', 'text', 'Text') +) AS v(objectname, columnname, alias) +WHERE t.objectname = v.objectname AND t.columnname = v.columnname; \ No newline at end of file diff --git a/dbmodel/schemas/addon/utils/final_pass/i18n/en_US/dbconfig_form_tabs.sql b/dbmodel/schemas/addon/utils/final_pass/i18n/en_US/dbconfig_form_tabs.sql new file mode 100644 index 0000000000..fe193a9bed --- /dev/null +++ b/dbmodel/schemas/addon/utils/final_pass/i18n/en_US/dbconfig_form_tabs.sql @@ -0,0 +1,212 @@ +/* +This file is part of Giswater +The program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. +*/ + + +SET search_path = SCHEMA_NAME, public, pg_catalog; +UPDATE config_form_tabs AS t SET label = v.label, tooltip = v.tooltip FROM ( + VALUES + ('dscenario', 'tab_conduit', 'Conduit', 'Conduit'), + ('dscenario', 'tab_inflows', 'Inflows', 'Inflows'), + ('dscenario', 'tab_lids', 'Lids', 'Lids'), + ('dscenario', 'tab_orifice', 'Orifice', 'Orifice'), + ('dscenario', 'tab_outfall', 'Outfall', 'Outfall'), + ('dscenario', 'tab_outlet', 'Outlet', 'Outlet'), + ('dscenario', 'tab_poll', 'Poll', 'Poll'), + ('dscenario', 'tab_raingage', 'Raingage', 'Raingage'), + ('dscenario', 'tab_storage', 'Storage', 'Storage'), + ('dscenario', 'tab_treatment', 'Treatment', 'Treatment'), + ('dscenario', 'tab_weir', 'Weir', 'Weir'), + ('epa_selector', 'tab_time', 'Date time', 'Date time'), + ('incident_arc', 'tab_data', 'Data', 'Data'), + ('incident_arc', 'tab_file', 'Files', 'Files'), + ('incident_connec', 'tab_data', 'Data', 'Data'), + ('incident_connec', 'tab_file', 'Files', 'Files'), + ('incident_gully', 'tab_data', 'Data', 'Data'), + ('incident_gully', 'tab_file', 'Files', 'Files'), + ('incident_link', 'tab_data', 'Data', 'Data'), + ('incident_link', 'tab_file', 'Files', 'Files'), + ('nvo_lids', 'tab_drain', 'Drain', 'Drain'), + ('nvo_lids', 'tab_drainmat', 'Drainage Mat', 'Drainage Mat'), + ('nvo_lids', 'tab_pavement', 'Pavement', 'Pavement'), + ('nvo_lids', 'tab_soil', 'Soil', 'Soil'), + ('nvo_lids', 'tab_storage', 'Storage', 'Storage'), + ('nvo_lids', 'tab_surface', 'Surface', 'Surface'), + ('nvo_manager', 'tab_lids', 'Lids', 'Lids'), + ('nvo_manager', 'tab_timeseries', 'Timeseries', 'Timeseries'), + ('psector', 'tab_relations_gully', 'Gully', 'Gully'), + ('v_edit_gully', 'tab_data', 'Data', 'Data'), + ('v_edit_gully', 'tab_documents', 'Documents', 'List of documents'), + ('v_edit_gully', 'tab_elements', 'Elements', 'List of related elements'), + ('v_edit_gully', 'tab_epa', 'EPA inp', NULL), + ('v_edit_gully', 'tab_event', 'Events', 'List of events'), + ('v_edit_node', 'tab_connections', 'Connections', 'Connections'), + ('v_edit_raingage', 'tab_data', 'Data', 'Data'), + ('ve_epa_inlet', 'tab_epa', 'EPA', NULL), + ('ve_epa_pgully', 'tab_epa', 'EPA', NULL), + ('ve_epa_storage', 'tab_epa', 'EPA', NULL), + ('ve_frelem', 'tab_data', 'Data', 'Data'), + ('ve_frelem', 'tab_documents', 'Documents', 'List of documents'), + ('ve_frelem', 'tab_epa', 'EPA', 'Epa'), + ('ve_gully', 'tab_data', 'Data', 'Data'), + ('ve_gully', 'tab_documents', 'Documents', 'List of documents'), + ('ve_gully', 'tab_elements', 'Elements', 'List of related elements'), + ('ve_gully', 'tab_epa', 'EPA inp', NULL), + ('ve_gully', 'tab_event', 'Events', 'List of events'), + ('ve_node', 'tab_connections', 'Connections', 'Connections'), + ('visit_arc_insp', 'tab_data', 'Data', 'Data'), + ('visit_arc_insp', 'tab_file', 'Files', 'Files'), + ('visit_connec_insp', 'tab_data', 'Data', 'Data'), + ('visit_connec_insp', 'tab_file', 'Files', 'Files'), + ('visit_gully_insp', 'tab_data', 'Data', 'Data'), + ('visit_gully_insp', 'tab_file', 'Files', 'Files'), + ('visit_leak_insp', 'tab_data', 'Data', 'Data'), + ('visit_leak_insp', 'tab_file', 'Files', 'Files'), + ('config', 'tab_admin', 'Admin', 'Admin values'), + ('config', 'tab_user', 'User', 'User values'), + ('dscenario', 'tab_controls', 'Controls', 'Controls'), + ('dscenario', 'tab_junction', 'Junction', 'Junction'), + ('dscenario', 'tab_pump', 'Pump', 'Pump'), + ('epa_selector', 'tab_result', 'Result', 'Result'), + ('go2epa', 'tab_data', 'Data', NULL), + ('go2epa', 'tab_log', 'Log', NULL), + ('incident_node', 'tab_data', 'Data', 'Data'), + ('incident_node', 'tab_file', 'Files', 'Files'), + ('nvo_manager', 'tab_controls', 'Controls', 'Controls'), + ('nvo_manager', 'tab_curves', 'Curves', 'Curves'), + ('nvo_manager', 'tab_patterns', 'Patterns', 'Patterns'), + ('psector', 'tab_add_info', 'Additional info', 'Additional info'), + ('psector', 'tab_budget', 'Budget', 'Budget'), + ('psector', 'tab_document', 'Document', 'Document'), + ('psector', 'tab_general', 'General', 'General'), + ('psector', 'tab_other_prices', 'Other prices', 'Other prices'), + ('psector', 'tab_other_prices_all', 'All prices', 'All prices'), + ('psector', 'tab_other_prices_mine', 'My prices', 'My prices'), + ('psector', 'tab_relations', 'Relations', 'Relations'), + ('psector', 'tab_relations_arc', 'Arc', 'Arc'), + ('psector', 'tab_relations_connec', 'Connec', 'Connec'), + ('psector', 'tab_relations_node', 'Node', 'Node'), + ('search', 'tab_add_network', 'Add Network', 'Additional Network'), + ('search', 'tab_address', 'Address', 'Address'), + ('search', 'tab_hydro', 'Hydrometer', 'Hydro'), + ('search', 'tab_network', 'Network', 'Network'), + ('search', 'tab_psector', 'Psector', 'Psector'), + ('search', 'tab_visit', 'Visit', 'Visit'), + ('search', 'tab_workcat', 'Workcat', 'Workcat'), + ('selector_basic', 'tab_dscenario', 'Dscenario', 'Dscenario'), + ('selector_basic', 'tab_exploitation', 'Expl', 'Active exploitation'), + ('selector_basic', 'tab_exploitation_add', 'Expl Add', 'Active exploitation'), + ('selector_basic', 'tab_hydro_state', 'Hydro', 'Hydrometer'), + ('selector_basic', 'tab_macroexploitation', 'Macroexpl', 'Macroexploitation'), + ('selector_basic', 'tab_macroexploitation_add', 'Macroexpl Add', NULL), + ('selector_basic', 'tab_macrosector', 'Macrosector', 'Macrosector'), + ('selector_basic', 'tab_municipality', 'Muni', 'Municipality'), + ('selector_basic', 'tab_network', 'Network', 'Network'), + ('selector_basic', 'tab_network_state', 'State', 'Network'), + ('selector_basic', 'tab_psector', 'Psector', 'Psector'), + ('selector_basic', 'tab_sector', 'Sector', 'Sector'), + ('selector_basic_', 'tab_period', 'Period', 'Period'), + ('selector_mincut', 'tab_mincut', 'Mincut', 'Mincut Selector'), + ('v_edit_arc', 'tab_data', 'Data', 'Data'), + ('v_edit_arc', 'tab_documents', 'Documents', 'List of documents'), + ('v_edit_arc', 'tab_elements', 'Elements', 'List of related elements'), + ('v_edit_arc', 'tab_epa', 'EPA', 'List of Result EPA values'), + ('v_edit_arc', 'tab_event', 'Events', 'List of events'), + ('v_edit_arc', 'tab_plan', 'Plan', 'List of costs'), + ('v_edit_arc', 'tab_relations', 'Relations', 'List of relations'), + ('v_edit_connec', 'tab_data', 'Data', 'Data'), + ('v_edit_connec', 'tab_documents', 'Documents', 'List of documents'), + ('v_edit_connec', 'tab_elements', 'Elements', 'List of related elements'), + ('v_edit_connec', 'tab_event', 'Events', 'List of events'), + ('v_edit_connec', 'tab_hydrometer', 'Hydrometer', 'List of hydrometers'), + ('v_edit_connec', 'tab_hydrometer_val', 'Hydrometer consumptions', 'List of consumption values'), + ('v_edit_link', 'tab_data', 'Data', 'Data'), + ('v_edit_link', 'tab_documents', 'Documents', 'List of documents'), + ('v_edit_link', 'tab_elements', 'Elements', 'List of related elements'), + ('v_edit_node', 'tab_data', 'Data', 'Data'), + ('v_edit_node', 'tab_documents', 'Documents', 'List of documents'), + ('v_edit_node', 'tab_elements', 'Elements', 'List of related elements'), + ('v_edit_node', 'tab_epa', 'EPA', NULL), + ('v_edit_node', 'tab_event', 'Events', 'List of events'), + ('v_edit_node', 'tab_plan', 'Plan', 'List of costs'), + ('ve_arc', 'tab_data', 'Data', 'Data'), + ('ve_arc', 'tab_documents', 'Documents', 'List of documents'), + ('ve_arc', 'tab_elements', 'Elements', 'List of related elements'), + ('ve_arc', 'tab_epa', 'EPA', 'List of Result EPA values'), + ('ve_arc', 'tab_event', 'Events', 'List of events'), + ('ve_arc', 'tab_plan', 'Plan', 'List of costs'), + ('ve_arc', 'tab_relations', 'Relations', 'List of relations'), + ('ve_connec', 'tab_data', 'Data', 'Data'), + ('ve_connec', 'tab_documents', 'Documents', 'List of documents'), + ('ve_connec', 'tab_elements', 'Elements', 'List of related elements'), + ('ve_connec', 'tab_event', 'Events', 'List of events'), + ('ve_connec', 'tab_hydrometer', 'Hydrometer', 'List of hydrometers'), + ('ve_connec', 'tab_hydrometer_val', 'Hydrometer consumptions', 'List of consumption values'), + ('ve_element', 'tab_documents', 'Documents', 'List of documents'), + ('ve_epa_junction', 'tab_epa', 'EPA', NULL), + ('ve_link', 'tab_data', 'Data', 'Data'), + ('ve_link', 'tab_documents', 'Documents', 'List of documents'), + ('ve_link', 'tab_elements', 'Elements', 'List of related elements'), + ('ve_link', 'tab_event', 'Events', 'List of events'), + ('ve_link_link', 'tab_elements', 'Elements', 'List of related elements'), + ('ve_link_servconnection', 'tab_elements', 'Elements', 'List of related elements'), + ('ve_man_frelem', 'tab_data', 'Data', 'Data'), + ('ve_man_frelem', 'tab_epa', 'EPA', 'Epa'), + ('ve_man_genelem', 'tab_data', 'Data', 'Data'), + ('ve_man_genelem', 'tab_features', 'Features', 'Manage features'), + ('ve_node', 'tab_data', 'Data', 'Data'), + ('ve_node', 'tab_documents', 'Documents', 'List of documents'), + ('ve_node', 'tab_elements', 'Elements', 'List of related elements'), + ('ve_node', 'tab_epa', 'EPA', NULL), + ('ve_node', 'tab_event', 'Events', 'List of events'), + ('ve_node', 'tab_plan', 'Plan', 'List of costs'), + ('visit', 'tab_data', 'Data', 'Data'), + ('visit', 'tab_file', 'Files', 'Files'), + ('visit_node_insp', 'tab_data', 'Data', 'Data'), + ('visit_node_insp', 'tab_file', 'Files', 'Files'), + ('dscenario', 'tab_additional', 'Additional', 'Additional'), + ('dscenario', 'tab_connec', 'Connec', 'Connec'), + ('dscenario', 'tab_demand', 'Demand', 'Demand'), + ('dscenario', 'tab_inlet', 'Inlet', 'Inlet'), + ('dscenario', 'tab_pipe', 'Pipe', 'Pipe'), + ('dscenario', 'tab_reservoir', 'Reservoir', 'Reservoir'), + ('dscenario', 'tab_rules', 'Rules', 'Rules'), + ('dscenario', 'tab_shortpipe', 'Shortpipe', 'Shortpipe'), + ('dscenario', 'tab_tank', 'Tank', 'Tank'), + ('dscenario', 'tab_valve', 'Valve', 'Valve'), + ('dscenario', 'tab_virtualpump', 'Virtualpump', 'Virtualpump'), + ('dscenario', 'tab_virtualvalve', 'Virtualvalve', 'Virtualvalve'), + ('epa_selector', 'tab_time', 'Time', 'Time'), + ('nvo_manager', 'tab_roughness', 'Roughness', 'Roughness'), + ('nvo_manager', 'tab_rules', 'Rules', 'Rules'), + ('selector_netscenario', 'tab_netscenario', 'Netscenario', 'Netscenario Selector'), + ('v_edit_connec', 'tab_epa', 'EPA', NULL), + ('ve_connec', 'tab_epa', 'EPA', NULL), + ('ve_epa_connec', 'tab_epa', 'EPA', NULL), + ('ve_epa_pump', 'tab_epa', 'EPA', NULL), + ('ve_link', 'tab_epa', 'EPA', 'List of Result EPA values'), + ('ve_node_air_valve', 'tab_data', 'Data', 'Data'), + ('ve_node_check_valve', 'tab_data', 'Data', 'Data'), + ('ve_node_fl_contr_valve', 'tab_data', 'Data', 'Data'), + ('ve_node_flowmeter', 'tab_data', 'Data', 'Data'), + ('ve_node_gen_purp_valve', 'tab_data', 'Data', 'Data'), + ('ve_node_outfall_valve', 'tab_data', 'Data', 'Data'), + ('ve_node_pr_break_valve', 'tab_data', 'Data', 'Data'), + ('ve_node_pr_green_valve', 'tab_data', 'Data', 'Data'), + ('ve_node_pr_reduc_valve', 'tab_data', 'Data', 'Data'), + ('ve_node_pr_susta_valve', 'tab_data', 'Data', 'Data'), + ('ve_node_pressure_meter', 'tab_data', 'Data', 'Data'), + ('ve_node_pump', 'tab_data', 'Data', 'Data'), + ('ve_node_shutoff_valve', 'tab_data', 'Data', 'Data'), + ('ve_node_throttle_valve', 'tab_data', 'Data', 'Data'), + ('ve_node_water_connection', 'tab_hydrometer', 'Hydrometer', 'List of hydrometers'), + ('ve_node_water_connection', 'tab_hydrometer_val', 'Hydrometer consumptions', 'List of consumption values'), + ('visit_arc_leak', 'tab_data', 'Data', 'Data'), + ('visit_arc_leak', 'tab_file', 'Files', 'Files'), + ('visit_connec_leak', 'tab_data', 'Data', 'Data'), + ('visit_connec_leak', 'tab_file', 'Files', 'Files'), + ('visit_link_leak', 'tab_data', 'Data', 'Data'), + ('visit_link_leak', 'tab_file', 'Files', 'Files') +) AS v(formname, tabname, label, tooltip) +WHERE t.formname = v.formname AND t.tabname = v.tabname; \ No newline at end of file diff --git a/dbmodel/schemas/addon/utils/final_pass/i18n/en_US/dbconfig_param_system.sql b/dbmodel/schemas/addon/utils/final_pass/i18n/en_US/dbconfig_param_system.sql new file mode 100644 index 0000000000..adc6c3e172 --- /dev/null +++ b/dbmodel/schemas/addon/utils/final_pass/i18n/en_US/dbconfig_param_system.sql @@ -0,0 +1,183 @@ +/* +This file is part of Giswater +The program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. +*/ + + +SET search_path = SCHEMA_NAME, public, pg_catalog; +UPDATE config_param_system AS t SET label = v.label, descript = v.descript FROM ( + VALUES + ('edit_check_redundance_y_topelev_elev', 'Enable redundancy check for y/elev/topelev values:', 'If true, a check for redundancy in y/elev/topelev fields will activate.'), + ('edit_connect_update_statetype', 'Connect update statetype:', 'If TRUE, when you connect an element to the network, its state_type will be updated to value of the json'), + ('edit_gully_proximity', 'Gully topology:', 'Enable/disable control of inserting duplicated gullies.Minimum accepted distance between two gullies'), + ('edit_node_automatic_sander', 'Automatic sander depth:', 'Calculate sander depth of manhole, chamber and wjump depending on node sys_ymax and arc sys_y1'), + ('edit_review_arc_tolerance', 'Review arc tolerance:', 'Tolerance of difference allowed for arc values in case of revision'), + ('edit_review_connec_tolerance', 'Review connec tolerance:', 'Tolerance of difference allowed for connec values in case of revision'), + ('edit_review_gully_tolerance', 'Review gully tolerance:', 'Tolerance of difference allowed for gully values in case of revision'), + ('edit_slope_direction', 'Force arc direction using slope direction:', 'If true, the direction of the arc is fixed by the slope (UD)'), + ('epa_units_factor', 'Epa units factor:', 'Conversion factors of CRM flows in function of EPA units choosed by user'), + ('om_mincut_use_pgrouting', 'Mincut use pgrouting:', 'Different ways to use mincut. If true, mincut is done with pgrouting, an extension of Postgis'), + ('om_mincut_valvestatus_unaccess', 'Mincut use valveunaccess button to change valve status:', 'Variable to enable/disable the possibility to use valve unaccess button to open valves with closed status (WS)'), + ('om_profile_nonpriority_statetype', 'Profile non priority state type:', 'Features with defined state type won''t be prioritised to be chosen on a profile in case of overlaying conduiuts, instead it will have an additional path cost added to it''s length'), + ('admin_checkproject', 'Custom config for admin check project:', 'Variable to manage customization for admin_checkproject function'), + ('admin_config_control_trigger', 'Config control trigger:', 'Enable or disable trigger related to config tables. If true, is enabled'), + ('admin_crm_periodseconds_vdefault', 'Rtc period seconds:', 'Default value used if ext_cat_period doesn''t have date values or they are incorrect'), + ('admin_crm_schema', 'CRM schema:', 'Variable to check if crm schema exists'), + ('admin_crm_script_folderpath', 'Folder to store scripts to execute daily:', 'Folder to store scripts to execute daily'), + ('admin_currency', 'System currency:', 'Type of currency used is this schema to calculate budgets'), + ('admin_customform_param', 'Custom form tab labels:', 'Used to manage labels on diferent tabs in custom form Data tab'), + ('admin_daily_updates', 'Sys daily updates:', 'Variable to check if daily updates are used'), + ('admin_daily_updates_mails', 'Daily update mails:', 'Daily update mails'), + ('admin_exploitation_x_user', 'Enable exploitation x user constrains:', 'Parameters to identify if system has enabled restriction for users in function of exploitation'), + ('admin_formheader_field', 'Form header filed to use:', 'Field to use as header from every feature_type when getinfofromid. When element and hydrometer, childType is used as text to concat with column. When insert new feature, newText is used to translate the concat text'), + ('admin_i18n_update_mode', 'Update label & tooltips mode:', 'Manage updates of i18n labels and tooltips. (0: update always owerwriting current values, 1: update only when value is null, 2:never update}'), + ('admin_isproduction', 'Production Schema:', 'If true, deleting the schema using Giswater button will not be possible'), + ('admin_manage_cat_feature', 'Manage cat_feature:', 'Manage updates of cat_feature and related views'), + ('admin_message_debug', 'Admin message debug:', 'It allows debug on message with more detailed log'), + ('admin_node_code_on_arc', 'Show final nodes'' code on arc''s form:', 'If true, on codes of final nodes will be visible on arc''s form. If false, node_id would be displayed'), + ('admin_python_folderpath', 'Folder path for python:', 'Folder to path for python'), + ('admin_raster_dem', 'Raster DEM:', 'Use raster DEM for elevation values'), + ('admin_schema_cm', NULL, 'System parameter which identifies existing schema cm linked to a parent schemas'), + ('admin_schema_info', 'Schema manager:', 'Basic information about schema'), + ('admin_skip_audit', 'Skip audit:', 'System parameter to identify processes that need to avoid audit log because of the big amount of data updated. Example: mapzones or daily update crm'), + ('admin_utils_schema', 'Ext utils schema:', 'System parameter which identifies existing schema in the database with common information for those organizations which share cartography in more than on production schema(ws/ud). In this case, information is propagated to both schemas using views'), + ('admin_version', 'Version:', 'Search configuration parameteres'), + ('admin_vpn_permissions', 'Sys vpn permissions:', 'Variable to check if vpn connexion with server is used in order to assign correct permissions to the database'), + ('basic_info_canvasmargin', 'Canvas margin:', 'Canvas margin'), + ('basic_info_sensibility_factor', 'Sensibility factor web:', 'Sensibility factor web'), + ('basic_search_exploitation', 'Search exploitation:', 'Search configuration parameteres'), + ('basic_search_hydrometer', 'Search hydrometer:', 'Search configuration parameteres'), + ('basic_search_hydrometer_show_connec', 'Show connec hydrometer:', 'If the variable is set to False, the workflow remains as it is right now (open basic form). If variable is set to True, you have to make an infofromid to the specific connec, directly in the "hydrometer" tab.'), + ('basic_search_muni', 'Search municipality:', 'Search configuration parameteres'), + ('basic_search_network_arc', 'Search arc:', 'Search configuration parameteres'), + ('basic_search_network_connec', 'Search connec:', 'Search configuration parameteres'), + ('basic_search_network_element', 'Search element:', 'Search configuration parameteres'), + ('basic_search_network_frelem', 'Search flow regulator element:', 'Search configuration parameteres'), + ('basic_search_network_genelem', 'Search general element:', 'Search configuration parameteres'), + ('basic_search_network_gully', 'Search gully:', 'Search configuration parameteres'), + ('basic_search_network_node', 'Search node:', 'Search configuration parameteres'), + ('basic_search_network_null', 'Search network null:', 'Search configuration parameteres'), + ('basic_search_postnumber', 'Search postnumber:', 'Search configuration parameteres'), + ('basic_search_psector', 'Search psector:', 'Search configuration parameteres'), + ('basic_search_street', 'Search street:', 'Search configuration parameteres'), + ('basic_search_v2_tab_address', 'Address:', 'Search configuration parameteres'), + ('basic_search_v2_tab_hydrometer', 'Hydrometer:', 'Search configuration parameteres'), + ('basic_search_v2_tab_mincut', 'Mincut:', 'Search configuration parameteres'), + ('basic_search_v2_tab_network_arc', 'Arc:', 'Search configuration parameteres'), + ('basic_search_v2_tab_network_connec', 'Connec:', 'Search configuration parameteres'), + ('basic_search_v2_tab_network_gully', 'Gully:', 'Search configuration parameteres'), + ('basic_search_v2_tab_network_node', 'Node:', 'Search configuration parameteres'), + ('basic_search_v2_tab_psector ', 'Psector:', 'Search configuration parameteres'), + ('basic_search_v2_tab_workcat', 'Workcat:', 'Search configuration parameteres'), + ('basic_search_visit', 'Search visit:', 'Search configuration parameteres'), + ('basic_search_workcat', 'Search workcat:', 'Search configuration parameteres'), + ('basic_selector_explfrommuni', 'Selector variables:', 'Variable to configura all options related to search for the specificic tab'), + ('basic_selector_mapzone_relation', 'Selector variables:', 'If sectorfromexpl is true, sector selector is set automatically set to the sector which geometry overlaps the selected exploitation. If explfromsector is true, exploitation selector is set automatically set to the exploitation which geometry overlaps the selected sector.'), + ('basic_selector_options', 'Selector variables:', 'Options variables for selector'), + ('basic_selector_sectorisexplismuni', 'Selector variables:', 'Variable to configure that explotation and sector has the same code in order to make a direct correlation one each other'), + ('basic_selector_tab_campaign', 'Selector variables:', 'Variable to configura all options related to search for the specificic tab'), + ('basic_selector_tab_dscenario', 'Selector variables:', 'Variable to configura all options related to search for the specificic tab'), + ('basic_selector_tab_exploitation', 'Selector variables:', 'Variable to configura all options related to search for the specificic tab'), + ('basic_selector_tab_exploitation_add', 'Selector variables:', 'Variable to configura all options related to search for the specificic tab'), + ('basic_selector_tab_hydro_state', 'Selector variables:', 'Variable to configura all options related to search for the specificic tab'), + ('basic_selector_tab_lot', 'Selector variables:', 'Variable to configura all options related to search for the specificic tab'), + ('basic_selector_tab_macroexploitation', 'Selector variables:', 'Variable to configura all options related to search for the specificic tab'), + ('basic_selector_tab_macroexploitation_add', 'Selector variables:', 'Variable to configura all options related to search for the specificic tab'), + ('basic_selector_tab_macrosector', 'Selector variables:', 'Variable to config selector tab macrosector'), + ('basic_selector_tab_mincut', 'Selector variables:', 'Variable to configura all options related to search for the specificic tab'), + ('basic_selector_tab_municipality', 'Selector variables:', 'Variable to configura all options related to search for the specificic tab'), + ('basic_selector_tab_network', NULL, 'Variable to configura all options related to search for the specificic tab Selector variables'), + ('basic_selector_tab_network_state', 'Selector variables:', 'Variable to configura all options related to search for the specificic tab'), + ('basic_selector_tab_period', 'Tab for period:', 'Tab for period'), + ('basic_selector_tab_psector', 'Selector variables:', 'Variable to configura all options related to search for the specificic tab'), + ('basic_selector_tab_sector', 'Selector variables:', 'Variable to configura all options related to search for the specificic tab'), + ('edit_arc_divide', 'Arc divide:', 'Configuration of arc divide tool. If setArcObsolete true state of old arc would be set to 0, otherwise arc will be deleted. If setOldCode true, new arcs will have same code as old arc.'), + ('edit_arc_enable nodes_update', 'Enable update of node1 & node2 values:', 'If true, user can manually update node_1 and node_2 value (using SQL consle or attribute table). Used in migrations with trustly data for not execute arc_searchnodes trigger'), + ('edit_arc_orphannode_delete', 'Orphan node delete:', 'Enable/disable automatic delete of orphan nodes when arc is removed and some node have been disconnected'), + ('edit_arc_samenode_control', 'Arc same node init end control:', 'Enable/disable control of arcs with the same node at the beginning and at the end'), + ('edit_arc_searchnodes', 'Arc searchnodes:', 'Enable/disable and set the buffer of the ability to look for arcs final nodes'), + ('edit_auto_streetvalues', 'Auto-insert street values:', 'Insert street values automatically on field ''postnumber'' or ''postcomplement'''), + ('edit_automatic_disable_locklevel', 'Automatic disable lock level:', 'Enable/disable automatic lock level control for specific operations'), + ('edit_connec_autofill_ccode', 'Customer code autofill:', 'If status is TRUE, when insert a new connec, customer_code will be the same as field (connec_id or code). If you choose connec_id you can previously visualize it on form, but if you choose code you will see customer_code after inserting'), + ('edit_connec_autofill_plotcode', 'Variable to automatic fill plot code:', 'Variable to automatic fill plot_code'), + ('edit_connec_downgrade_force', 'Force downgrading connecs:', 'If true allow downgrade connecs no matter if they have operative hydrometers related'), + ('edit_connec_proximity', 'Connec topology:', 'Enable/disable control of inserting duplicated connec.Minimum accepted distance between two connecs'), + ('edit_connect_autoupdate_dma', 'Connect autoupdate dma:', 'If true, after connect to network, gully or connec will have the same dma as its pjoint. If false, this value won''t propagate'), + ('edit_connect_autoupdate_fluid', 'Connect autoupdate fluid:', 'If true, after inserting a link, gully or connec will have the same fluid as arc they are connected to. If false, this value won''t propagate'), + ('edit_custom_link', 'Custom link field:', 'Allow users to enable custom configurations to fill features ''link'' field'), + ('edit_element_doublegeom', 'Element double geometry enabled:', 'Enable/disable inserting double geometry elements'), + ('edit_feature_auto_builtdate', 'Current date as builtdate:', 'If true builtdate is set to the current date'), + ('edit_feature_buffer_on_mapzone', 'Buffer to set mapzone on insert:', 'Buffer to set mapzone on insert when feautre has no other feature connected and user has no default value'), + ('edit_hydro_link_absolute_path', 'Hydrometer link absolute path:', 'The hyperlink in the hydrometer info to an url or a file is made up of two parts. A common part to all hydrometers, and a specific part for each hydrometer. The common part to all is the value of this variable'), + ('edit_inventory_sysvdefault', 'Inventory system value default:', 'System default value for inventory'), + ('edit_link_autoupdate_connect_length', NULL, 'Enable the automatic update for connect (connec & gully) length when link is inserted or geometry of link is updated'), + ('edit_link_update_connecrotation', 'Automatic rotation for connec labels and vnodes:', 'If true, connec''s label and symbol will be rotated using the angle of link. Label must be configured with ''CASE WHEN label_x = ''R'' THEN '' '' || ''connec_id'' ELSE ''connec_id'' || '' '' END'' as ''Expression'', label_x as ''Position priotiry'' and label_rotation as ''Rotation'''), + ('edit_mapzones_set_lastupdate', 'Set lastupdate on mapzone process:', 'If true, value of lastupdate is updated on node, arc, connec features and set to the date of executing the algorithm.'), + ('edit_node_proximity', 'Node topology:', 'Enable/disable control of inserting duplicated nodes.Minimum accepted distance between two nodes'), + ('edit_node_reduction_auto_d1d2', 'Edit node reduction auto d1d2:', 'If true, when inserting a new reduction, diam1 and diam2 values are capturated from dnom and dint from cat_node (WS)'), + ('edit_publish_sysvdefault', 'Publish system value default:', 'System default value for publish'), + ('edit_replace_doc_folderpath', 'Doc path replace:', 'Automatic path string replace when document is inserted'), + ('edit_review_auto_field_checked', 'Review automatic field check:', 'If true, at saving review data it would be automatically set as finished.'), + ('edit_review_node_tolerance', 'Review node tolerance:', 'Tolerance of difference allowed for node values in case of revision'), + ('edit_state_topocontrol', 'State topocontrol:', 'To enable or disable state topology rules for arcs'), + ('edit_topocontrol_disable_error', 'Topocontrol disable error:', 'If TRUE, topocontrol function is used but the elements which violates topology also can get inside the network. As a result log message of errors it is inserted on audit_log_data table (fprocesscat_id=3). Be careful, this function can lead to errors'), + ('edit_uncertain_sysvdefault', 'Uncertain system value default:', 'System default value for uncertain'), + ('edit_vnode_update_tolerance', 'Vnode update tolerance:', 'Buffer which vnode use to search an arc to connect with on update vnode'), + ('epa_automatic_inp2man_values', 'EPA auto update inventory tables:', 'Before insert - update of any feature, automatic update of columns on man tables from columns on inp table'), + ('epa_automatic_man2graph_values', 'GRAPH auto update mapzone tables:', 'Before insert - update of any mapzone, automatic update of columns on mapzone from columns on man_table'), + ('epa_automatic_man2inp_values', 'EPA auto update inp tables:', 'Before insert - update of any feature, automatic update of columns on inp tables from columns on man table'), + ('epa_autorepair', 'Autorepair epa:', 'Force when export go2epa to autorepair inp columns'), + ('epa_outlayer_values', 'EPA outlayer values:', 'Epa outlayer values to check results'), + ('epa_subcatchment_concat_prefix_id', 'Configure prefix on subcathcments:', 'Variable to configure prefix on subcathcments'), + ('help_domain', 'Custom variable for documentation:', 'Base domain for documentation web.'), + ('mapzones_config', 'Mapzones system config:', 'Mapzones system config. version - Mapzones version;'), + ('om_mincut_disable_check_temporary_overlap', 'Om mincut disable check temporary overlap:', 'If true, mincut temporary overlaps are disabled. Giswater won''t show you a message when different mincuts overlaps eachselfs (WS)'), + ('om_mincut_valve2tank_traceability', 'Om mincut valve2tank traceability:', 'If true, Giswater save traceability from each valve to the tank which it has access (WS)'), + ('om_mincut_version', 'Mincut version:', 'Mincut version'), + ('om_profile_guitarlegend', 'Profile guitar legend configuration:', 'It allows the configuration of legend labels when makeing a new profile'), + ('om_profile_guitartext', 'Profile guitar text configuration:', 'It allows the configuration of the text to show when makeing a new profile. Be careful, advanced SQL level is required to modify the query'), + ('om_profile_vdefault', 'Profile default values if NULL:', 'Default values used on profile tool if any of the values were NULL'), + ('om_visit_parameters', 'Om visit automatic workcat:', 'Visit parameters. AutoNewWorkcat IF TRUE, automatic workcat is created with same id that visit'), + ('plan_node_replace_code', 'Plan node replace code:', 'If true, when a node replace in planification is performed, new arcs will have the same code as the replaced one. Otherwise, new arcs will have the same code as its arc_id.'), + ('plan_psector_status_action', 'Psector execute state_type:', 'Psector statetype assigned to features after executing or canceling planification'), + ('plan_statetype_vdefault', 'Plan state_type vdefault:', 'Default state_type when using planified features'), + ('qgis_form_element_hidewidgets', 'Element form hide widgets:', 'Variable to customize widgets from element form. Available widggets and format example: [''element_id'', ''code'', ''element_type'', ''elementcat_id'', ''num_elements'', ''state'', ''state_type'', ''expl_id'', ''ownercat_id'', ''location_type'', ''buildercat_id'', ''builtdate'', ''workcat_id'', ''workcat_id_end'', ''comment'', ''observ'', ''link'', ''verified'', ''rotation'', ''undelete'', ''btn_add_geom'']'), + ('qgis_form_selector_stylesheet', 'Selectors stylesheet:', 'Variable to customize the look of the selectors dialog'), + ('qgis_layers_symbology', 'Layers symbology:', 'Variable to configure parameters related with layer symbology tool'), + ('utils_graphanalytics_lrs_feature', 'Updated fields when calculating lrs:', 'List of fields updated during the process of calculating linear reference'), + ('utils_graphanalytics_lrs_graph', 'Config of headers for calculating lrs:', 'Configuration of starting points(headers) and arc which indicate direction of calculating linear reference'), + ('utils_graphanalytics_status', 'Dynamic mapzones:', 'Dynamic mapzones'), + ('utils_graphanalytics_style', 'Mapzones style config:', 'There are 3 ''mode'' to symbolize mapzones when the project is loaded or mapzones are recalculated: - Disabled: do nothing with the style - Random: use ''column'' data to categorize and set random colors to every mapzone - Stylesheet: use ''column'' data to categorize and set the configured color to every mapzone from mapzone table stylesheet column'), + ('utils_graphanalytics_vdefault', 'Default values for geometry of mapzones algorithm:', 'Automatic values for geometry trigger mapzone algorithm'), + ('admin_addmapzone', 'Add mapzone:', 'Defines if mapzone id depends on expl and if it updates any more inventory fields'), + ('admin_hydrometer_state', 'Admin hydrometer state:', 'Variable to map state values from crm to giswater state values in order to identify what state are deprecated to check on function state_control for connecs'), + ('basic_selector_tab_netscenario', 'Selector variables:', 'Variable to configura all options related to search for the specificic tab'), + ('edit_arc_check_conflictmapzones', 'Check conflict mapzones:', 'parameter to be used to check conflict of mapzones on insert or update of arc'), + ('edit_connect_update_statetype', 'Edit connect update statetype:', 'If TRUE, when you connect an element to the network, its state_type will be updated to value of the json'), + ('edit_hydrant_use_firecode_seq', 'Use hydrant fire code sequence:', 'If TRUE, when insert a new hydrant with fire_code=NULL this field will be filled with next val of sequence'), + ('edit_link_check_arcdnom', 'Links check arc diameter:', 'If true, inserted links could not connect to arcs with diameter bigger or equal than the configured'), + ('edit_link_link2network', 'Links check arc diameter:', 'If true, inserted links could not connect to arcs with diameter bigger or equal than the configured'), + ('edit_mapzones_automatic_insert', 'Automatic mapzones insert:', 'Enable automatic insert of mapzone when new node header is created and code of mapzones is filled on widget'), + ('epa_arc_minlength', 'Minimum length to export arcs:', 'Minimum length used to export arcs in order to prevent nod2arc function crash'), + ('epa_export_hybrid_dma', 'EPA Export Hybrid DMA:', 'If True, hybrid DMAs are exported when network mode is TRANSMISSION NETWORK'), + ('epa_patterns', 'EPA patterns:', 'Configure variables for vdefault values on pattern_id for dma table among others'), + ('epa_shortpipe_vdefault', 'Default value for EPA shortpipes:', 'Vdefault values for epa shortpipes. This parameter must be according the epa_default definition for all shortpipes'), + ('epa_shutoffvalve', 'EPA shutoff valve:', 'On the fly transformation for shutoff-valves. This parameter must be according the epa_default definition for shutoff valves on cat_feature_node table (SHORPIPE or VALVE)'), + ('epa_units_factor', 'EPA units factor:', 'Conversion factors of CRM flows in function of EPA units choosed by user'), + ('epa_valve_vdefault_prv', 'Default value for EPA PRV valves:', 'Vdefault values for epa-prv-valves. This parameter must be according the epa_default definition for all valves'), + ('epa_valve_vdefault_tcv', 'Default value for EPA TCV valves:', 'Vdefault values for epa-tcv-valves. This parameter must be according the epa_default definition for all valves'), + ('ignoreBrokenOnlyMassiveMincut', 'Ignore broken only on massive mincut:', 'Ignore broken only on massive mincut'), + ('ignoreCheckValvesMincut', 'Ignore check valves on mincut:', 'Ignore check valves on mincut'), + ('om_mincut_config', 'Mincut system config:', 'Mincut system config. version - Mincut version; usePgrouting - Different ways to use mincut.If true, mincut is done with pgrouting, an extension of Postgis.'), + ('om_mincut_debug', 'Mincut debug:', 'Variable to enable/disable the debug messages of mincut (WS)'), + ('om_mincut_hydrometer_filter', 'Mincut hydrometer filter:', 'Mincut hydrometer filter'), + ('om_mincut_settings', 'Mincut settings:', 'Mincut settings. valveStatus - Variable to enable/disable the possibility to use valve unaccess button to open valves with closed status ; redoOnStart - If true, on starting the mincut the process will be recalculated if the indicated number of days since receving the mincut has passed; deleteUsers - Choose if mincuts could be only deleted by its creator or by all users. Set value ''creator'' or ''all''.'), + ('om_mincut_use_pgrouting', 'Mincut uses pgrouting:', 'Different ways to use mincut. If true, mincut is done with pgrouting, an extension of Postgis'), + ('om_mincut_valvestatus_unaccess', 'Mincut uses valveunaccess button to change valve status:', 'Variable to enable/disable the possibility to use valve unaccess button to open valves with closed status (WS)'), + ('om_mincut_vdefault', 'Default mincut values:', 'Default values used when creating a new mincut'), + ('om_waterbalance_threshold_days', NULL, 'Amount of days that give currency to waterbalance'), + ('utils_graphanalytics_automatic_config', 'Mapzones automatic config:', 'Variable to automatize inserts into config_graph_valve acording with graph_delimiter value of cat_feature_node'), + ('utils_graphanalytics_automatic_trigger', 'Automatic graphanalytics trigger:', 'Automatic trigger of graph analytics used when valve status is modified (open or close)'), + ('utils_graphanalytics_custom_geometry_constructor', 'Custom query for mapzones:', 'Custom query used to draw mapzones') +) AS v(parameter, label, descript) +WHERE t.parameter = v.parameter; \ No newline at end of file diff --git a/dbmodel/schemas/addon/utils/final_pass/i18n/en_US/dbconfig_report.sql b/dbmodel/schemas/addon/utils/final_pass/i18n/en_US/dbconfig_report.sql new file mode 100644 index 0000000000..b96f4d042c --- /dev/null +++ b/dbmodel/schemas/addon/utils/final_pass/i18n/en_US/dbconfig_report.sql @@ -0,0 +1,19 @@ +/* +This file is part of Giswater +The program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. +*/ + + +SET search_path = SCHEMA_NAME, public, pg_catalog; +UPDATE config_report AS t SET alias = v.alias, descript = v.descript FROM ( + VALUES + (100, 'Conduit length by exploitation and catalog', NULL), + (101, 'Connecs by exploitation', NULL), + (105, 'Nodes by exploitation and type', NULL), + (100, 'Pipe length by Exploitation and Catalog', NULL), + (101, 'Connecs by Exploitation', NULL), + (102, 'Losses & NRW by Exploitation, Dma & Period', NULL), + (103, 'Total Losses & NRW by Exploitation', NULL), + (104, 'Total Losses & NRW by Dma', NULL) +) AS v(id, alias, descript) +WHERE t.id = v.id; \ No newline at end of file diff --git a/dbmodel/schemas/addon/utils/final_pass/i18n/en_US/dbconfig_toolbox.sql b/dbmodel/schemas/addon/utils/final_pass/i18n/en_US/dbconfig_toolbox.sql new file mode 100644 index 0000000000..7b5818b6b2 --- /dev/null +++ b/dbmodel/schemas/addon/utils/final_pass/i18n/en_US/dbconfig_toolbox.sql @@ -0,0 +1,90 @@ +/* +This file is part of Giswater +The program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. +*/ + + +SET search_path = SCHEMA_NAME, public, pg_catalog; +UPDATE config_toolbox AS t SET alias = v.alias, observ = v.observ FROM ( + VALUES + (2202, 'Check arcs intersected', NULL), + (2204, 'Check arcs with the slope inverted', NULL), + (2206, 'Check nodes-find exit-arcs over entry-arcs', NULL), + (2208, 'Check nodes with more than one exit', NULL), + (2210, 'Check nodes as a outfall', NULL), + (2212, 'Check node topological consistency', NULL), + (2431, 'Check data according to EPA rules', NULL), + (2496, 'Arc repair', NULL), + (2768, 'Mapzones analysis', NULL), + (2986, 'Slope consistency', NULL), + (3064, 'Check nodes elevation values', NULL), + (3066, 'Check arcs elevation values', NULL), + (3100, 'Manage Hydrology values', NULL), + (3102, 'Manage Dwf values', NULL), + (3118, 'Create Dscenario with values from ToC', NULL), + (3176, 'Control conduit sections', NULL), + (3186, 'Set junctions as outlet', NULL), + (3242, 'Set optimum outlet for subcatchments', NULL), + (3290, 'Create empty Hydrology scenario', NULL), + (3292, 'Create empty DWF scenario', NULL), + (3294, 'Duplicate Hydrology scenario', NULL), + (3296, 'Duplicate DWF scenario', NULL), + (3326, 'Calculate the hydraulic performance for specific result', NULL), + (3360, 'Create Thyssen subcatchments', NULL), + (3424, 'Fluid type analysis', NULL), + (3492, 'Omunit analysis', NULL), + (3522, 'Treatment type analysis', NULL), + (2102, 'Check arcs without node start/end', NULL), + (2104, 'Check arcs with same start/end node', NULL), + (2106, 'Check connecs duplicated', NULL), + (2108, 'Check nodes duplicated', NULL), + (2110, 'Check nodes orphan', NULL), + (2118, 'Build nodes using arcs start & end vertices', NULL), + (2436, 'Check plan data', NULL), + (2670, 'Check data for o&m process', NULL), + (2760, 'Get values from raster DEM', NULL), + (2772, 'Flow trace analytics', NULL), + (2776, 'Check backend configuration', NULL), + (2826, 'Linear Reference System', NULL), + (2890, 'Reconstruction cost & amortization values', NULL), + (2922, 'Reset user profile', NULL), + (2998, 'User check data', NULL), + (3008, 'Arc reverse', NULL), + (3040, 'Check arcs duplicated', NULL), + (3042, 'Manage Dscenario values', NULL), + (3052, 'Arcs shorter/bigger than specific length', NULL), + (3080, 'Repair nodes duplicated (one by one)', NULL), + (3130, 'Topocontrol for data migration', NULL), + (3134, 'Create empty Dscenario', NULL), + (3156, 'Duplicate dscenario', NULL), + (3172, 'Check nodes T candidates', NULL), + (3198, 'Get address values from closest street number', NULL), + (3280, 'Massive node rotation update', NULL), + (3284, 'Merge two or more psectors into one', NULL), + (3336, 'Macrominsector analysis', NULL), + (3426, 'Integrate campaign into production', NULL), + (3482, 'Macromapzones analysis', NULL), + (2302, 'Check node topological consistency', NULL), + (2430, 'Check data according to EPA rules', NULL), + (2496, 'Reconnect arcs with closest nodes', NULL), + (2706, 'Minsector analysis', NULL), + (2768, 'Análisis de Mapzones', NULL), + (2790, 'Check data for graphanalytics process', NULL), + (2970, 'Config mapzones', NULL), + (3108, 'Create Network Dscenario from ToC', NULL), + (3110, 'Create Demand Dscenario from CRM', NULL), + (3112, 'Create Demand Dscenario from ToC', NULL), + (3142, 'Water balance by Exploitation and Period', NULL), + (3158, 'Create valve dscenario from mincut', NULL), + (3160, 'Calculate the reach of hydrants', 'Function requires street data inserted on table om_streetaxis, where each street is divided into short lines between intersections.'), + (3236, 'Show current mincuts', NULL), + (3256, 'Mapzones Netscenario analysis', NULL), + (3258, 'Set pattern values on demand dscenario', NULL), + (3260, 'Create empty Netscenario', NULL), + (3262, 'Create Netscenario from ToC', NULL), + (3264, 'Duplicate Netscenario', NULL), + (3268, 'Set initlevel values from executed simulation', NULL), + (3308, 'Create full Network dscenario', NULL), + (3322, 'Set cost for removed material on psectors', NULL) +) AS v(id, alias, observ) +WHERE t.id = v.id; \ No newline at end of file diff --git a/dbmodel/schemas/addon/utils/final_pass/i18n/en_US/dbconfig_typevalue.sql b/dbmodel/schemas/addon/utils/final_pass/i18n/en_US/dbconfig_typevalue.sql new file mode 100644 index 0000000000..387100c508 --- /dev/null +++ b/dbmodel/schemas/addon/utils/final_pass/i18n/en_US/dbconfig_typevalue.sql @@ -0,0 +1,478 @@ +/* +This file is part of Giswater +The program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. +*/ + + +SET search_path = SCHEMA_NAME, public, pg_catalog; +UPDATE config_typevalue AS t SET idval = v.idval FROM ( + VALUES + ('link_to_gully', 'formtype_typevalue', 'link_to_gully'), + ('nvo_lids', 'formtype_typevalue', 'nvo_lids'), + ('nvo_timeseries', 'formtype_typevalue', 'nvo_timeseries'), + ('lyt_conduit_1', 'layout_name_typevalue', 'lyt_conduit_1'), + ('lyt_connection_1', 'layout_name_typevalue', 'lyt_connection_1'), + ('lyt_connection_2', 'layout_name_typevalue', 'lyt_connection_2'), + ('lyt_connection_3', 'layout_name_typevalue', 'lyt_connection_3'), + ('lyt_drain_1', 'layout_name_typevalue', 'lyt_drain_1'), + ('lyt_drainmat_1', 'layout_name_typevalue', 'lyt_drainmat_1'), + ('lyt_inflows_1', 'layout_name_typevalue', 'lyt_inflows_1'), + ('lyt_lids_1', 'layout_name_typevalue', 'lyt_lids_1'), + ('lyt_nvo_lids_1', 'layout_name_typevalue', 'lyt_nvo_lids_1'), + ('lyt_nvo_lids_2', 'layout_name_typevalue', 'lyt_nvo_lids_2'), + ('lyt_nvo_timeseries_1', 'layout_name_typevalue', 'lyt_nvo_timeseries_1'), + ('lyt_nvo_timeseries_2', 'layout_name_typevalue', 'lyt_nvo_timeseries_2'), + ('lyt_nvo_timeseries_3', 'layout_name_typevalue', 'lyt_nvo_timeseries_3'), + ('lyt_nvo_timeseries_4', 'layout_name_typevalue', 'lyt_nvo_timeseries_4'), + ('lyt_orifice_1', 'layout_name_typevalue', 'lyt_orifice_1'), + ('lyt_outfall_1', 'layout_name_typevalue', 'lyt_outfall_1'), + ('lyt_outlet_1', 'layout_name_typevalue', 'lyt_outlet_1'), + ('lyt_pavement_1', 'layout_name_typevalue', 'lyt_pavement_1'), + ('lyt_poll_1', 'layout_name_typevalue', 'lyt_poll_1'), + ('lyt_raingage_1', 'layout_name_typevalue', 'lyt_raingage_1'), + ('lyt_relations_gully_1', 'layout_name_typevalue', 'lyt_relations_gully_1'), + ('lyt_roof_1', 'layout_name_typevalue', 'lyt_roof_1'), + ('lyt_soil_1', 'layout_name_typevalue', 'lyt_soil_1'), + ('lyt_storage_1', 'layout_name_typevalue', 'lyt_storage_1'), + ('lyt_surface_1', 'layout_name_typevalue', 'lyt_surface_1'), + ('lyt_time_2', 'layout_name_typevalue', 'lyt_time_2'), + ('lyt_timeseries_1', 'layout_name_typevalue', 'lyt_timeseries_1'), + ('lyt_treatment_1', 'layout_name_typevalue', 'lyt_treatment_1'), + ('lyt_weir_1', 'layout_name_typevalue', 'lyt_weir_1'), + ('16', 'sys_table_context', '["INVENTORY", "NETWORK", "FLOW REGULATORS"]'), + ('17', 'sys_table_context', '["INVENTORY", "NETWORK", "FRELEMENT"]'), + ('18', 'sys_table_context', '["INVENTORY", "NETWORK", "GULLY"]'), + ('19', 'sys_table_context', '["INVENTORY", "NETWORK", "LINK"]'), + ('20', 'sys_table_context', '["INVENTORY", "NETWORK", "NODE"]'), + ('21', 'sys_table_context', '["INVENTORY", "NETWORK", "POLYGON"]'), + ('22', 'sys_table_context', '["INVENTORY", "OTHER"]'), + ('23', 'sys_table_context', '["INVENTORY", "VALUE DOMAIN"]'), + ('27', 'sys_table_context', '["OM", "ANALYTICS"]'), + ('28', 'sys_table_context', '["OM", "FLOWTRACE"]'), + ('29', 'sys_table_context', '["OM", "MINCUT"]'), + ('30', 'sys_table_context', '["OM", "VISIT"]'), + ('tab_conduit', 'tabname_typevalue', 'tab_conduit'), + ('tab_drain', 'tabname_typevalue', 'tab_drain'), + ('tab_drainmat', 'tabname_typevalue', 'tab_drainmat'), + ('tab_inflows', 'tabname_typevalue', 'tab_inflows'), + ('tab_lids', 'tabname_typevalue', 'tab_lids'), + ('tab_orifice', 'tabname_typevalue', 'tab_orifice'), + ('tab_outfall', 'tabname_typevalue', 'tab_outfall'), + ('tab_outlet', 'tabname_typevalue', 'tab_outlet'), + ('tab_pavement', 'tabname_typevalue', 'tab_pavement'), + ('tab_poll', 'tabname_typevalue', 'tab_poll'), + ('tab_raingage', 'tabname_typevalue', 'tab_raingage'), + ('tab_relations_gully', 'tabname_typevalue', 'tab_relations_gully'), + ('tab_roof', 'tabname_typevalue', 'tab_roof'), + ('tab_soil', 'tabname_typevalue', 'tab_soil'), + ('tab_storage', 'tabname_typevalue', 'tab_storage'), + ('tab_surface', 'tabname_typevalue', 'tab_surface'), + ('tab_timeseries', 'tabname_typevalue', 'tab_timeseries'), + ('tab_treatment', 'tabname_typevalue', 'tab_treatment'), + ('tab_weir', 'tabname_typevalue', 'tab_weir'), + ('boolean', 'datatype_typevalue', 'boolean'), + ('bytea', 'datatype_typevalue', 'bytea'), + ('date', 'datatype_typevalue', 'date'), + ('datetime', 'datatype_typevalue', 'datetime'), + ('double', 'datatype_typevalue', 'double'), + ('integer', 'datatype_typevalue', 'integer'), + ('numeric', 'datatype_typevalue', 'numeric'), + ('smallint', 'datatype_typevalue', 'smallint'), + ('string', 'datatype_typevalue', 'string'), + ('text', 'datatype_typevalue', 'text'), + ('1', 'device_typevalue', 'Mobile'), + ('2', 'device_typevalue', 'Tablet'), + ('3', 'device_typevalue', 'Web'), + ('4', 'device_typevalue', 'Desktop'), + ('hspacer', 'device_typevalue', 'hspacer'), + ('tableview', 'device_typevalue', 'tableview'), + ('vspacer', 'device_typevalue', 'vspacer'), + ('doc', 'filetype_typevalue', 'Document'), + ('jpg', 'filetype_typevalue', 'Image'), + ('mp4', 'filetype_typevalue', 'Video'), + ('pdf', 'filetype_typevalue', 'Pdf'), + ('png', 'filetype_typevalue', 'Image'), + ('actionAddFile', 'formactions_typevalue', 'Add File'), + ('actionAddPhoto', 'formactions_typevalue', 'Add Photo'), + ('actionCatalog', 'formactions_typevalue', 'Change Catalog'), + ('actionCentered', 'formactions_typevalue', 'Center'), + ('actionCopyPaste', 'formactions_typevalue', 'Copy Paste'), + ('actionDelete', 'formactions_typevalue', 'Delete'), + ('actionDemand', 'formactions_typevalue', 'Demand'), + ('actionEdit', 'formactions_typevalue', 'Edit'), + ('actionGetArcId', 'formactions_typevalue', 'Set arc_id'), + ('actionGetParentId', 'formactions_typevalue', 'Set parent_id'), + ('actionHelp', 'formactions_typevalue', 'Help'), + ('actionInterpolate', 'formactions_typevalue', 'Interpolate'), + ('actionLink', 'formactions_typevalue', 'Open Link'), + ('actionMapZone', 'formactions_typevalue', 'Add Mapzone'), + ('actionOrifice', 'formactions_typevalue', 'Orifice'), + ('actionOutlet', 'formactions_typevalue', 'Outlet'), + ('actionPump', 'formactions_typevalue', 'Additional Pump'), + ('actionRotation', 'formactions_typevalue', 'Rotation'), + ('actionSection', 'formactions_typevalue', 'Show Section'), + ('actionSetGeom', 'formactions_typevalue', 'Set Geom'), + ('actionSetToArc', 'formactions_typevalue', 'Set To Arc'), + ('actionVisitEnd', 'formactions_typevalue', 'End Visit'), + ('actionVisitStart', 'formactions_typevalue', 'Start Visit'), + ('actionWeir', 'formactions_typevalue', 'Weir'), + ('actionWorkcat', 'formactions_typevalue', 'Add Workcat'), + ('actionZoom', 'formactions_typevalue', 'Zoom'), + ('actionZoomIn', 'formactions_typevalue', 'Zoom In'), + ('actionZoomOut', 'formactions_typevalue', 'Zoom Out'), + ('getInfoFromId', 'formactions_typevalue', 'Info'), + ('dimensioning', 'formtemplate_typevalue', 'dimensioning'), + ('element', 'formtemplate_typevalue', 'element'), + ('info_feature', 'formtemplate_typevalue', 'info_feature'), + ('info_generic', 'formtemplate_typevalue', 'info generic'), + ('visit', 'formtemplate_typevalue', 'visit'), + ('visit_class', 'formtemplate_typevalue', 'visit_class'), + ('audit', 'formtype_typevalue', 'audit'), + ('audit_manager', 'formtype_typevalue', 'audit_manager'), + ('check_project', 'formtype_typevalue', 'check_project'), + ('create_organization', 'formtype_typevalue', 'create_organization'), + ('dscenario', 'formtype_typevalue', 'dscenario'), + ('dscenario_manager', 'formtype_typevalue', 'dscenario_manager'), + ('epa_manager', 'formtype_typevalue', 'epa_manager'), + ('epa_selector', 'formtype_typevalue', 'epa_selector'), + ('form_catalog', 'formtype_typevalue', 'form_catalog'), + ('form_element', 'formtype_typevalue', 'form_element'), + ('form_feature', 'formtype_typevalue', 'form_feature'), + ('form_featuretype_change', 'formtype_typevalue', 'form_featuretype_change'), + ('form_generic', 'formtype_typevalue', 'form_generic'), + ('form_list_footer', 'formtype_typevalue', 'form_list_footer'), + ('form_list_header', 'formtype_typevalue', 'form_list_header'), + ('form_lot', 'formtype_typevalue', 'form_lot'), + ('form_print', 'formtype_typevalue', 'form_print'), + ('form_visit', 'formtype_typevalue', 'form_visit'), + ('go2epa', 'formtype_typevalue', 'go2epa'), + ('link_to_connec', 'formtype_typevalue', 'link_to_connec'), + ('nvo_controls', 'formtype_typevalue', 'nvo_controls'), + ('nvo_curves', 'formtype_typevalue', 'nvo_curves'), + ('nvo_manager', 'formtype_typevalue', 'nvo_manager'), + ('nvo_patterns', 'formtype_typevalue', 'nvo_patterns'), + ('psector', 'formtype_typevalue', 'psector'), + ('psector_manager', 'formtype_typevalue', 'psector_manager'), + ('snapshot_view', 'formtype_typevalue', 'snapshot_view'), + ('workspace_manager', 'formtype_typevalue', 'workspace_manager'), + ('workspace_open', 'formtype_typevalue', 'workspace_open'), + ('1', 'infotype_typevalue', 'Complet info'), + ('2', 'infotype_typevalue', 'Basic info'), + ('lyt_add_info_1', 'layout_name_typevalue', 'lyt_add_info_1'), + ('lyt_audit_manager_1', 'layout_name_typevalue', 'lyt_audit_manager_1'), + ('lyt_audit_manager_2', 'layout_name_typevalue', 'lyt_audit_manager_2'), + ('lyt_bot_1', 'layout_name_typevalue', 'lyt_bot_1'), + ('lyt_bot_2', 'layout_name_typevalue', 'lyt_bot_2'), + ('lyt_budget_1', 'layout_name_typevalue', 'lyt_budget_1'), + ('lyt_budget_10', 'layout_name_typevalue', 'lyt_budget_10'), + ('lyt_budget_11', 'layout_name_typevalue', 'lyt_budget_11'), + ('lyt_budget_12', 'layout_name_typevalue', 'lyt_budget_12'), + ('lyt_budget_13', 'layout_name_typevalue', 'lyt_budget_13'), + ('lyt_budget_2', 'layout_name_typevalue', 'lyt_budget_2'), + ('lyt_budget_3', 'layout_name_typevalue', 'lyt_budget_3'), + ('lyt_budget_4', 'layout_name_typevalue', 'lyt_budget_4'), + ('lyt_budget_5', 'layout_name_typevalue', 'lyt_budget_5'), + ('lyt_budget_6', 'layout_name_typevalue', 'lyt_budget_6'), + ('lyt_budget_7', 'layout_name_typevalue', 'lyt_budget_7'), + ('lyt_budget_8', 'layout_name_typevalue', 'lyt_budget_8'), + ('lyt_budget_9', 'layout_name_typevalue', 'lyt_budget_9'), + ('lyt_buttons', 'layout_name_typevalue', 'lyt_buttons'), + ('lyt_connect_link_1', 'layout_name_typevalue', 'lyt_connect_link_1'), + ('lyt_connect_link_2', 'layout_name_typevalue', 'lyt_connect_link_2'), + ('lyt_connect_link_3', 'layout_name_typevalue', 'lyt_connect_link_3'), + ('lyt_connect_link_4', 'layout_name_typevalue', 'lyt_connect_link_4'), + ('lyt_controls_1', 'layout_name_typevalue', 'lyt_controls_1'), + ('lyt_create_org_1', 'layout_name_typevalue', 'lyt_create_org_1'), + ('lyt_curves_1', 'layout_name_typevalue', 'lyt_curves_1'), + ('lyt_data_1', 'layout_name_typevalue', 'lyt_data_1'), + ('lyt_data_2', 'layout_name_typevalue', 'lyt_data_2'), + ('lyt_data_3', 'layout_name_typevalue', 'lyt_data_3'), + ('lyt_data_4', 'layout_name_typevalue', 'lyt_data_4'), + ('lyt_document_1', 'layout_name_typevalue', 'lyt_document_1'), + ('lyt_document_2', 'layout_name_typevalue', 'lyt_document_2'), + ('lyt_document_3', 'layout_name_typevalue', 'lyt_document_3'), + ('lyt_dscenario_1', 'layout_name_typevalue', 'lyt_dscenario_1'), + ('lyt_dscenario_2', 'layout_name_typevalue', 'lyt_dscenario_2'), + ('lyt_dscenario_3', 'layout_name_typevalue', 'lyt_dscenario_3'), + ('lyt_dscenario_mngr_1', 'layout_name_typevalue', 'lyt_dscenario_mngr_1'), + ('lyt_dscenario_mngr_2', 'layout_name_typevalue', 'lyt_dscenario_mngr_2'), + ('lyt_dscenario_mngr_3', 'layout_name_typevalue', 'lyt_dscenario_mngr_3'), + ('lyt_elem_dsc_orifice', 'layout_name_typevalue', 'lyt_elem_dsc_orifice'), + ('lyt_elem_dsc_outlet', 'layout_name_typevalue', 'lyt_elem_dsc_outlet'), + ('lyt_elem_dsc_pump', 'layout_name_typevalue', 'lyt_elem_dsc_pump'), + ('lyt_elem_dsc_weir', 'layout_name_typevalue', 'lyt_elem_dsc_weir'), + ('lyt_element_1', 'layout_name_typevalue', 'lyt_element_1'), + ('lyt_element_2', 'layout_name_typevalue', 'lyt_element_2'), + ('lyt_element_3', 'layout_name_typevalue', 'lyt_element_3'), + ('lyt_element_dscenario_1', 'layout_name_typevalue', 'lyt_element_dscenario_3'), + ('lyt_element_dscenario_2', 'layout_name_typevalue', 'lyt_element_dscenario_3'), + ('lyt_element_dscenario_3', 'layout_name_typevalue', 'lyt_element_dscenario_3'), + ('lyt_element_mng_1', 'layout_name_typevalue', 'lyt_element_mng_1'), + ('lyt_element_mng_2', 'layout_name_typevalue', 'lyt_element_mng_2'), + ('lyt_epa_1', 'layout_name_typevalue', 'lyt_epa_1'), + ('lyt_epa_data_1', 'layout_name_typevalue', 'lyt_epa_data_1'), + ('lyt_epa_data_2', 'layout_name_typevalue', 'lyt_epa_data_2'), + ('lyt_epa_dsc_1', 'layout_name_typevalue', 'lyt_epa_dsc_1'), + ('lyt_epa_dsc_2', 'layout_name_typevalue', 'lyt_epa_dsc_2'), + ('lyt_epa_dsc_3', 'layout_name_typevalue', 'lyt_epa_dsc_3'), + ('lyt_epa_mngr_1', 'layout_name_typevalue', 'lyt_epa_mngr_1'), + ('lyt_epa_mngr_2', 'layout_name_typevalue', 'lyt_epa_mngr_2'), + ('lyt_epa_mngr_3', 'layout_name_typevalue', 'lyt_epa_mngr_3'), + ('lyt_epa_select_1', 'layout_name_typevalue', 'lyt_epa_select_1'), + ('lyt_epa_select_2', 'layout_name_typevalue', 'lyt_epa_select_2'), + ('lyt_epa_select_3', 'layout_name_typevalue', 'lyt_epa_select_3'), + ('lyt_event_1', 'layout_name_typevalue', 'lyt_event_1'), + ('lyt_event_2', 'layout_name_typevalue', 'lyt_event_2'), + ('lyt_event_3', 'layout_name_typevalue', 'lyt_event_3'), + ('lyt_features_1', 'layout_name_typevalue', 'lyt_features_1'), + ('lyt_features_2', 'layout_name_typevalue', 'lyt_features_2'), + ('lyt_features_2_arc', 'layout_name_typevalue', 'lyt_features_2_arc'), + ('lyt_features_2_connec', 'layout_name_typevalue', 'lyt_features_2_connec'), + ('lyt_features_2_gully', 'layout_name_typevalue', 'lyt_features_2_gully'), + ('lyt_features_2_link', 'layout_name_typevalue', 'lyt_features_2_link'), + ('lyt_features_2_node', 'layout_name_typevalue', 'lyt_features_2_node'), + ('lyt_features_3', 'layout_name_typevalue', 'lyt_features_3'), + ('lyt_files_1', 'layout_name_typevalue', 'lyt_files_1'), + ('lyt_files_2', 'layout_name_typevalue', 'lyt_files_2'), + ('lyt_general_1', 'layout_name_typevalue', 'lyt_general_1'), + ('lyt_general_2', 'layout_name_typevalue', 'lyt_general_2'), + ('lyt_general_3', 'layout_name_typevalue', 'lyt_general_3'), + ('lyt_general_4', 'layout_name_typevalue', 'lyt_general_4'), + ('lyt_general_5', 'layout_name_typevalue', 'lyt_general_5'), + ('lyt_general_6', 'layout_name_typevalue', 'lyt_general_6'), + ('lyt_general_7', 'layout_name_typevalue', 'lyt_general_7'), + ('lyt_general_8', 'layout_name_typevalue', 'lyt_general_8'), + ('lyt_go2epa_1', 'layout_name_typevalue', 'lyt_go2epa_1'), + ('lyt_go2epa_data_1', 'layout_name_typevalue', 'lyt_go2epa_data_1'), + ('lyt_go2epa_data_2', 'layout_name_typevalue', 'lyt_go2epa_data_2'), + ('lyt_go2epa_data_3', 'layout_name_typevalue', 'lyt_go2epa_data_3'), + ('lyt_go2epa_log', 'layout_name_typevalue', 'lyt_go2epa_log'), + ('lyt_go2epa_log_btns', 'layout_name_typevalue', 'lyt_go2epa_log_btns'), + ('lyt_hydro_val_1', 'layout_name_typevalue', 'lyt_hydro_val_1'), + ('lyt_hydro_val_2', 'layout_name_typevalue', 'lyt_hydro_val_2'), + ('lyt_hydro_val_3', 'layout_name_typevalue', 'lyt_hydro_val_3'), + ('lyt_hydrometer_1', 'layout_name_typevalue', 'lyt_hydrometer_1'), + ('lyt_hydrometer_2', 'layout_name_typevalue', 'lyt_hydrometer_2'), + ('lyt_hydrometer_3', 'layout_name_typevalue', 'lyt_hydrometer_3'), + ('lyt_junction_1', 'layout_name_typevalue', 'lyt_junction_1'), + ('lyt_log_1', 'layout_name_typevalue', 'lyt_log_1'), + ('lyt_main_1', 'layout_name_typevalue', 'lyt_main_1'), + ('lyt_main_2', 'layout_name_typevalue', 'lyt_main_2'), + ('lyt_main_3', 'layout_name_typevalue', 'lyt_main_3'), + ('lyt_measurements', 'layout_name_typevalue', 'lyt_measurements'), + ('lyt_none', 'layout_name_typevalue', 'lyt_none'), + ('lyt_nvo_controls_1', 'layout_name_typevalue', 'lyt_nvo_controls_1'), + ('lyt_nvo_curves_1', 'layout_name_typevalue', 'lyt_nvo_curves_1'), + ('lyt_nvo_curves_2', 'layout_name_typevalue', 'lyt_nvo_curves_2'), + ('lyt_nvo_curves_3', 'layout_name_typevalue', 'lyt_nvo_curves_3'), + ('lyt_nvo_mng_1', 'layout_name_typevalue', 'lyt_nvo_mng_1'), + ('lyt_nvo_mng_2', 'layout_name_typevalue', 'lyt_nvo_mng_2'), + ('lyt_nvo_mng_3', 'layout_name_typevalue', 'lyt_nvo_mng_1'), + ('lyt_nvo_patterns_1', 'layout_name_typevalue', 'lyt_nvo_patterns_1'), + ('lyt_nvo_patterns_2', 'layout_name_typevalue', 'lyt_nvo_patterns_2'), + ('lyt_nvo_patterns_3', 'layout_name_typevalue', 'lyt_nvo_patterns_3'), + ('lyt_other', 'layout_name_typevalue', 'lyt_other'), + ('lyt_other_prices_1', 'layout_name_typevalue', 'lyt_other_prices_1'), + ('lyt_other_prices_all_1', 'layout_name_typevalue', 'lyt_other_prices_all_1'), + ('lyt_other_prices_mine_1', 'layout_name_typevalue', 'lyt_other_prices_mine_1'), + ('lyt_patterns_1', 'layout_name_typevalue', 'lyt_patterns_1'), + ('lyt_pipe_1', 'layout_name_typevalue', 'lyt_pipe_1'), + ('lyt_psector_1', 'layout_name_typevalue', 'lyt_psector_1'), + ('lyt_psector_2', 'layout_name_typevalue', 'lyt_psector_2'), + ('lyt_psector_3', 'layout_name_typevalue', 'lyt_psector_3'), + ('lyt_psector_mngr_1', 'layout_name_typevalue', 'lyt_psector_mngr_1'), + ('lyt_psector_mngr_2', 'layout_name_typevalue', 'lyt_psector_mngr_2'), + ('lyt_psector_mngr_3', 'layout_name_typevalue', 'lyt_psector_mngr_3'), + ('lyt_pump_1', 'layout_name_typevalue', 'lyt_pump_1'), + ('lyt_relation_1', 'layout_name_typevalue', 'lyt_relation_1'), + ('lyt_relation_2', 'layout_name_typevalue', 'lyt_relation_2'), + ('lyt_relation_3', 'layout_name_typevalue', 'lyt_relation_3'), + ('lyt_relations_1', 'layout_name_typevalue', 'lyt_relations_1'), + ('lyt_relations_arc_1', 'layout_name_typevalue', 'lyt_relations_arc_1'), + ('lyt_relations_connec_1', 'layout_name_typevalue', 'lyt_relations_connec_1'), + ('lyt_relations_node_1', 'layout_name_typevalue', 'lyt_relations_node_1'), + ('lyt_result_1', 'layout_name_typevalue', 'lyt_result_1'), + ('lyt_snapshot_view_1', 'layout_name_typevalue', 'lyt_snapshot_view_1'), + ('lyt_snapshot_view_2', 'layout_name_typevalue', 'lyt_snapshot_view_2'), + ('lyt_snapshot_view_3', 'layout_name_typevalue', 'lyt_snapshot_view_3'), + ('lyt_snapshot_view_4', 'layout_name_typevalue', 'lyt_snapshot_view_4'), + ('lyt_symbology', 'layout_name_typevalue', 'lyt_symbology'), + ('lyt_time_1', 'layout_name_typevalue', 'lyt_time_1'), + ('lyt_top_1', 'layout_name_typevalue', 'lyt_top_1'), + ('lyt_visit_1', 'layout_name_typevalue', 'lyt_visit_1'), + ('lyt_visit_2', 'layout_name_typevalue', 'lyt_visit_2'), + ('lyt_visit_3', 'layout_name_typevalue', 'lyt_visit_3'), + ('lyt_visit_mng_1', 'layout_name_typevalue', 'lyt_visit_mng_1'), + ('lyt_workspace_mngr_1', 'layout_name_typevalue', 'lyt_workspace_mngr_1'), + ('lyt_workspace_mngr_2', 'layout_name_typevalue', 'lyt_workspace_mngr_2'), + ('lyt_workspace_mngr_3', 'layout_name_typevalue', 'lyt_workspace_mngr_3'), + ('lyt_workspace_open_1', 'layout_name_typevalue', 'lyt_workspace_open_1'), + ('action_audit', 'linkedaction_typevalue', 'action_audit'), + ('1', 'listlimit_typevalue', '10'), + ('2', 'listlimit_typevalue', '50'), + ('3', 'listlimit_typevalue', '100'), + ('4', 'listlimit_typevalue', '500'), + ('5', 'listlimit_typevalue', '1000'), + ('1', 'project_type', 'Basic'), + ('0', 'sys_table_context', '["BASEMAP", "ADDRESS"]'), + ('1', 'sys_table_context', '["BASEMAP", "CARTO"]'), + ('10', 'sys_table_context', '["INVENTORY", "AUXILIAR"]'), + ('11', 'sys_table_context', '["INVENTORY", "CATALOGS"]'), + ('12', 'sys_table_context', '["INVENTORY", "MAP ZONES"]'), + ('13', 'sys_table_context', '["INVENTORY", "NETWORK", "ARC"]'), + ('14', 'sys_table_context', '["INVENTORY", "NETWORK", "CONNEC"]'), + ('15', 'sys_table_context', '["INVENTORY", "NETWORK", "ELEMENT"]'), + ('2', 'sys_table_context', '["EPA", "CATALOGS"]'), + ('24', 'sys_table_context', '["MASTERPLAN", "PRICES"]'), + ('25', 'sys_table_context', '["MASTERPLAN", "PSECTOR"]'), + ('26', 'sys_table_context', '["MASTERPLAN", "TRACEABILITY"]'), + ('3', 'sys_table_context', '["EPA", "COMPARE"]'), + ('33', 'sys_table_context', '["MASTERPLAN", "REPOSITION VALUE"]'), + ('4', 'sys_table_context', '["EPA", "DSCENARIO"]'), + ('5', 'sys_table_context', '["EPA", "FLOWREG"]'), + ('6', 'sys_table_context', '["EPA", "HYDRAULICS"]'), + ('7', 'sys_table_context', '["EPA", "HYDROLOGY"]'), + ('8', 'sys_table_context', '["EPA", "RESULTS"]'), + ('9', 'sys_table_context', '["HIDDEN"]'), + ('tab_add_info', 'tabname_typevalue', 'tab_add_info'), + ('tab_add_network', 'tabname_typevalue', 'tab_add_network'), + ('tab_address', 'tabname_typevalue', 'tab_address'), + ('tab_admin', 'tabname_typevalue', 'tab_admin'), + ('tab_budget', 'tabname_typevalue', 'tab_budget'), + ('tab_connections', 'tabname_typevalue', 'tab_connections'), + ('tab_controls', 'tabname_typevalue', 'tab_controls'), + ('tab_curves', 'tabname_typevalue', 'tab_curves'), + ('tab_data', 'tabname_typevalue', 'tab_data'), + ('tab_document', 'tabname_typevalue', 'tab_document'), + ('tab_documents', 'tabname_typevalue', 'tab_documents'), + ('tab_done', 'tabname_typevalue', 'tab_done'), + ('tab_dscenario', 'tabname_typevalue', 'tab_dscenario'), + ('tab_elements', 'tabname_typevalue', 'tab_elements'), + ('tab_epa', 'tabname_typevalue', 'tab_epa'), + ('tab_event', 'tabname_typevalue', 'tab_event'), + ('tab_exploitation', 'tabname_typevalue', 'tab_exploitation'), + ('tab_exploitation_add', 'tabname_typevalue', 'tab_exploitation_add'), + ('tab_features', 'tabname_typevalue', 'tab_features'), + ('tab_file', 'tabname_typevalue', 'tab_file'), + ('tab_general', 'tabname_typevalue', 'tab_general'), + ('tab_hydro', 'tabname_typevalue', 'tab_hydro'), + ('tab_hydro_state', 'tabname_typevalue', 'tab_hdyro_state'), + ('tab_hydrometer', 'tabname_typevalue', 'tab_hydrometer'), + ('tab_hydrometer_val', 'tabname_typevalue', 'tab_hydrometer_val'), + ('tab_junction', 'tabname_typevalue', 'tab_junction'), + ('tab_log', 'tabname_typevalue', 'tab_log'), + ('tab_lot', 'tabname_typevalue', 'tab_lot'), + ('tab_macroexploitation', 'tabname_typevalue', 'Macroexploitation'), + ('tab_macroexploitation_add', 'tabname_typevalue', 'Macroexploitation add'), + ('tab_macrosector', 'tabname_typevalue', 'Macrosector'), + ('tab_mincut', 'tabname_typevalue', 'tab_mincut'), + ('tab_municipality', 'tabname_typevalue', 'tab_municipality'), + ('tab_network', 'tabname_typevalue', 'tab_network'), + ('tab_network_state', 'tabname_typevalue', 'tab_network_state'), + ('tab_none', 'tabname_typevalue', 'tab_none'), + ('tab_other_prices', 'tabname_typevalue', 'tab_other_prices'), + ('tab_other_prices_all', 'tabname_typevalue', 'tab_other_prices_all'), + ('tab_other_prices_mine', 'tabname_typevalue', 'tab_other_prices_mine'), + ('tab_patterns', 'tabname_typevalue', 'tab_patterns'), + ('tab_period', 'tabname_typevalue', 'tab_period'), + ('tab_plan', 'tabname_typevalue', 'tab_plan'), + ('tab_psector', 'tabname_typevalue', 'tab_psector'), + ('tab_pump', 'tabname_typevalue', 'tab_pump'), + ('tab_relations', 'tabname_typevalue', 'tab_relations'), + ('tab_relations_arc', 'tabname_typevalue', 'tab_relations_arc'), + ('tab_relations_connec', 'tabname_typevalue', 'tab_relations_connec'), + ('tab_relations_node', 'tabname_typevalue', 'tab_relations_node'), + ('tab_result', 'tabname_typevalue', 'tab_result'), + ('tab_search', 'tabname_typevalue', 'tab_search'), + ('tab_sector', 'tabname_typevalue', 'Sector'), + ('tab_state', 'tabname_typevalue', 'tabState'), + ('tab_time', 'tabname_typevalue', 'tab_time'), + ('tab_user', 'tabname_typevalue', 'tab_user'), + ('tab_visit', 'tabname_typevalue', 'tab_visit'), + ('tab_workcat', 'tabname_typevalue', 'tab_workcat'), + ('get_info_node', 'widgetfunction_typevalue', 'get_info_node'), + ('get_visit', 'widgetfunction_typevalue', 'get_visit'), + ('open_url', 'widgetfunction_typevalue', 'open_url'), + ('set_previous_form_back', 'widgetfunction_typevalue', 'set_previous_form_back'), + ('set_print', 'widgetfunction_typevalue', 'set_print'), + ('set_visit', 'widgetfunction_typevalue', 'set_visit'), + ('button', 'widgettype_typevalue', 'button'), + ('check', 'widgettype_typevalue', 'check'), + ('combo', 'widgettype_typevalue', 'combo'), + ('datetime', 'widgettype_typevalue', 'datetime'), + ('divider', 'widgettype_typevalue', 'divider'), + ('fileselector', 'widgettype_typevalue', 'fileselector'), + ('hspacer', 'widgettype_typevalue', 'hspacer'), + ('hyperlink', 'widgettype_typevalue', 'hyperlink'), + ('image', 'widgettype_typevalue', 'image'), + ('label', 'widgettype_typevalue', 'label'), + ('list', 'widgettype_typevalue', 'list'), + ('multiple_checkbox', 'widgettype_typevalue', 'multiple_checkbox'), + ('multiple_option', 'widgettype_typevalue', 'multiple_option'), + ('nowidget', 'widgettype_typevalue', 'nowidget'), + ('spinbox', 'widgettype_typevalue', 'spinbox'), + ('tableview', 'widgettype_typevalue', 'tableview'), + ('tablewidget', 'widgettype_typevalue', 'tablewidget'), + ('tabwidget', 'widgettype_typevalue', 'tabwidget'), + ('text', 'widgettype_typevalue', 'text'), + ('textarea', 'widgettype_typevalue', 'Text area'), + ('typeahead', 'widgettype_typevalue', 'typeahead'), + ('vspacer', 'widgettype_typevalue', 'vspacer'), + ('form_mincut', 'formtype_typevalue', 'form_mincut'), + ('nvo_roughness', 'formtype_typevalue', 'nvo_roughness'), + ('nvo_rules', 'formtype_typevalue', 'nvo_rules'), + ('lyt_additional_1', 'layout_name_typevalue', 'lyt_additional_1'), + ('lyt_connec_1', 'layout_name_typevalue', 'lyt_connec_1'), + ('lyt_demand_1', 'layout_name_typevalue', 'lyt_demand_1'), + ('lyt_elem_dsc_shortpipe', 'layout_name_typevalue', 'lyt_elem_dsc_shortpipe'), + ('lyt_elem_dsc_valve', 'layout_name_typevalue', 'lyt_elem_dsc_valve'), + ('lyt_exec_1', 'layout_name_typevalue', 'lyt_exec_1'), + ('lyt_hydro_1', 'layout_name_typevalue', 'lyt_hydro_1'), + ('lyt_inlet_1', 'layout_name_typevalue', 'lyt_inlet_1'), + ('lyt_mincut_mng_1', 'layout_name_typevalue', 'lyt_mincut_mng_1'), + ('lyt_mincut_mng_2', 'layout_name_typevalue', 'lyt_mincut_mng_2'), + ('lyt_mincut_mng_3', 'layout_name_typevalue', 'lyt_mincut_mng_3'), + ('lyt_nvo_roughness_1', 'layout_name_typevalue', 'lyt_nvo_roughness_1'), + ('lyt_nvo_rules_1', 'layout_name_typevalue', 'lyt_nvo_rules_1'), + ('lyt_plan_1', 'layout_name_typevalue', 'lyt_plan_1'), + ('lyt_plan_details', 'layout_name_typevalue', 'lyt_plan_details'), + ('lyt_plan_fdates', 'layout_name_typevalue', 'lyt_plan_fdates'), + ('lyt_reservoir_1', 'layout_name_typevalue', 'lyt_reservoir_1'), + ('lyt_roughness_1', 'layout_name_typevalue', 'lyt_roughness_1'), + ('lyt_rules_1', 'layout_name_typevalue', 'lyt_rules_1'), + ('lyt_shortpipe_1', 'layout_name_typevalue', 'lyt_shortpipe_1'), + ('lyt_tank_1', 'layout_name_typevalue', 'lyt_tank_1'), + ('lyt_toolbar', 'layout_name_typevalue', 'lyt_toolbar'), + ('lyt_valve_1', 'layout_name_typevalue', 'lyt_valve_1'), + ('lyt_virtualpump_1', 'layout_name_typevalue', 'lyt_virtualpump_1'), + ('lyt_virtualvalve_1', 'layout_name_typevalue', 'lyt_virtualvalve_1'), + ('16', 'sys_table_context', '["INVENTORY", "NETWORK", "FRELEMENT"]'), + ('17', 'sys_table_context', '["INVENTORY", "NETWORK", "GULLY"]'), + ('18', 'sys_table_context', '["INVENTORY", "NETWORK", "LINK"]'), + ('19', 'sys_table_context', '["INVENTORY", "NETWORK", "NODE"]'), + ('20', 'sys_table_context', '["INVENTORY", "NETWORK", "POLYGON"]'), + ('21', 'sys_table_context', '["INVENTORY", "OTHER"]'), + ('22', 'sys_table_context', '["INVENTORY", "VALUE DOMAIN"]'), + ('23', 'sys_table_context', '["MASTERPLAN", "NETSCENARIO"]'), + ('27', 'sys_table_context', '["OM", "ANALYTICS", "INPUT"]'), + ('28', 'sys_table_context', '["OM", "ANALYTICS", "OUTPUT"]'), + ('29', 'sys_table_context', '["OM", "ANALYTICS"]'), + ('30', 'sys_table_context', '["OM", "FLOWTRACE"]'), + ('31', 'sys_table_context', '["OM", "MINCUT"]'), + ('32', 'sys_table_context', '["OM", "VISIT"]'), + ('tab_additional', 'tabname_typevalue', 'tab_additional'), + ('tab_connec', 'tabname_typevalue', 'tab_connec'), + ('tab_demand', 'tabname_typevalue', 'tab_demand'), + ('tab_inlet', 'tabname_typevalue', 'tab_inlet'), + ('tab_netscenario', 'tabname_typevalue', 'tab_netscenario'), + ('tab_pipe', 'tabname_typevalue', 'tab_pipe'), + ('tab_reservoir', 'tabname_typevalue', 'tab_reservoir'), + ('tab_roughness', 'tabname_typevalue', 'tab_roughness'), + ('tab_rules', 'tabname_typevalue', 'tab_rules'), + ('tab_shortpipe', 'tabname_typevalue', 'tab_shortpipe'), + ('tab_tank', 'tabname_typevalue', 'tab_tank'), + ('tab_valve', 'tabname_typevalue', 'tab_valve'), + ('tab_virtualpump', 'tabname_typevalue', 'tab_virtualpump'), + ('tab_virtualvalve', 'tabname_typevalue', 'tab_virtualvalve') +) AS v(source, formname, idval) +WHERE t.id = v.source AND t.typevalue = v.formname; \ No newline at end of file diff --git a/dbmodel/schemas/addon/utils/final_pass/i18n/en_US/dbconfig_visit_parameter.sql b/dbmodel/schemas/addon/utils/final_pass/i18n/en_US/dbconfig_visit_parameter.sql new file mode 100644 index 0000000000..96e342b374 --- /dev/null +++ b/dbmodel/schemas/addon/utils/final_pass/i18n/en_US/dbconfig_visit_parameter.sql @@ -0,0 +1,34 @@ +/* +This file is part of Giswater +The program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. +*/ + + +SET search_path = SCHEMA_NAME, public, pg_catalog; +UPDATE config_visit_parameter AS t SET descript = v.descript FROM ( + VALUES + ('clean_arc', 'Clean of arc'), + ('clean_connec', 'Clean of connec'), + ('clean_gully', 'Clean of gully'), + ('clean_link', 'Clean of link'), + ('defect_arc', 'Defects of arc'), + ('defect_connec', 'Defects of connec'), + ('defect_gully', 'Defects of gully'), + ('defect_link', 'Defects of link'), + ('sediments_arc', 'Sediments in arc'), + ('sediments_connec', 'Sediments in connec'), + ('sediments_gully', 'Sediments in gully'), + ('sediments_link', 'Sediments in link'), + ('smells_gully', 'Smells of gully'), + ('clean_node', 'Clean of node'), + ('defect_node', 'Defects of node'), + ('incident_comment', 'incident_comment'), + ('incident_type', 'incident type'), + ('insp_observ', 'Inspection observations'), + ('photo', 'Photography'), + ('sediments_node', 'Sediments in node'), + ('leak_arc', 'minor leak on arc'), + ('leak_connec', 'minor leak on connec'), + ('leak_link', 'minor leak on link') +) AS v(id, descript) +WHERE t.id = v.id; \ No newline at end of file diff --git a/dbmodel/schemas/addon/utils/final_pass/i18n/en_US/dbfprocess.sql b/dbmodel/schemas/addon/utils/final_pass/i18n/en_US/dbfprocess.sql new file mode 100644 index 0000000000..aa63a9d229 --- /dev/null +++ b/dbmodel/schemas/addon/utils/final_pass/i18n/en_US/dbfprocess.sql @@ -0,0 +1,537 @@ +/* +This file is part of Giswater +The program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. +*/ + + +SET search_path = SCHEMA_NAME, public, pg_catalog; +UPDATE sys_fprocess AS t SET except_msg = v.except_msg, info_msg = v.info_msg, fprocess_name = v.fprocess_name FROM ( + VALUES + (107, 'nodes orphans ready-to-export (epa_type & state_type). If they are actually orphan, you could change the epa_type to fix it''.', 'No nodes orphan found.', 'Node orphan (EPA)'), + (228, NULL, NULL, 'Go2epa check orphan nodes'), + (233, 'dry nodes/connecs with demand which have been set to cero on the go2epa process.', 'No connecs dry with associated demand found', 'Dry node/connec with associated demand (go2epa)'), + (292, NULL, NULL, 'EPANET pumps with more than two acs'), + (377, 'value of roughness out of range acording headloss formula used.', 'Roughness values have been checked against head-loss formula using the minimum and maximum EPANET user''s manual values. Any out-of-range values have been detected.', 'Arc with less length than minimum configured (go2epa)'), + (381, NULL, NULL, 'Check y0 on storage data'), + (382, 'storages with null values at least on mandatory columns to define volume parameters (a1,a2,a0 for FUNCTIONAL or curve_id for TABULAR).', 'Mandatory colums for volume values used on storage type have been checked without any values missed.', 'Check missed values for storage volume'), + (383, 'materials with null values on manning coefficient column used on a real arc where manning is needed.', 'Manning coefficient on cat_material is filled for those materials used on real arcs (not varcs).', 'Check missed values for cat_mat.arc n used on real arcs'), + (385, NULL, NULL, 'Import inp timeseries'), + (398, NULL, NULL, 'Copy EPA hydrology values)'), + (399, NULL, NULL, 'Copy EPA DWF values)'), + (401, NULL, NULL, 'Y0 higger than ymax on nodes)'), + (416, NULL, NULL, 'Gully without pjoint_id or pjoint_type'), + (418, 'links with wrong topology. Startpoint does not fit with connec.', 'All connec links has connec on startpoint', 'Links without gully on startpoint'), + (423, 'features with fluid_type does not exists on om_typevalue domain.', 'All features has fluid_type informed', 'Check fluid_type values exists on om_typevalue domain fluid_type values'), + (427, NULL, NULL, 'Check flowrelgulator length fits on target arc'), + (455, NULL, NULL, 'Check arc_id null for gully'), + (456, NULL, NULL, 'Check gullies with null values on (custom)top_elev'), + (457, NULL, NULL, 'Check gullies with null values on (custom)width'), + (458, NULL, NULL, 'Check gullies with null values on (custom)length'), + (461, 'nodes with redundancy on ymax, top_elev & elev values.', 'There are no nodes with redundancy on ymax, top_elev & elev values.', 'Check redundant values on y-top_elev-elev'), + (469, NULL, NULL, 'Import scada_x_data values'), + (477, NULL, NULL, 'Control of sections inconsistencies between consecutive conduits'), + (481, NULL, NULL, 'Drainzone Sectorization'), + (484, NULL, NULL, 'Set junctions as outlet'), + (495, NULL, NULL, 'Set optimum outlet'), + (522, 'outfalls with more than 1 arc.', 'All outfalls have a valid number of connected arcs.', 'Check outfalls with more than 1 arc'), + (523, NULL, NULL, 'Create hydrology scenario with empty values'), + (524, NULL, NULL, 'Create dwf scenario with empty values'), + (525, NULL, NULL, 'Duplicate hydrology scenario'), + (526, NULL, NULL, 'Duplicate dwf scenario'), + (527, NULL, NULL, 'Import dwf values'), + (528, 'non-existing outlet_id related to subcatchment.', 'All subcatchments have an existing outlet_id', 'Check outlet_id existance in inp_subcatchment and inp_junction'), + (529, 'values missing on some data of Inp Weir (weir_type, cd, geom1, geom2, offsetval).', 'No missing data on Inp Weir.', 'Check missing data in Inp Weir'), + (530, 'values missing on some data of Inp Orifice (ori_type, geom1, offsetval).', 'No missing data on Inp Orifice.', 'Check missing data in Inp Orifice'), + (531, NULL, NULL, 'fprocess to calculate the performance of ud networks'), + (560, 'features with function_type does not exists on man_type_function table.', 'All features has function_type informed on man_type_function table.', NULL), + (570, 'connecs/gullies with more than 1 link on service.', 'No connecs with more than 1 link on service.', NULL), + (574, 'visits not related to any feature and without geometry.', 'All visits are related to the features or have geometry.', NULL), + (600, 'virtualpumps with null values on pump_type column. virtualpump''''s with null values on pump_type column.', 'Virtualpumps checked. No mandatory values for pump_type missed. Virtualpumps checked. No mandatory values for pump_type missed.', 'Null values on virtualpumps type'), + (601, 'virtualpumps with null values at least on mandatory column curve_id. virtualpumps with null values at least on mandatory column curve_id.', 'Virtualpumps checked. No mandatory values for curve_id missed. Virtualpumps checked. No mandatory values for curve_id missed.', 'Null values on virtualpump curve_id '), + (637, NULL, NULL, 'Fluid type calculation '), + (638, 'nodes with flowregulators with different lengths and same to_arc.', 'All flow regulator elements with the same node_id and to_arc have the same length', 'Check that all flow regulator elements have the same length'), + (640, NULL, NULL, 'Dynamic omunit analysis'), + (642, NULL, NULL, 'Treatment type calculation '), + (644, 'gully which id is not an integer. Please, check your data before continue.', 'All gullies features with id integer.', 'Gully which id is not an integer'), + (-1, NULL, NULL, 'There is'), + (-2, NULL, NULL, 'There are'), + (101, NULL, NULL, 'Qgis project check'), + (102, NULL, NULL, 'Schema data consistency'), + (103, 'arcs with state=1 and without node_1 or node_2.', 'No arc''''s with state=1 and without node_1 or node_2 nodes found.', 'Arc without start-end nodes'), + (104, NULL, NULL, 'Arc with same start-end nodes'), + (105, NULL, NULL, 'Connec duplicated'), + (106, 'nodes duplicated with state 1.', 'There are no nodes duplicated with state 1', 'Node duplicated'), + (108, NULL, NULL, 'Node topological consistency'), + (109, NULL, NULL, 'Arc intersection'), + (110, NULL, NULL, 'Arc inverted'), + (111, 'junctions with exits upper intro.', 'Any junction have been detected with exits upper intro.', 'Node exit upper intro'), + (112, NULL, NULL, 'Node flow regulator'), + (113, 'junctions type sink which means that junction only have entry arcs without any exit arc (FORCE_MAIN is not valid).', 'Any junction have been swiched on the fly to OUTFALL.', 'Node sink'), + (114, NULL, NULL, 'EPA check data'), + (115, NULL, NULL, 'PLAN check data'), + (116, NULL, NULL, 'EDIT check data'), + (117, NULL, NULL, 'Log updated or deleted features'), + (118, NULL, NULL, 'Repair arcs'), + (119, NULL, NULL, 'Check user value defaults'), + (120, NULL, NULL, 'UI export-import'), + (121, NULL, NULL, 'Check plan multi-sector node'), + (122, NULL, NULL, 'Check v_edit_node duplicated nodes'), + (123, NULL, NULL, 'Check v_edit_node orphan nodes'), + (124, NULL, NULL, 'Nodarcs generation'), + (125, NULL, NULL, 'OM check data'), + (126, NULL, NULL, 'SYS check data'), + (127, NULL, NULL, 'Auxiliar cad points'), + (128, NULL, NULL, 'Massive downgrade features'), + (129, NULL, NULL, 'Mincutzones identification'), + (130, NULL, NULL, 'Inlet Sectorization'), + (131, NULL, NULL, 'Mincut conflict scenario result'), + (132, NULL, NULL, 'Node proximity analysis'), + (133, NULL, NULL, 'Update project data schema'), + (134, NULL, NULL, 'Dynamic minimun sector analysis'), + (135, NULL, NULL, 'Recursive go2epa process'), + (136, NULL, NULL, 'admin check, fk and unique constraints'), + (137, NULL, NULL, 'admin not null contraints'), + (138, NULL, NULL, 'Check inconsistency on editable data'), + (139, 'arcs disconnected from any inlet which have been removed on the go2epa process. The reason may be: state_type, epa_type, sector_id, init age material of cat_roughness, or expl_id or some node not connected.', 'No arcs disconnected from any inlet found', 'Arc disconnected from any inlet (go2epa)'), + (140, NULL, NULL, 'Epa import rpt results'), + (141, NULL, NULL, 'Epa import inp files'), + (142, 'registers on node''s catalog acting as [SHORTPIPE or VALVE] with dint not defined.''.', 'Dint for node''''s catalog checked. No values missed for SHORTPIPES OR VALVES', 'Check dint value for cat_node acting as [SHORTPIPE or VALVE or PUMP]'), + (143, NULL, NULL, 'Replace feature'), + (144, NULL, NULL, 'District Quality Areas'), + (145, NULL, NULL, 'District Metering Areas'), + (146, NULL, NULL, 'Pressure Zonification'), + (147, NULL, NULL, 'Static pressure value'), + (148, NULL, NULL, 'Pipe leak probability'), + (149, NULL, NULL, 'EPA calibration'), + (150, NULL, NULL, 'EPA vnodes trim arcs'), + (151, NULL, NULL, 'Set feature relations'), + (152, NULL, NULL, 'Delete feature'), + (153, 'inlets with null values at least on mandatory columns for inlets (initlevel, minlevel, maxlevel, diameter, minvol).Take a look on temporal table to details.', 'Inlets checked. No mandatory values missed.', 'Inlet with null mandatory values'), + (155, NULL, NULL, 'Nodes single capacity'), + (156, NULL, NULL, 'Nodes double capacity'), + (157, NULL, NULL, 'Nodes single capacity but not double'), + (158, NULL, NULL, 'Nodes coupled capacity'), + (159, NULL, NULL, 'EPA check vnodes over nod2arc'), + (160, NULL, NULL, 'EPA connecs with no hydrometer'), + (161, NULL, NULL, 'Check if pattern method is compatible with networkmode'), + (162, NULL, NULL, 'Ckeck if pattern for connec is the same for all connecs related to the same vnode'), + (163, NULL, NULL, 'Get layers name into TOC'), + (164, 'nodes without top_elev. Take a look on temporal table for details.', 'No nodes with null values on field top_elev have been found.', 'Node without elevation'), + (165, 'nodes with top_elev=0.', 'No nodes with ''''0'''' on field top_elev have been found.', 'Node with elevation=0'), + (166, 'node2arcs with more than two arcs. It''''s impossible to continue''.', 'No results found looking for node2arcs with more than two arcs.', 'Node2arc with more than two arcs'), + (167, 'mandatory node2arcs with less than two arcs.''.', 'No results found for mandatory node2arcs with less than two arcs.', 'Node2arc with less than two arcs'), + (168, NULL, NULL, 'Update elevation from DEM'), + (169, 'CV pipes. Be carefull with the sense of pipe and check that node_1 and node_2 are on the right direction to prevent reverse flow.', 'No results found for CV pipes', 'Pipe with status CV'), + (170, 'valves with wrong to_arc value according to the current closest arcs.', 'Valve to_arc wrong values checked. No inconsistencies have been detected according to the current closest arcs.', 'Valve with wrong to_arc'), + (171, 'pumps with wrong to_arc value according to the current closest arcs.', 'Pump to_arc wrong values checked. No inconsistencies have been detected according with the current closest arcs.', 'Pump with wrong to_arc'), + (172, 'pumps with curve defined by 3 points found. Check if this 3-points has thresholds defined (133%) acording SWMM user''s manual.', 'No curves with 3-points found', 'Check pumps with 3-point curves'), + (173, NULL, NULL, 'go2crm connec dma values'), + (174, NULL, NULL, 'crm2pg connec_x_data flow values'), + (175, 'topologic features (arc, node) with state_type with NULL values. Please, check your data before continue.', 'No topologic features (arc, node) with state_type NULL values found.', 'Null values on state_type column'), + (176, 'valves (state=1) with broken or closed with NULL values.', 'There are not operative valves with null values on closed/broken fields.', 'Valve with null values closed/broken'), + (177, 'rows with exploitation bad configured on the config_graph_mincut table. Please check your data before continue.', 'It seems config_graph_mincut table is well configured. At least, table is filled with nodes from all exploitations. All tanks are defined in config_graph_mincut.', 'inlet_x_exploitation with null/wrong values'), + (178, NULL, NULL, 'node_type filled with gradelimiter values'), + (180, 'nodes with ''DMA'' on cat_feature_node.graph_delimiter array not configured on the dma table.', 'All nodes with cat_feature_node.graph_delimiter=''DMA'' are defined as nodeParent on dma.graphconfig', 'dma-nodeparent acording with graph_delimiter'), + (181, 'nodes with ''DQA'' on cat_feature_node.graph_delimiter array not configured on the dqa table. nodes with ''DQA'' on cat_feature_node.graph_delimiter array configured for unactive mapzone.', 'All nodes with cat_feature_node.graph_delimiter=''DMA'' are defined as nodeParent on dma.graphconfig', 'dqa-nodeparent acording with graph_delimiter'), + (182, 'nodes with ''PRESSZONE'' on cat_feature_node.graph_delimiter array not configured on the presszone table. ''PRESSZONE'' on cat_feature_node.graph_delimiter array configured for unactive mapzone.', 'All nodes with cat_feature_node.graph_delimiter=''PRESSZONE'' are defined as nodeParent on presszone.graphconfig', 'presszone-nodeparent acording with graph_delimiter'), + (183, NULL, NULL, 'sector-toarc acording with topology'), + (184, NULL, NULL, 'dma-toarc acording with topology'), + (185, NULL, NULL, 'dqa-toarc acording with topology'), + (186, NULL, NULL, 'presszone-toarc acording with topology'), + (187, 'nodes with state > 0 and state_type.is_operative on FALSE. Please, check your data before continue.', 'No nodes with state > 0 AND state_type.is_operative on FALSE found.', 'Nodes with state_type is_operative false'), + (188, 'arcs with state > 0 and state_type.is_operative on FALSE. Please, check your data before continue.', 'No arcs with state > 0 AND state_type.is_operative on FALSE found.', 'Arcs with state_type is_operative false'), + (190, NULL, NULL, 'Arcs with dma=0'), + (191, NULL, NULL, 'Nodes with dma=0'), + (192, NULL, NULL, 'Connecs with dma=0'), + (193, NULL, NULL, 'Flowtrace disconnected arcs'), + (194, NULL, NULL, 'Flowtrace connected arcs'), + (195, NULL, NULL, 'Admin check data'), + (196, 'arcs with state=1 using extremals nodes with state = 0. Please, check your data before continue.', 'No arcs with state=1 using nodes with state=0 found.', 'Arcs with state=1 using nodes on state=0'), + (197, 'arcs with state=1 using extremals nodes with state = 2. Please, check your data before continue.', 'No arcs with state=1 using nodes with state=0 found.', 'Arcs with state=1 using nodes on state=2'), + (198, 'tanks with null values at least on mandatory columns for tank (initlevel, minlevel, maxlevel, diameter, minvol).Take a look on temporal table to details.', 'Tanks checked. No mandatory values missed.', 'Tanks with null mandatory values'), + (199, NULL, NULL, 'Mincut process'), + (200, NULL, NULL, 'Set to_arc values for graph delimiters'), + (201, 'connecs customer code duplicated. Please, check your data before continue.', 'No connecs with customer code duplicated.', 'Connecs with duplicated customer_code'), + (203, NULL, NULL, 'Final nodes with arc_id'), + (204, 'connecs without links or connecs over arc without arc_id.', 'All connecs have links or are over arc with arc_id.', 'Connec without link'), + (205, 'chained connecs or gullies with different arc_id. chained connecs with different arc_id.', 'All chained connecs and gullies have the same arc_id All chained connecs have the same arc_id', 'Connec or gully chain with different arc_id '), + (207, NULL, NULL, 'Role upsertuser'), + (208, 'nodes with ischange on 1 (true) without any variation of arcs in terms of diameter, pn or material. Please, check your data before continue.', 'No nodes ''ischange'' without real change have been found.', 'Nodes ischange without change of dn/pn/material'), + (209, 'nodes where arc catalog changes without nodecat with ischange on 0 or 2 (false or maybe). Please, check your data before continue.', 'No nodes without ''ischange'' where arc changes have been found', 'Change of dn/pn/material without node ischange'), + (210, 'connecs with customer code null. Please, check your data before continue.', 'No connecs with null customer code.', 'Connecs with customer code null'), + (211, NULL, NULL, 'Graphanalytics check data'), + (212, NULL, NULL, 'Arc divide'), + (213, NULL, NULL, 'Node interpolate'), + (214, NULL, NULL, 'Arc fusion'), + (215, NULL, NULL, 'Test functions'), + (216, NULL, NULL, 'Mincut results'), + (217, NULL, NULL, 'Connect to network'), + (218, NULL, NULL, 'Define addfields'), + (219, NULL, NULL, 'Define visit class'), + (220, NULL, NULL, 'Flow trace'), + (221, NULL, NULL, 'Flow exit'), + (222, NULL, NULL, 'Profile analysis'), + (223, 'arcs with drawing direction different than definition of node_1, node_2.', 'No arcs with drawing direction different than definition of node_1, node_2', 'Check arc drawing direction'), + (224, NULL, NULL, 'Go2epa-temporal nodarcs'), + (225, NULL, NULL, 'role epa check network data'), + (226, NULL, NULL, 'Go2epa check demands data'), + (227, NULL, NULL, 'Go2epa check'), + (229, 'pipes with length less than node proximity distance configured.', 'Standard minimun length checked. No values less than node proximity distance configured.', 'arcs less than 20 cm.'), + (230, 'pipes with length less than configured minimum length.', 'Critical minimun length checked. No values less than configured minimum length found.', 'arcs less than 5 cm.'), + (231, 'arcs disconnected from any outfall which have been removed on the go2epa process.', 'No arcs disconnected from any outfall found', 'Arc disconnected from any outfall (go2epa)'), + (232, 'dry arcs because closed elements (go2epa).', 'No arcs dry because closed elements found', 'Dry arc because closed elements (go2epa)'), + (234, NULL, NULL, 'Import db prices'), + (235, NULL, NULL, 'Import elements'), + (236, NULL, NULL, 'Import addfields'), + (237, NULL, NULL, 'Import dxf blocks'), + (238, NULL, NULL, 'Import om visit'), + (239, NULL, NULL, 'Import inp'), + (240, NULL, NULL, 'Import arc visits'), + (241, NULL, NULL, 'Import node visits'), + (242, NULL, NULL, 'Import connec visits'), + (243, NULL, NULL, 'Import gully visits'), + (244, NULL, NULL, 'Import timeseries'), + (245, NULL, NULL, 'Import visit file'), + (246, NULL, NULL, 'Export ui'), + (247, NULL, NULL, 'Import ui'), + (248, NULL, NULL, 'Daily update'), + (250, NULL, NULL, 'Slope consistency'), + (251, 'arcs with inverted slope false and slope negative values. Please, check your data before continue.', 'No arcs with inverted slope checked found.', 'Conduits with negative slope and inverted slope'), + (252, 'planified arcs without psector. planified nodes without psector. planified connecs without psector. planified gullys without psector. features with state=2 without psector assigned. Please, check your data before continue.', 'There are no features with state=2 without psector.', 'Features state=2 are involved in psector'), + (253, 'features with state without concordance with state_type. Please, check your data before continue features with state without concordance with state_type. Please, check your data before continue.', 'No features without concordance against state and state_type.', 'State not according with state_type'), + (254, 'features with code with NULL values. Please, check your data before continue with code with NULL values. Please, check your data before continue.', 'No features (arc, node, connec, element) with NULL values on code found.', 'Features with code null'), + (255, NULL, NULL, 'Orphan polygons'), + (256, NULL, NULL, 'Orphan rows on addfields values (DEPRECATED)'), + (257, 'connecs without or with incorrect arc_id. gullies without or with incorrect arc_id.', 'All connecs have correct arc_id. All gullies have correct arc_id.', 'Connec or gully without or with wrong arc_id'), + (258, NULL, NULL, 'Vnode inconsistency - link without vnode'), + (259, NULL, NULL, 'Vnode inconsistency - vnode without link'), + (260, 'links with state > 0 without feature_id.', 'All links state > 0 have feature_id.', 'Link without feature_id'), + (261, 'links with state > 0 without exit_id.', 'All links state > 0 have exit_id.', 'Link without exit_id'), + (262, 'features on service with value of end date.', 'No features on service have value of end date', 'Features state=1 and end date'), + (263, 'features with state 0 without value of end date.', 'No features with state 0 are missing the end date', 'Features state=0 without end date'), + (264, 'features with end date earlier than built date.', 'No features with end date earlier than built date', 'Features state=1 and end date before start date'), + (265, 'automatic links with longitude out-of-range found.', 'No automatic links with out-of-range Longitude found.', 'Automatic links with more than 100m'), + (266, 'features with duplicated ID value between arc, node, connec, gully features with duplicated ID values between arc, node, connec, gully.', 'All features have a diferent ID to be correctly identified', 'Duplicated ID between arc, node, connec, gully'), + (267, NULL, NULL, 'Cat_feature_node without graphdelimiter definition'), + (268, 'sectors on sector table with graphconfig not configured.', 'All sectors has graphconfig values not null.', 'Sectors without graphconfig'), + (269, 'dmas on dma table with graphconfig not configured.', 'All dma has graphconfig values not null.', 'DMA without graphconfig'), + (270, 'dqas on dqa table with graphconfig not configured.', 'All dqa has graphconfig values not null.', 'DQA without graphconfig'), + (271, 'presszones on presszone table with graphconfig not configured.', 'All presszones has graphconfig values not null.', 'Presszone without graphconfig'), + (272, 'missed features on inp tables. Please, check your data before continue.', 'No features missed on inp_tables found.', 'Missing data on inp tables'), + (273, 'valves with null values on valve_type column.', 'Valve valve_type checked. No mandatory values missed.', 'Null values on valve_type table'), + (274, 'valves with null values on mandatory column status.', 'Valve status checked. No mandatory values missed.', 'Null values on valve status'), + (275, 'PBV-PRV-PSV valves with null values on the mandatory column for Pressure valves.', 'PBC-PRV-PSV valves checked. No mandatory values missed.', 'Null values on valve pressure'), + (276, 'GPV valves with null values on mandatory column for General purpose valves.', 'GPV valves checked. No mandatory values missed.', 'Null values on GPV valve config'), + (277, 'TCV valves with null values on mandatory column for Losses Valves.', 'TCV valves checked. No mandatory values missed.', 'Null values on TCV valve config'), + (278, 'FCV valves with null values on mandatory column for Flow Control Valves.', 'FCV valves checked. No mandatory values missed.', 'Null values on FCV valve config'), + (279, 'pumps with null values on pump_type column. virtualpump''''s with null values on pump_type column.', 'Pumps checked. No mandatory values for pump_type missed.', 'Null values on pump type'), + (280, 'pumps with null values at least on mandatory column curve_id. virtualpumps with null values at least on mandatory column curve_id.', 'Pumps checked. No mandatory values for curve_id missed. Virtualpumps checked. No mandatory values for curve_id missed.', 'Null values on pump curve_id '), + (281, 'additional pumps with null values at least on mandatory column curve_id.', 'Additional pumps checked. No mandatory values for curve_id missed.', 'Null values on additional pump curve_id '), + (282, 'pipes with null values for roughness. Check roughness catalog columns (init_age,end_age,roughness) before continue.''.', 'Roughness catalog checked. No mandatory values missed.', 'Null values on roughness catalog '), + (283, 'registers on arc''s catalog with null values on dint column.', 'Dint for arc''''s catalog checked. No values missed.', 'Null values on arc catalog - dint'), + (284, 'arcs without values on sys_elev1 or sys_elev2.', 'No arcs with null values on field elevation (sys_elev1 or sys_elev2) have been found.', 'Arcs without elevation'), + (285, 'raingages with null values at least on mandatory columns for rain type (form_type, intvl, rgage_type).', 'Mandatory colums for raingage (form_type, intvl, rgage_type) have been checked without any values missed.', 'Null values on raingage'), + (286, 'raingages with null values on the mandatory column for ''TIMESERIES'' raingage type.', 'Mandatory colums for ''TIMESERIES'' raingage type have been checked without any values missed.', 'Null values on raingage timeseries'), + (287, 'raingages with null values at least on mandatory columns for ''FILE'' raingage type (fname, sta, units).', 'Mandatory colums (fname, sta, units) for ''FILE'' raingage type have been checked without any values missed.', 'Null values on raingage file'), + (288, NULL, NULL, 'Store psector values for specific user'), + (289, NULL, NULL, 'Store exploitation values for especific user'), + (290, 'nodes duplicated (go2epa).', 'No nodes duplicated found (goepa)', 'Duplicated nodes (go2epa)'), + (291, 'connecs with exploitation different than the exploitation of the related arc.', 'All connecs or gullys have the same exploitation as the related arc', 'Connec or gully with different expl_id than arc'), + (293, NULL, NULL, 'EPANET valves with more than two acs'), + (294, 'node features with epa_type not according with epa table. Check your data before continue.', 'Epa type for node features checked. No inconsistencies aganints epa table found.', 'Check for inp_node tables and epa_type consistency'), + (295, 'arcs features with epa_type not according with epa table. Check your data before continue.', 'Epa type for arcs features checked. No inconsistencies aganints epa table found.', 'Check for inp_arc tables and epa_type consistency'), + (296, NULL, NULL, 'Repair temp_link'), + (297, NULL, NULL, 'Features with EPA type UNDEFINED'), + (299, NULL, NULL, 'Delete orphan nodes'), + (301, NULL, NULL, 'Repair link'), + (302, 'system variables with out-of-standard values.', 'No system variables with values out-of-standars found.', 'Check values of system variables'), + (303, 'features without value on field "active" from cat_feature.', 'All features have value on field "active"', 'Check cat_feature field active'), + (304, 'features without value on field "code_autofill" from cat_feature.', 'All features have value on field "code_autofill"', 'Check cat_feature field code_autofill'), + (305, 'nodes without value on field "num_arcs" from cat_feature_node.', 'All nodes have value on field "num_arcs"', 'Check cat_feature_node field num_arcs'), + (306, 'nodes without value on field "isarcdivide" from cat_feature_node.', 'All nodes have value on field "isarcdivide"', 'Check cat_feature_node field isarcdivide'), + (307, 'nodes without value on field "graph_delimiter" from cat_feature_node.', 'All nodes have value on field "graph_delimiter"', 'Check cat_feature_node field graph_delimiter'), + (308, 'nodes without value on field "isexitupperintro" from cat_feature_node.', 'All nodes have value on field "isexitupperintro"', 'Check cat_feature_node field isexitupperintro'), + (309, 'nodes without value on field "choose_hemisphere" from cat_feature_node.', 'All nodes have value on field "choose_hemisphere"', 'Check cat_feature_node field choose_hemisphere'), + (310, 'nodes without value on field "isprofilesurface" from cat_feature_node. Features - '',v_feature_list::text,''.''.', 'All nodes have value on field "isprofilesurface"', 'Check cat_feature_node field isprofilesurface'), + (311, 'view wrongly defined man_table.', 'All views are well defined in man_table', 'Check child view man table definition'), + (312, 'active addfields that may not be present on its corresponding child view:.', 'All active addfields exist on its corresponing view.', 'Check child view addfields'), + (313, 'views defined in cat_feature table but is not created in a DB.', 'All child views are created and defined in cat_feature and', 'Find not existing child views'), + (314, 'active features which views names are not present in cat_feature table.', 'All active features have child view name in cat_feature table', 'Find active features without child views'), + (315, 'active features which views are not defined in config_info_layer_x_type.', 'All active features have child view defined in config_info_layer_x_type', 'Check definition on config_info_layer_x_type'), + (316, 'active features which views are not defined in config_form_fields.', 'All active features have child view defined in config_form_fields', 'Check definition on config_form_fields'), + (317, 'views defined in a DB but is not related to any feature in cat_feature.', 'All views in DB are related to features in cat_feature', 'Find ve_* views not defined in cat_feature'), + (318, 'features form fields in config_form_fields that don''''t have data type.', 'All feature form fields have defined data type.', 'Check config_form_fields field datatype'), + (319, 'features form fields in config_form_fields that don''''t have widget type.', 'All feature form fields have defined widget type.', 'Check config_form_fields field widgettype'), + (320, 'features form fields in config_form_fields that are combo or typeahead but don''''t have dv_querytext defined.', 'All feature form fields with widget type combo or typeahead have dv_querytext defined.', 'Check config_form_fields field dv_querytext'), + (321, 'addfields that are not defined in config_form_fields.', 'All addfields are defined in config_form_fields.', 'Check config_form_fields for addfields definition'), + (322, 'form names with duplicated layout order defined in config_form_fields: ''.', 'All fields defined in config_form_fields have unduplicated order.', 'Check config_form_fields layoutorder duplicated'), + (323, 'rows without values on cat_arc.active column.', 'There is/are no rows without values on cat_arc.active column.', 'Check cat_arc field active'), + (324, 'rows without values on cat_arc.cost column.', 'There is/are no rows without values on cat_arc.cost column.', 'Check cat_arc field cost'), + (325, 'rows without values on cat_arc.m2bottom_cost column.', 'There is/are no rows without values on cat_arc.m2bottom_cost column.', 'Check cat_arc field m2bottom_cost'), + (326, 'rows without values on cat_arc.m3protec_cost column.', 'There is/are no rows without values on cat_arc.m3protec_cost column.', 'Check cat_arc field m3protec_cost'), + (327, 'rows without values on cat_node.active column.', 'There is/are no rows without values on cat_node.active column.', 'Check cat_node field active'), + (328, 'rows without values on cat_node.cost column.', 'There is/are no rows rows without values on cat_node.cost column.', 'Check cat_node field cost'), + (329, 'rows without values on cat_node.cost_unit column.', 'There is/are no rows without values on cat_node.cost_unit column.', 'Check cat_node field cost_column'), + (330, 'rows without values on cat_node.estimated_depth column.', 'There is/are no rows without values on cat_node.estimated_depth column.', 'Check cat_node field estimated_depth'), + (331, 'rows without values on cat_node.estimated_y column.', 'There is/are no rows without values on cat_node.estimated_y column.', 'Check cat_node field estimated_y'), + (332, 'rows without values on cat_connec.active column.', 'There is/are no rows without values on cat_connec.active column column.', 'Check cat_connec field active'), + (336, 'rows without values on cat_pavement.thickness column.', 'There is/are no rows without values on cat_pavement.thickness column.', 'Check cat_pavement field thickness'), + (337, 'rows without values on cat_pavement.m2_cost column.', 'There is/are no rows without values on cat_pavement.m2_cost column.', 'Check cat_pavement field m2cost'), + (338, 'rows without values on cat_soil.y_param column.', 'There is/are no rows without values on cat_soil.y_param column.', 'Check cat_soil field y_param'), + (339, 'rows without values on cat_soil.b column.', 'There is/are no rows without values on cat_soil.b column.', 'Check cat_soil field b'), + (340, 'rows without values on cat_soil.m3exc_cost column.', 'There is/are no rows without values on cat_soil.m3exc_cost column.', 'Check cat_soil field m3exc_cost'), + (341, 'rows without values on cat_soil.m3fill_cost column.', 'There is/are no rows without values on cat_soil.m3fill_cost column.', 'Check cat_soil field m3fill_cost'), + (342, 'rows without values on cat_soil.m3excess_cost column.', 'There is/are no rows without values on cat_soil.m3excess_cost column.', 'Check cat_soil field m3excess_cost'), + (343, 'rows without values on cat_soil.m2trenchl_cost column.', 'There is/are no rows without values on cat_soil.m2trenchl_cost column.', 'Check cat_soil field m2trenchl_cost'), + (344, 'rows without values on cat_gully.active column.', 'There is/are no rows without values on cat_gully.active column.', 'Check cat_grate field active'), + (345, NULL, NULL, 'Check cat_grate field cost_ut'), + (346, 'rows more in arc than in table plan_arc_x_pavement.', 'The number of rows of the plan_arc_x_pavement table is same than the arc table.', 'Check plan_arc_x_pavement rows number'), + (347, 'rows without values on plan_arc_x_pavement.pavcat_id column.', 'There is/are no rows without values on rows without values on plan_arc_x_pavement.pavcat_id column.', 'Check plan_arc_x_pavement field pavcat_id'), + (348, NULL, NULL, 'Check final nodes of arc state=2 in psector'), + (349, NULL, NULL, 'Check compatibility of DB and plugin version'), + (350, NULL, NULL, 'Check host of QGIS layers'), + (351, NULL, NULL, 'Check DB name of QGIS layers'), + (352, NULL, NULL, 'Check schema name of QGIS layers'), + (353, NULL, NULL, 'Check user name of QGIS layers'), + (354, 'operative arcs without final nodes in some psector.', 'There are no arcs with state=1 with final nodes obsolete in psector.', 'Check arc state=2 with final nodes in psector'), + (355, 'planified arcs without final in some psector.', 'There are no arcs with state=2 with final nodes obsolete in psector.', 'Check arc state=2 with operative nodes in psector'), + (356, 'planned connecs without reference link planned connecs or gullys without reference link.', 'All planned connecs or gullys have a reference link', 'Planned connecs without reference link'), + (357, NULL, NULL, 'Arc reverse'), + (358, NULL, NULL, 'Reset user profile'), + (359, NULL, NULL, 'Set configuration of field to_arc'), + (360, NULL, NULL, 'Find features state=2 deleted with psector'), + (361, NULL, NULL, 'Auxiliar cad polygons'), + (362, NULL, NULL, 'Auxiliar cad lines'), + (363, NULL, NULL, 'Flow values'), + (364, NULL, NULL, 'Pressure values'), + (365, NULL, NULL, 'Clorinathor values'), + (366, NULL, NULL, 'Temperature values'), + (367, 'arcs that are configured as toArc for v_prefix_v_graphClass but is not operative on arc table.', 'All arcs defined as toArc on v_prefix_v_graphClass exists on DB.', 'Check if defined nodes and arcs exist in a database'), + (368, 'valves with missed values on mandatory column to_arc.', 'Valve to_arc missed values checked. No mandatory values missed.', 'Null values on to_arc valves'), + (369, NULL, NULL, 'Check subcatchment configuration'), + (370, NULL, NULL, 'Check features with sector_id=0'), + (371, 'rows with missed matcat_id on cat_arc table. Fix it before continue''.', 'No registers found without material on cat_arc table.', 'Check arc catalog with matcat_id null'), + (372, 'operative arcs with wrong topology.', 'All arcs has well-defined topology', 'Check operative arcs with wrong topology'), + (373, NULL, NULL, 'Check features with sector_id = 0, not involved in the simulation'), + (374, NULL, NULL, 'Check period configuration for dma'), + (375, 'arcs with less length than minimum configured (go2epa).', 'No arcs with less length than minimum configured found', 'Nodarc length control (go2epa)'), + (376, NULL, NULL, 'Graphanalytics LRS'), + (378, NULL, NULL, 'Check hydrometer configuration'), + (379, 'nodes with epa_type UNDEFINED acting as node_1 or node_2 of arcs. Please, check your data before continue.''.', 'No nodes with epa_type UNDEFINED acting as node_1 or node_2 of arcs found.', 'Check undefined nodes as topological nodes'), + (380, NULL, NULL, 'Admin manage recreating views'), + (384, NULL, NULL, 'Import inp curves'), + (386, NULL, NULL, 'Import inp patterns'), + (387, NULL, NULL, 'Find short arcs'), + (389, NULL, NULL, 'Nodes with duplicated values of top_elev, ymax and elev'), + (390, NULL, NULL, 'Arcs with duplicated values of y and elev'), + (391, 'arcs with length shorter than value set as node proximity. Please, check your data before continue.', 'No arcs shorter than value set as node proximity.', 'Arcs shorter than value set as node proximity'), + (393, NULL, NULL, 'Check gully duplicated'), + (394, NULL, NULL, 'Check topocontrol for link'), + (395, 'pumps with missed values on mandatory column to_arc.', 'Pump to_arc missed values checked. No mandatory values missed.', 'Check to_arc missed VALUES for pumps'), + (396, NULL, NULL, 'Check duplicity of features when more than one scenario is enabled'), + (397, NULL, NULL, 'Parent psector forced when child psector is enabled'), + (402, 'Controls with links (arc o nodarc) are not present on this result.', 'All Controls has correct link id (arc or nodarc) values.', 'Check controls for ARC'), + (403, NULL, NULL, 'Copy dscenarios values'), + (404, 'links over nodarc (go2epa).', 'No links over nodarc found', 'Link over nodarc (go2epa)'), + (405, NULL, NULL, 'Repair nodes duplicated'), + (406, 'Controls with nodes are not present on this result.', 'All Controls has correct node id values.', 'Check controls for NODE'), + (407, ' connecs/nodes found with outlayer values on elevation.', 'All connec/nodes with elevation values according system tresholds', 'Connec/node with outlayer value on elevation'), + (408, NULL, NULL, 'Import istram nodes'), + (409, NULL, NULL, 'Import istram arcs'), + (415, 'Connec without pjoint_id/pjoint_type.', NULL, 'Check pjoint_id/ pjoint_type on connec'), + (417, 'links related to connecs with wrong topology, startpoint does not fit connec.', 'All connec links has connec on startpoint', 'Links without connec on startpoint'), + (419, 'hydrometer related to more than one connec. HINT-419: Type ''''SELECT hydrometer_id, count(*) FROM v_rtc_hydrometer group by hydrometer_id having count(*)> 1''''''.', 'All hydrometeres are related to a unique connec', 'Duplicated hydrometer related to more than one connec'), + (420, NULL, NULL, 'Check nodarcs'), + (421, 'features with category_type does not exists on man_type_category table.', 'All features has category_type informed on man_type_category table', 'Check category_type values exists on man_ table'), + (422, 'features with function_type does not exists on man_type_function table.', 'All features has function_type informed on man_type_function table', 'Check function_type values exists on man_ table'), + (424, 'features with location_type does not exists on man_type_location table.', 'All features has location_type informed on man_type_location table', 'Check location_type values exists on man_ table'), + (426, NULL, NULL, 'Check planned feature with state=0 on psector tables'), + (428, 'exploitations without geometry. Capturing values from DEM is enabled, but it will fail on exploitation: '',string_agg(name,'', '').', 'Capturing values from DEM is enabled and will work correctly as all exploitations have geometry.', 'Check expl.geom is not null when raster DEM is enabled'), + (429, 'curves name with spaces. Please fix it!', 'All curves checked have names without spaces.', 'Check that EPA OBJECTS (curves and others) name do not contain spaces'), + (430, 'arcs without matcat_id informed.''.', 'All arcs have matcat_id filled.', 'Check matcat null for arcs'), + (431, 'arcs with less length than minimum configured (go2epa).', 'No arcs with less length than minimum configured found', 'Arc with less length than minimum configured (go2epa)'), + (432, 'Nodes ''''T candidate'''' with wrong topology.', 'All Nodes T has right topology.', 'Check node ''T candidate'' with wrong topology'), + (433, 'arc materials that are not defined in cat_mat_rougnhess table. Please, check your data before continue.''.', 'All arc materials are defined on cat_mat_rougnhess table.', 'Arc materials not defined in cat_mat_roughness table'), + (434, NULL, NULL, 'Backup and restore tables'), + (435, NULL, NULL, 'Store hydrometer user selector values'), + (436, NULL, NULL, 'Change node type'), + (437, NULL, NULL, 'Topocontrol for data migration'), + (438, NULL, NULL, 'Create dscenario with empty values'), + (439, NULL, NULL, 'Set integer id on import inp'), + (440, 'outlets defined on subcatchments view, that are not present on junction, outfall, storage, divider or subcatchment view.', 'All outlets set on subcatchments are correctly defined.', 'Check outlet_id assigned to subcatchments'), + (442, 'orphan nodes with isarcdivide=TRUE.', 'There are no orphan nodes with isarcdivide=TRUE', 'Node orphan with isarcdivide=TRUE (OM)'), + (443, 'orphan nodes with isarcdivide=FALSE.', 'There are no orphan nodes with isarcdivide=FALSE', 'Node orphan with isarcdivide=FALSE (OM)'), + (444, NULL, NULL, 'Import cat_feature_arc table'), + (445, NULL, NULL, 'Import cat_feature_node table'), + (446, NULL, NULL, 'Import cat_feature_connec table'), + (447, NULL, NULL, 'Import cat_feature_gully table'), + (448, NULL, NULL, 'Import cat_node table'), + (449, NULL, NULL, 'Import cat_connec table'), + (450, NULL, NULL, 'Import cat_arc table'), + (451, NULL, NULL, 'Import cat_grate table'), + (452, NULL, NULL, 'Planified arc without start-end nodes'), + (453, 'nodes duplicated with state 2.', 'There are no nodes duplicated with state 2', 'Node planified duplicated'), + (454, 'arcs without some node_1 or node_2 (go2epa).', 'No arcs without node_1 / node_2 found (goepa)', 'Arc without node_1/node_2 (go2epa)'), + (459, NULL, NULL, 'Duplicate dscenario'), + (465, 'rows on plan_price table. Revise the data and remove unnecessary rows.', 'The number of rows on plan price is acceptable.', 'Check number of rows in a plan_price table'), + (467, 'pumpss with more than two arcs .Take a look on temporal table to details.', 'EPA pumps checked. No pumps with more than two arcs detected.', 'Planified EPANET pumps with more than two acs'), + (468, NULL, NULL, 'Graph analysis for hydrants - hydrant proposal'), + (470, NULL, NULL, 'Import hydro_x_data values'), + (471, NULL, NULL, 'Import crm period values'), + (472, 'inconsistent configurations on cat_manager and config_user_x_expl for user: '''',string_agg(DISTINCT usern,'''', '''')),''||v_count||'' FROM ''||v_querytext||'';''".', 'Configuration of cat_manager and config_user_x_expl is consistent.', 'Check consistency between cat_manager and config_user_x_expl'), + (473, NULL, NULL, 'Check consistency between cat_manager and config_user_x_sector'), + (474, NULL, NULL, 'Get epa calibration file for pressures'), + (475, NULL, NULL, 'Get epa calibration file for volumes'), + (476, NULL, NULL, 'Get log for epa calibration volumes'), + (478, 'connecs with sector_id 0 or -1.', 'No connecs with 0 or -1 value on sector_id.', 'Check features without defined sector_id'), + (479, 'arcs with duplicated geometry.', 'No arcs with duplicated geometry.', 'Check duplicated arcs'), + (480, 'connecs with more than 1 link on service.', 'No connects with more than 1 link on service', 'Check connects with more than 1 link on service'), + (482, 'percent of arcs have value on custom_length.', 'No arcs have value on custom_length.', 'Check arcs with value of custom length'), + (485, NULL, NULL, 'Connect link to arc id with specific coordinates'), + (486, NULL, NULL, 'Get address values from closest street number'), + (487, NULL, NULL, 'Configuration of border nodes'), + (496, NULL, NULL, 'Massive node interpolation'), + (497, 'documents not related to any feature.', 'All documents are related to the features.', 'Check orphan documents'), + (498, 'visits not related to any feature and without geometry.', 'All visits are related to the features or have geometry.', 'Check orphan visits'), + (499, 'elements not related to any feature and without geometry.', 'All elements are related to the features or have geometry.', 'Check orphan elements'), + (512, NULL, NULL, 'Modify mapzone configuration'), + (516, NULL, NULL, 'Node rotation update'), + (518, NULL, NULL, 'Set end feature'), + (520, NULL, NULL, 'Psector merge'), + (521, NULL, NULL, 'Set repair psector'), + (532, NULL, NULL, 'Dynamic macrominsector analysis'), + (533, 'NON-mandatory node2arcs with less than two arcs. It will be transformed on the fly using only one arc''.', 'No results found for NON-mandatory node2arcs with less than two arcs.', 'Non-mandatory nodarc with less than two arcs'), + (534, 'nodes that are configured as nodeParent for v_prefix_v_graphClass but is not operative on node table.', 'All nodes defined as nodeParent on v_prefix_v_graphClass exists on DB.', 'Check if defined nodes (nodeParent) exist in a database'), + (541, 'gullys without links or gullies over arc without arc_id.', 'All gullies have links or are over arc with arc_id.', 'Gully without link'), + (542, 'which id is not an integer. Please, check your data before continue.', 'All features with id integer.', 'feature which id is not an integer'), + (543, 'chained connecs/gullys without links or gullies over arc without arc_id.', 'All chained connecs and gullies have the same arc_id.', 'Gully chain with different arc_id than the final connec/gully'), + (545, 'features with state without concordance with state_type. Please, check your data before continue features with state without concordance with state_type. Please, check your data before continue.', 'No features without concordance against state and state_type.', 'State not according with state_type'), + (547, 'features with fluid_type does not exists on om_typevalue domain.', 'All features has fluid_type informed on om_typevalue domain', 'Check fluid_type values exists on om_typevalue domain values'), + (548, 'elements not related to any feature and without geometry.', 'All elements are related to the features or have geometry.', 'Check orphan elements'), + (549, 'orphan nodes with isarcdivide=TRUE.', 'There are no orphan nodes with isarcdivide=TRUE', 'Node orphan with isarcdivide=TRUE (OM)'), + (550, 'features with function_type does not exists on man_type_function table.', 'All features has function_type informed on man_type_function table', 'Check function_type values exists on man_ table'), + (551, 'features on service with value of end date.', 'No features on service have value of end date', 'Features state=1 and end date'), + (552, 'gullies without or with incorrect arc_id.', 'All gullies have correct arc_id.', 'Gully without or with wrong arc_id'), + (553, 'features with code with NULL values. Please, check your data before continue with code with NULL values. Please, check your data before continue.', 'No features (arc, node, connec, element, gully) with NULL values on code found.', 'Features with code null'), + (554, 'features with state 0 without value of end date.', 'No features with state 0 are missing the end date', 'Features state=0 without end date'), + (555, 'connecs with more than 1 link on service.', 'No connects with more than 1 link on service', 'Check connecs with more than 1 link on service'), + (556, 'visits not related to any feature and without geometry.', 'All visits are related to the features or have geometry.', 'Check orphan visits'), + (557, 'features with built date before 1900.', 'No feature with builtdate before 1900.', 'Builddate before 1900'), + (558, 'features with location_type does not exists on man_type_location table.', 'All features has location_type informed on man_type_location table', 'Check location_type values exists on man_ table'), + (559, 'planned connecs without reference link planned connecs or gullys without reference link.', 'All planned connecs or gullys have a reference link', 'Planned connecs without reference link'), + (561, 'features with duplicated ID value between arc, node, connec, gully features with duplicated ID values between arc, node, connec, gully.', 'All features have a diferent ID to be correctly identified', 'Duplicated ID between arc, node, connec, gully'), + (562, 'planified arcs without psector. planified nodes without psector. planified connecs without psector. planified gullys without psector. features with state=2 without psector assigned. Please, check your data before continue.', 'There are no features with state=2 without psector.', 'Features state=2 are involved in psector'), + (563, 'connecs with exploitation different than the exploitation of the related arc.', 'All connecs or gullys have the same exploitation as the related arc', 'Connec or gully with different expl_id than arc'), + (564, 'documents not related to any feature.', 'All documents are related to the features.', 'Check orphan documents'), + (565, 'orphan nodes with isarcdivide=FALSE.', 'There are no orphan nodes with isarcdivide=FALSE', 'Node orphan with isarcdivide=FALSE (OM)'), + (566, 'features with end date earlier than built date.', 'No features with end date earlier than built date', 'Features state=1 and end date before start date'), + (567, 'connecs with sector_id 0 or -1.', 'No connecs with 0 or -1 value on sector_id.', 'Check features without defined sector_id'), + (568, 'features with category_type does not exists on man_type_category table.', 'All features has category_type informed on man_type_category table', 'Check category_type values exists on man_ table'), + (569, 'arcs without matcat_id informed.', 'All arcs have matcat_id filled.', 'Check matcat null for arcs'), + (571, 'pipes with length less than node proximity distance configured.', 'Standard minimun length checked. No values less than node proximity distance configured.', 'Arcs less than 20 cm.'), + (572, 'conduits with length less than configured minimum length.', 'Critical minimun length checked. No values less than configured minimum length found.', 'arcs less than 5 cm.'), + (573, 'storages with null values at least on mandatory columns for initial status (y0).', 'No y0 column without values for storages.', 'y0 on storage data'), + (576, 'orifice flow regulator which has length that do not respect the minimum length for target arc.', 'All orifice flow regulators have length which fits target arc.', 'Check flow regulator length fits on destination arc (orifice)'), + (577, 'weir flow regulator length do not respect the minimum length for target arc.', 'All weir flow regulators have length which fits target arc.', 'Check flow regulator length fits on destination arc (weir)'), + (578, 'outlet flow regulator length do not respect the minimum length for target arc.', 'All outlet flow regulators have length which fits target arc.', 'Check flow regulator length fits on destination arc (outlet)'), + (579, 'pump flow regulator length do not respect the minimum length for target arc.', 'All pump flow regulators have length which fits target arc.', 'Check flow regulator length fits on destination arc (pump)'), + (580, 'columns on relative timeserires related to this exploitation with errors.', 'All relative timeseries related ot this exploitation are correctly defined.', 'Check valid relative timeseries'), + (581, 'ows on arc catalog without values on shape column.', 'No rows on arc catalog without values on shape column.', 'Check shape with null values on arc catalog'), + (582, 'rows on arc catalog without values on shape column.', 'No rows on arc catalog without values on geom1 column.', 'Check geom1 with null values on arc catalog'), + (583, 'missed features on inp tables. Please, check your data before continue.', 'No features missed on inp_tables found.', 'Missing data on inp tables'), + (584, 'EPA nodes without sys_elevation values.', 'No nodes with null values on field elevation have been found.', 'Nodes without elevation'), + (585, 'pollutants have name with spaces. Please fix it!', 'All pollutants checked have names without spaces.', 'Check that EPA OBJECTS (pollutants) do not contain spaces'), + (586, 'snowpacks have name with spaces. Please fix it!', 'All snowpacks checked have names without spaces.', 'Check that EPA OBJECTS (snowpacks) do not contain spaces'), + (587, 'lids have name with spaces. Please fix it!', 'All lids checked have names without spaces.', 'Check that EPA OBJECTS (lids) do not contain spaces'), + (591, 'connecs features with epa_type not according with epa table. Check your data before continue.', 'Epa type for arc features checked. No inconsistencies aganints epa table found.Epa type for connec features checked. No inconsistencies aganints epa table found.', 'Check for inp_connec tables and epa_type consistency'), + (592, 'hydrometers in crm schema without code.', 'All hydrometers on crm schema have code', 'Control null values on crm.hydrometer.code'), + (593, 'rows without values on cat_arc.estimated_depth column.', 'There is/are no rows without values on cat_arc.estimated_depth column.', 'Check estimated depth'), + (594, 'virtualvalves with null values on valve_type column.', 'Virtualvalve valve_type checked. No mandatory values missed.', 'Null values on valve_type of virtualvalve'), + (595, 'virtualvalves with null values on mandatory column status.', 'Virtualvalve status checked. No mandatory values missed.', 'Null values on valve status of virtualvalves'), + (596, 'PBV-PRV-PSV virtualvalves with null values on the mandatory column for Pressure valves.', 'PBC-PRV-PSV virtualvalves checked. No mandatory values missed.', 'Null values on virtualvalve pressure'), + (597, 'GPV virtualvalves with null values on mandatory column for General purpose valves.', 'GPV virtualvalves checked. No mandatory values missed.', 'Null values on GPV virtualvalve config'), + (598, 'TCV virtualvalves with null values on mandatory column for Losses Valves.', 'TCV virtualvalves checked. No mandatory values missed.', 'Null values on TCV virtualvalve config'), + (599, 'FCV virtualvalves with null values on mandatory column for Flow Control Valves.', 'FCV virtualvalves checked. No mandatory values missed.', 'Null values on FCV virtualvalve config'), + (602, 'arcs features with epa_type not according with epa table. Check your data before continue.', 'Epa type for arcs features checked. No inconsistencies aganints epa table found.Epa type for connec features checked. No inconsistencies aganints epa table found.', 'Check for inp_arc tables and epa_type consistency'), + (603, 'patterns name with spaces. Please fix it!', 'All patterns checked have names without spaces.', 'Check that EPA OBJECTS (patterns) name do not contain spaces'), + (604, NULL, NULL, 'Check DB data'), + (605, 'nodes/connecs found with outlayers values for depth.', 'All nodes/connecs has depth values according system tresholds', 'Check EPA outlayer depth'), + (606, NULL, NULL, 'Check controls for NODE'), + (607, NULL, NULL, 'Check rules for NODE'), + (608, NULL, NULL, 'Check rules for JUNCTION'), + (609, NULL, NULL, 'Check rules for RESERVOIR'), + (610, NULL, NULL, 'Check rules for TANK'), + (611, NULL, NULL, 'Check rules for LINK'), + (612, NULL, NULL, 'Check rules for PIPE'), + (613, NULL, NULL, 'Check rules for VALVE'), + (614, NULL, NULL, 'Check rules for PUMP'), + (615, NULL, NULL, 'Tank present in more than one enabled scenario'), + (616, NULL, NULL, 'Reservoir present in more than one enabled scenario'), + (617, NULL, NULL, 'Junction present in more than one enabled scenario'), + (618, NULL, NULL, 'Pipe present in more than one enabled scenario'), + (619, NULL, NULL, 'Pump present in more than one enabled scenario'), + (620, NULL, NULL, 'Pump additional present in more than one enabled scenario'), + (621, NULL, NULL, 'Valve present in more than one enabled scenario'), + (622, NULL, NULL, 'Virtualvalve present in more than one enabled scenario'), + (623, NULL, NULL, 'Virtualpump present in more than one enabled scenario'), + (624, NULL, NULL, 'Inlet present in more than one enabled scenario'), + (625, NULL, NULL, 'Connec present in more than one enabled scenario'), + (626, NULL, NULL, 'Outfall present in more than one enabled scenario'), + (627, NULL, NULL, 'Outlet present in more than one enabled scenario'), + (628, NULL, NULL, 'Storage present in more than one enabled scenario'), + (629, NULL, NULL, 'Rainage present in more than one enabled scenario'), + (630, NULL, NULL, 'Conduit present in more than one enabled scenario'), + (631, NULL, NULL, 'Pump additional present in more than one enabled scenario'), + (632, NULL, NULL, 'Orifice present in more than one enabled scenario'), + (633, NULL, NULL, 'Pump present in more than one enabled scenario'), + (634, NULL, NULL, 'Weir present in more than one enabled scenario'), + (635, NULL, NULL, 'Junction present in more than one enabled scenario'), + (636, 'nodes with ''DMA'' is on cat_feature_node.graph_delimiter array configured for unactive mapzone.', 'All nodes with cat_feature_node.graph_delimiter=''DMA'' are defined as nodeParent on dma.graphconfig', 'dma-nodeparent acording with graph_delimiter (unactive dma)'), + (107, 'nodes orphan with is_arcdivide in true.', 'No nodes orphan found', 'Node orphan'), + (202, 'which id is not an integer. Please, check your data before continue.', 'All features with id integer.', 'Feature which id is not an integer'), + (228, 'nodes orphan ready-to-export .', 'No nodes orphan found', 'Node orphan (EPA)'), + (233, 'dry nodes/connecs with demand which have been set to zero on the go2epa process.', 'No connecs dry with associated demand found', 'Dry node/connec with associated demand (go2epa)'), + (249, NULL, NULL, 'Config mapzones'), + (292, NULL, NULL, 'Non-mandatory nodarc with less than two arcs'), + (377, 'values of roughness out of range acording headloss formula used.', 'Roughness values have been checked against head-loss formula using the minimum and maximum EPANET user''s manual values. Any out-of-range values have been detected.', 'Arc with less length than minimum configured (go2epa)'), + (381, NULL, NULL, 'Arc duplicated'), + (400, 'Connec catalog without dint defined.', 'All connec catalog registers has dint defined', 'Check dint on connec catalog'), + (410, NULL, NULL, 'Create dscenario from ToC'), + (411, 'mandatory nodarcs (VALVE & PUMP) over other EPA nodes.'' .', ' All mandatory nodarc (PUMP & VALVE) are not on the same position than other EPA nodes.', 'Mandatory nodarc over other EPA node'), + (412, 'shortpipe nodarcs over other EPA nodes.''.', 'All shortpipe nodarcs are not on the same position than other EPA nodes.', 'Shortpipe nodarc over other EPA node'), + (413, 'EPA connecs over EPA nodes.', 'No EPA connecs over EPA node have been detected.', 'EPA connec over EPA node (goe2pa)'), + (414, 'Connec catalog without material defined.', 'All connec catalog registers has material defined', 'Check material on connec catalog'), + (423, 'features with fluid_type does not exists on man_type_fluid table.', 'All features has fluid_type informed on man_type_fluid table', 'Check fluid_type values exists on man_ table'), + (425, 'minlength value is bad configured (more than node proximity or less than 0.01).', 'Minlength value ('',v_minlength,'') is well configured.''', 'Check minlength less than 0.01 or more than node proximity'), + (441, NULL, NULL, 'Water balance calculation'), + (460, 'presszones with id that is not a numeric value.', 'All presszone_ids are numeric values.', 'Check zones without numeric id'), + (462, NULL, NULL, 'Planified EPANET pumps with more than two acs'), + (463, NULL, NULL, 'Graph analysis for hydrants'), + (464, NULL, NULL, 'Graph analysis for hydrants - marking crossroads'), + (469, NULL, NULL, 'Import scada values'), + (488, 'connecs related to arcs with diameter bigger than defined value.', 'No connecs related to arcs with diameter bigger than defined value', 'Check connecs related to arcs with diameter bigger than defined value'), + (490, NULL, NULL, 'Show current mincuts'), + (491, NULL, NULL, 'Check demands export input file'), + (492, NULL, NULL, 'Check demands import results'), + (493, NULL, NULL, 'Check valve status export input file'), + (494, NULL, NULL, 'Check valve status demands import results'), + (500, NULL, NULL, 'Import valve status'), + (501, NULL, NULL, 'Import dscenario demands'), + (502, NULL, NULL, 'Set dscenario demand using netscenario'), + (504, NULL, NULL, 'Import flowmeter daily values'), + (506, NULL, NULL, 'Import flowmeter agg values'), + (508, NULL, NULL, 'Create new Netscenario'), + (510, NULL, NULL, 'Duplicate Netscenario'), + (514, NULL, NULL, 'Import valve closed into netscenario'), + (523, NULL, NULL, 'fprocess to set cost for removed material on psectors'), + (524, NULL, NULL, 'Check roughness value does not have overlapping time periods'), + (536, 'PBV-PRV-PSV valves with null values on the mandatory column for Pressure valves.', 'PBC-PRV-PSV virtualvalves checked. No mandatory values missed.', NULL), + (538, 'GPV valves with null values on mandatory column for General purpose valves.', 'GPV virtualvalves checked. No mandatory values missed.', NULL), + (540, 'TCV valves with null values on mandatory column for Losses Valves.', 'TCV valves checked. No mandatory values missed.', NULL), + (544, 'pumps with null values on pump_type column. virtualpump''''s with null values on pump_type column.', 'Virtualpumps checked. No mandatory values for pump_type missed.', NULL), + (546, 'pumps with null values at least on mandatory column curve_id. virtualpumps with null values at least on mandatory column curve_id.', 'Virtualpumps checked. No mandatory values for curve_id missed.', NULL), + (600, 'virtualpumps with null values on pump_type column.', 'Virtualpumps checked. No mandatory values for pump_type missed. Virtualpumps checked. No mandatory values for pump_type missed.', 'Null values on virtualpumps type'), + (601, 'virtualpumps with null values at least on mandatory column curve_id.', 'Virtualpumps checked. No mandatory values for curve_id missed. Virtualpumps checked. No mandatory values for curve_id missed.', 'Null values on virtualpump curve_id '), + (638, 'arc which id is not an integer. Please, check your data before continue.', 'All arcs features with id integer.', 'Arc which id is not an integer') +) AS v(fid, except_msg, info_msg, fprocess_name) +WHERE t.fid = v.fid; \ No newline at end of file diff --git a/dbmodel/schemas/addon/utils/final_pass/i18n/en_US/dbfunction.sql b/dbmodel/schemas/addon/utils/final_pass/i18n/en_US/dbfunction.sql new file mode 100644 index 0000000000..09d5dd20fa --- /dev/null +++ b/dbmodel/schemas/addon/utils/final_pass/i18n/en_US/dbfunction.sql @@ -0,0 +1,431 @@ +/* +This file is part of Giswater +The program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. +*/ + + +SET search_path = SCHEMA_NAME, public, pg_catalog; +UPDATE sys_function AS t SET descript = v.descript FROM ( + VALUES + (1348, 'Trigger that allows to update the node rotation'), + (2202, 'Check topology assistant. Identifies intersections against on the arc table'), + (2204, 'Check topology assistant. Identifies arcs that have the slope in a oposite sense that the direction'), + (2206, 'Check topology assistant. Identifies nodes that all the exit arcs are upper that all the entry arcs. '), + (2208, 'Check topology assistant. Identifies nodes with more than one exit arc'), + (2210, 'Check topology assistant. Identifies nodes not disconnecteds without exit arcs.'), + (2214, 'Analisys of the network identifying all arc and nodes downstream of the selected node.'), + (2218, 'Analisys of the network identifying all arc and nodes upstream of the selected node.'), + (2224, 'Transform node to arcs (in case that flow regulator must be designed as a node)'), + (2228, 'Exports the subcatchments in case user have been ckecked the checkbox on form of xportation'), + (2234, 'Function used to fill data from inventory tables to rpt_inp tables converting nod2arcs features from one node to two nodes and one arc'), + (2431, 'Function to check result data before inp file creation (it depends only of the whole network consistency)'), + (2528, 'Function exports swmm model data from database into inp file'), + (2710, 'Function to analyze graph of network. Dynamic analisys to sectorize network using the flow traceability function. Before working with this funcion, it is mandatory to configurate graphconfig on drainzone table'), + (2726, 'Main function of pg2epa workflow'), + (2768, 'Function to analyze network as a graph. Analysis is only avaliable for DRAINZONE. Before starting, you need to configurate: - Field graphconfig on drainzone table. - Enable status for variable utils_graphanalytics_status on [config_param_system] table. Stop your mouse over labels for more information about input parameters.'), + (2814, 'Trigger function to control proximity against gullys'), + (2858, 'Function to check result data before inp file creation (it depends for each result)'), + (2860, 'Function to check options before inp file creation (it depends for each result)'), + (2886, 'Create example visits (used on sample creation)'), + (2894, 'Main function to export epa files'), + (2906, 'Provides user defined advanced settings on go2epa process'), + (2908, 'Function to set default values on go2epa process'), + (2910, 'Function to manage with virtual arcs on go2epa process'), + (2916, 'Create example documents (used on sample creation)'), + (2986, 'Identifies arcs that have a drawing direction opposite to the water flow. Calculation based on sys_elev values of arc'), + (3036, 'Trigger to make editable v_edit_inp_dwf'), + (3046, 'Function to assist the import of timeseries for inp models'), + (3064, 'Analysis of duplicated values inserted on fieds top_elev, ymax and elev'), + (3066, 'Analysis of duplicated values inserted on fieds y and elev'), + (3100, 'Function to manage values of defined target hydrology catalog (delete or copy from another one). It works with all objects linked with hydrology catalog (Subcatchment, Lids, Loadings, Coverages and Groundwater).'), + (3102, 'Function to manage values of defined target dwf catalog (insert, delete or copy from another one). It works with dwf table'), + (3118, 'Function to create dscenario getting values from some layer of ToC, including inp layers of EPA group'), + (3132, 'Allows editing inp timeseries view'), + (3140, 'Trigger to make editable v_edit_inp_coverage'), + (3176, 'Control of sections inconsistencies between consecutive conduits. Select a node in order to execute upstream analysis of conduits sections and detect inconsistencies. Value of geom1 (height) from arc catalog is being used to compare the section values.'), + (3178, 'Trigger for editing view v_edit_drainzone'), + (3186, 'Function to set junctions as oultets of subcatchments filtering by a minimum distance one each other'), + (3202, 'Trigger that updates arc node related values such as type, elevation, depth'), + (3216, 'Function that calculates the depth of sander depending on node sys_ymax and arc sys_y1'), + (3224, 'Trigger that allows editing data using v_edit_cat_hydrology view.'), + (3226, 'Trigger that allows editing data using v_edit_inp_gully view.'), + (3234, 'Set timeseries values for any objects (1st version for raingage)'), + (3242, 'Function to set optimum outlet for subcatchments according the closest node of network with less elevation that minimum elevation (minelev) of subcatchment'), + (3276, 'Function trigger that allows editing view of inp transects'), + (3290, 'Function to create empty hydrology scenario'), + (3292, 'Function to create empty dwf scenario'), + (3294, 'Function to duplicate hydrology scenario'), + (3296, 'Function to duplicate dwf scenario'), + (3298, 'Function to import DWF values. '), + (3320, 'Function to archive or restore results.'), + (3326, 'Function to calculate the hydraulic performance of network'), + (3354, 'Function to get lid dialog with filled combos'), + (3360, 'Calculate subcatchment parameters.'), + (3372, 'Trigger to insert the flowregulators.'), + (3384, 'Function to manage nodarcs after importing INP file'), + (3424, 'Function to generate fluid_type of your arcs and nodes. Stop your mouse over labels for more information about input parameters.'), + (3492, 'Dynamic analisys to sectorize network using the flow traceability function and establish omunits.'), + (3494, 'Function to get GeoJson from v_edit_inp_pgully'), + (2102, 'Check topology assistant. To review how many arcs do not have start or end nodes'), + (2104, 'Check topology assistant. To review how many arcs have the same node as node1 and node2'), + (2106, 'Check topology assistant. To review how many connecs are duplicated'), + (2108, 'Check topology assistant. To review how many nodes are duplicated'), + (2110, 'Check topology assistant. To review how many nodes are disconnected of the network'), + (2112, 'Used to fusion two arcs in a unique new one, downgrading the node in case of it is possible to o it'), + (2114, 'Used to divide one arc into two news'), + (2118, 'Massive builder assistant. Builds as many nodes as needed to complete the topologic rules of the network. All nodes are inserted using the values selected by user (state, workcat, etc). Default values for node type and node catalog are taken from the default values setted by user in a config as generic type for node. Before executing, check if all new nodes will be inserted into mapzones boudaries. Uncheck direct insert into node table if you want to use intermediate table (anl_node).'), + (2120, 'To check if one feature is deletable or not'), + (2122, 'To clone schema'), + (2124, 'Massive builder assistant. This function built as many link/vnodes as user connec/gully selects'), + (2130, 'To control permisions of users to manage with state=2 and check inconsistency of state updates for arc / nodes, dissabling the update to state=0 if there are arcs (for node) and connecs (for arcs) with state 1 or 2'), + (2212, 'Check topology assistant. Helps user to identify nodes connected with more/less arcs compared to num_arcs field of cat_feature_node table'), + (2242, 'Function used as CAD assistant for edit user to place support points using relative coordinates'), + (2422, 'Deprecated function used to audit features. Replaced by customized function of corporate to do this'), + (2424, 'This function analyzes the schema'), + (2426, 'Deprecated function used to repair schemas.'), + (2428, 'This function multiplies on element assigned to multiple features using one unique assignation'), + (2436, 'NO input parameters needed. The function allows the possibility to find errors and data inconsistency for prices checking catalog elements.'), + (2438, 'This automatic updates the geometry of plan_psector in function of the feature related to'), + (2456, 'This function controls the demand scenario on epanet file exportation'), + (2464, 'Function to set value of urn sequence'), + (2496, 'Massive repair function. All the arcs that are not connected with extremal node will be reconected using the parameter arc_searchnodes. Function works only for operative features (state=1).'), + (2498, 'Enables the posibility to update the xcoord, ,ycoord columns using position_id and position_value.'), + (2504, 'Enables the possibility to import dxf blocks'), + (2510, 'Function imports prices from csv file into database'), + (2514, 'Function imports elements from csv file into database'), + (2534, 'Function allows to conected link geometries defined by user with the network. Function is not parametrized yet. It works: Selection: All elements from connec, arc and link tables. Parameters: Harcoded values (0,5 mts for buffer).'), + (2542, 'Function recreates link when arc was updated'), + (2544, 'Updates the rotation of connecs related to the azimut of link'), + (2548, 'Manage different issues on visit in function of used variables'), + (2552, 'Function that assignes roles to database'), + (2556, 'Function that creates foreign keys for utils schema'), + (2558, 'Function to provide information aboute feature'), + (2560, 'Function to upsert features'), + (2562, 'Get fields of a form'), + (2566, 'Get atrribute tcatalog of a feature'), + (2568, 'Function to provide catalog form'), + (2570, 'Get configs fields and data'), + (2572, 'Get child view fields and data'), + (2574, 'Function to insert features'), + (2576, 'Function called to get the epa forms'), + (2578, 'Function called to get info of crossection for arc features'), + (2580, 'Get information by feature coordinates'), + (2582, 'Get information by feature id'), + (2584, 'Function to get info from lists'), + (2586, 'Get information about plan cost'), + (2590, 'Get information about layer by coordinates'), + (2592, 'Function to call lists'), + (2596, 'Get information about permissions'), + (2600, 'Get search form fields'), + (2602, 'Function called to fill typeahead widgets'), + (2604, 'Get visit form fiels'), + (2606, 'Set new config values'), + (2608, 'Set delete feature'), + (2610, 'Function called to set fields on feature'), + (2612, 'Set insert visit file'), + (2614, 'Function called to execute changes on go2epa forms'), + (2616, 'Set insert feature'), + (2618, 'Search elements by defined fields'), + (2620, 'Search address by defined fields'), + (2622, 'Set new visit values'), + (2624, 'Auxiliar function with goal to delete json keys'), + (2626, 'Auxiliar function with goal to delete json keys'), + (2628, 'Function called to define toolbar on client projects'), + (2630, 'Function called to pass geometry to client projects'), + (2632, 'Trigger to update the enddate of visits'), + (2634, 'Refresh mat views'), + (2636, 'Rename views'), + (2650, 'Function to execute last process on the schema manager end'), + (2670, 'The function allows the possibility to find errors and data inconsistency before first om process (mincut, dynamic mapzones (ws), profile (ud))'), + (2680, 'This function analyze network topology for specific result. Nodes orphan and disconnected elements are checked.'), + (2682, 'Get print form'), + (2684, 'Set print form'), + (2686, 'Automatic replace of path for docs'), + (2690, 'Create addfields definition and related custom view'), + (2694, 'Import UI xml and update fields order in the custom form'), + (2696, 'Manager to work with advanced functionalities on events configurable using action_type on parameter_x_parameter table'), + (2700, 'Function to administrate fields on tables used on sql file to prevent conflict when field exists'), + (2702, 'Check unique values of attributes in a table'), + (2714, 'Replace one node, connec or gully on service for another one, copying all attributes, setting old one on obsolete and reconnecting other features with the new one'), + (2716, 'Control the creation of child custom views'), + (2718, 'Trigger to manage controls'), + (2720, 'Function to interpolate nodes'), + (2724, 'Function to admin constraints of schema'), + (2725, 'Function get the informations about all the relations that feature has'), + (2732, 'Manage capabilities after update fields on connect (connec & gullt)'), + (2734, 'Create a copy of existing psector'), + (2735, 'Create custom form configuration for child views'), + (2736, 'Delete feature and all relations that it has'), + (2742, 'Edit fields of config api form fields'), + (2744, 'Control foreign keys created in typevalue tables'), + (2746, 'Create new visit class with parameters and form configuration'), + (2748, 'Create view for a new multievent visit class'), + (2750, 'Control foreign keys created in typevalue tables from the side of configuration'), + (2752, 'Create child custom views'), + (2756, 'Edit exploitation data'), + (2758, 'Recreate child views after view name or id change'), + (2760, 'Function that updates the values of elevation using ones captured from raster DEM'), + (2770, 'Get toolbox'), + (2772, 'Function to analyze flow trace of network from one node. Arcs connected and arcs disconnected must be analyzed'), + (2776, 'Function which checks the configuration of API and child views.'), + (2780, 'Function which allows to create and modify database user, its role and it assignes to cat_manager'), + (2782, 'Function to create log for results on import epa files'), + (2788, 'Api function to manage widgetcontrols'), + (2792, 'Function to manage backups for specific table to use it to help admin when does a complex operation with data'), + (2794, 'Functions that controls the qgis project'), + (2796, 'Function used for api to get values of user selectors from database'), + (2802, 'Function desmultiplier visits when multifeature'), + (2804, 'Function to manage (repair, update, compare) giswater schemas'), + (2808, 'Trigger to manage the editability of ve_config_addfields'), + (2812, 'Trigger function to import inp files from temp_table to inp tables'), + (2816, 'Trigger to control and manage config_api_form_fields table'), + (2818, 'Function to activate custom foreign keys of bbdd'), + (2820, 'Function that manages error messages'), + (2824, 'Function to show dimensioning form of api'), + (2826, 'Graphanalytics using LRS'), + (2830, 'Function to manage messages'), + (2832, 'Function to manage profile values'), + (2864, 'Trigger to manage raster'), + (2866, 'Function to manage combos'), + (2868, 'Function to manage disabled forms'), + (2870, 'Function to manage selectors'), + (2872, 'Function to manage vdefault of filters'), + (2874, 'Function to manage colmuns from id'), + (2880, 'Function to manage dimensioning'), + (2890, 'Function to calculate reconstruction cost and amortization values. Process need to be executed in two steps. First step calculates reconstruction cost based on prices tables, lengths and crossection values. With reconstruction cost calculated,it is mandatory before to execute second step to fill builtcost and acoeff columns on plan_rec_result_* tables for specific result. After that, second step may be executed wich will calculate amortization values like aperiod, arate, amortized and pending amounts.'), + (2892, 'Function to calculate costs of rehabilitation'), + (2914, 'Function that analysis the distyance between two nodes.'), + (2920, 'Function to import results'), + (2922, 'Function to reset user values. Two options are enabled: 1-reset from default values; 2-reset from values of another user'), + (2928, 'Function to get style from mapzones'), + (2976, 'Handles styles according to config_function'), + (2982, 'Returns the geometry field of a table or view'), + (2984, 'Returns the geometry field of a table or view'), + (2994, 'Function to repair automatic vnode'), + (2996, 'Function to triger polygons on elements'), + (2998, 'Function to analyze data quality using queries defined by user'), + (3002, 'Function that returns qgis layer configuration for masterplan'), + (3008, 'Function that reverse arc'), + (3010, 'Function that saves data into catalogs created using button located in the info form'), + (3014, 'Insert values into temp_csv'), + (3022, 'Trigger to delete features state =2 when are orphan of psector'), + (3024, 'Function that allows changing the owner of all the tables, functions, sequences in a schema'), + (3028, 'Function that return cat_feature values'), + (3030, 'Function that allows debugging giving error information'), + (3040, 'Check topology assistant. Detect arcs duplicated only by final nodes or the entire geometry'), + (3042, 'Function to manage values of one dscenario catalog (delete or copy from another one)'), + (3044, 'Function to assist the import of curves for inp models'), + (3048, 'Function to assist the import of patterns for inp models'), + (3050, 'Return geometries from id list'), + (3052, 'Check topology assistant. Analyze and validate the length of arcs for potential inconsistencies or errors.'), + (3054, 'Function that changes configuration of a mapzone after using node replace, arc fusion or divide tool on features that are involved in a mapzone'), + (3056, 'Allows editing inp controls view'), + (3060, 'Allows editing inp rules view'), + (3062, 'Allows editing inp patterns view'), + (3068, 'Set features to obsolete'), + (3072, 'Function to replace features on planning mode'), + (3074, 'Trigger that allows editing data on v_edit_inp_dscenario views'), + (3076, 'Function that allows saving, modifying and recuperating a list of views'), + (3078, 'Function that allows saving workspaces - currently set values of selectors and inp configuration'), + (3080, 'It allows to repair the problem of having two nodes on the same location. - Node: the node_id where we want to perform the action. - Target node: the other node_id on the process. It is optative. If NULL, system will try to find the closest node. - Action: 5 actions can be performed: DELETE: Node is deleted. Target node gets topology. DOWNGRADE: Node is downgraded. Target node gets topology. MOVE AND LOSE TOPOLOGY: Node is moved and lose topology. Target node gets topology. MOVE AND KEEP TOPOLOGY: Node is moved and keep topology. Target node lose topology. MOVE AND GET TOPOLOGY: Node is moved and get topology. Target node lose topology. - For moving actions, set the X and Y axis movement (in meters) where node will be displaced.'), + (3082, 'Trigger to activate scenario when is created'), + (3104, 'Function to import arcs and nodes from istram files'), + (3114, 'Function to manage toc values'), + (3116, 'Trigger function for cat dscenario'), + (3126, 'Change type and catalog of a node, arc, connec or gully'), + (3128, 'Function to manage price values for psector_other tab'), + (3130, 'Function that disables and enables topo variables for migration purposes'), + (3134, 'Function to create empty dscenario'), + (3136, 'Function that replaces text ids with an integer urn'), + (3138, 'Trigger that controls setting addfileds as unactive'), + (3146, 'Trigger to fill cat_feature tables'), + (3148, 'Function to import configuration of cat_feature tables'), + (3150, 'Function to import configuration of catalogs cat_arc, cat_node, cat_connec and cat_gully'), + (3152, 'Function for reserting ids and sequences for audit, anl and temp tables'), + (3154, 'Function for reset topology by using node ids'), + (3156, 'Function to duplicate a dscenario'), + (3166, 'Function to import scada values'), + (3168, 'Function to import crm hydrometer values'), + (3170, 'Function to import crm period values'), + (3172, 'Check nodes ''T candidate'' with wrong topology'), + (3174, 'Trigger that manages v_edit_plan_psector_x_connec (and gully views)'), + (3182, 'Trigger to update active value on plan_psector_x_* tables using plan_psector active value'), + (3184, 'Function to harmonize plan_psector_x_connec/gully values after link refactor in 3.5.031'), + (3188, 'Function to work with gw_fct_setlinktonetwork internally'), + (3192, 'Function to manage date selector'), + (3194, 'Function that works internally with gw_fct_getinfofromid'), + (3198, 'Function to capture automatically closest address from every node/connec. - Type: choose if you want to update all node/connec or just a specific type of them. - Field to update: possible fields to update are postnumber(integer) and postcomplement(text). The most usual is postnumber, but if address number is not numeric, then you will need to update postcomplement. - Search buffer: maximum distance to look for an address from the point. - Elements to update: if you dont''t want to update all elements, choose to only update the ones where streetaxis_id, postnumber or postcomplement is null. - Insersect with polygon layer: If selected value is different from NONE, address and number will only be capturated for those elements which intersect with the configured polygonal layer.'), + (3206, 'Function to get node from coordinates'), + (3210, 'Function to manage open form for specific process execution on toolbox'), + (3212, 'Allows editing ve_epa views'), + (3214, 'Triggers that fills data related to connect on link table'), + (3218, 'Function that returns the form and data of a report tool'), + (3220, 'Function that sets style defined o sys_style table'), + (3222, 'Function that inserts missing vnodes.'), + (3244, 'Function used to initialize database for each user'), + (3246, 'Function to insert or update values into a table'), + (3248, 'Function to interpolate node massively'), + (3272, 'Function to import flowmeter aggregated values with random interval in order to transform to daily values'), + (3280, 'Function to update massively the column rotation for nodes. Function works with the selection of user (exploitation and psectors)'), + (3282, 'Function to return boundary feature in function of different input parameters'), + (3284, 'Function to merge two or more psectors into one'), + (3286, 'Trigger function to refresh matviews in order to enhance performe'), + (3288, 'Function to fix possible errors on psector'), + (3302, 'Function to recover graphconfig values. '), + (3304, 'Function to toggle planmode (for big projects). '), + (3308, 'Function to create sys_message efficiently'), + (3310, 'The function retrieves GeoJSON data for nodes and arcs based on selected result IDs and returns it in a structured JSON format.'), + (3316, 'Function to transfer the addfields values'), + (3324, 'Function to get feature type change dialog'), + (3328, 'Trigger to insert or update elements in v_ext_municipality table.'), + (3330, 'Function to create temporal tables for graphanalytics'), + (3332, 'Function to create temporal tables for graphanalytics'), + (3334, 'Function to update the geometry of the mapzones in the temp_minsector table for graphanalytics'), + (3338, 'Retrieves GeoJSON data representing the inundation (flooding) graph for a specific area'), + (3340, 'Retrieves GeoJSON data with all the features from the selected psector '), + (3342, 'Sets the selected value as "current" for the user in config_param_user(value) and return the id and name to set it on label'), + (3344, 'Function to get calibration files from epatools'), + (3346, 'Control foreign keys created in man_type_* tables'), + (3348, 'Function to build dialogs for generic forms'), + (3350, 'Function to update tables with new selected values'), + (3352, 'Function to get epa selector dialog with filled combos'), + (3356, 'Control foreign keys created in cat_material'), + (3358, 'Function to transfer all values from old cat_mat_* tables to new one: cat_material'), + (3362, 'Create temporal tables for check process.'), + (3364, 'Check database exceptions.'), + (3366, 'Create log return for check functions.'), + (3368, 'Create temporal tables for check process.'), + (3370, 'Create return for all fucntions.'), + (3374, 'Upsert assets in gis'), + (3376, 'Set widgets to show in check project button according to user''s role.'), + (3380, 'Function to filter WMS layers with imported columns'), + (3386, 'Function to manage relations between elements and documents'), + (3388, 'Function to insert or update columns dynamically through triggers'), + (3426, 'Function to integrate an specific campaign from campaign manage into production schema'), + (3428, 'Executes a data validation rule, logs the outcome, and saves any violations to an exception table for review'), + (3430, 'Retrieves data quality audit results as either a list of messages or a GeoJSON FeatureCollection for visualizing offending geometries'), + (3432, 'Builds and returns a dynamic form definition, including fields and values, for creating a new work campaign or editing an existing one'), + (3434, 'Fetches a list of work teams for a given campaign, filtering them by role based on the campaign''s managing organization'), + (3436, 'Builds a complete, data-driven dialog definition. It fetches fields, layouts, and tabs for a given form, and populates it with existing data for editing or default values for creation'), + (3438, 'Fetches a detailed array of field definitions for a specific form, dynamically building complex properties for widgets like combo boxes, handling dependencies, default values, and role-based visibility'), + (3440, 'Saves a campaign lot by either inserting a new record or updating an existing one. It dynamically maps all provided fields and configures user access permissions in selector_lot upon creation'), + (3442, 'Builds a complete, multi-tab selector interface. It dynamically generates each tab and its selectable items based on extensive database configurations, user roles, and current selections'), + (3444, 'Builds and returns a dynamic form definition for creating a new work order or editing an existing one'), + (3446, 'A simple utility function that removes one or more specified keys from a JSON object'), + (3448, 'A utility function that adds a new key-value pair to a JSON object or updates the value of an existing key'), + (3450, 'Saves a work campaign by either inserting or updating the main record and its corresponding subtype (review or visit). It also configures user access permissions in selector_campaign'), + (3452, 'Saves a campaign lot by either inserting a new record or updating an existing one. It dynamically maps all provided fields and configures user access permissions in selector_lot upon creation'), + (3454, 'Updates user selections in a selector table based on UI interactions (like checking a box or clicking ''select all'') and then immediately calls its getter counterpart (gw_fct_cm_getselectors) to return the refreshed state of the entire selector dialog'), + (3456, 'Saves a work order by dynamically inserting a new record or updating an existing one, mapping all provided fields from a JSON object to the table columns'), + (3458, 'A trigger function that intercepts DML operations (INSERT, UPDATE, DELETE) on a view and applies them to the underlying cat_team table. NOTE: This trigger is critically flawed as it references non-existent columns and will not work correctly'), + (3460, 'A generic trigger function that logs detailed changes (INSERT, UPDATE, DELETE) for a table into cm_log. It captures which columns were changed, their old and new values, and contextual information about the operation, such as the mission and feature type'), + (3462, 'Manages the status of work lots and their contents. It automatically updates statuses when visits are created or completed, and adds unplanned items to a user''s current work lot'), + (3464, 'A trigger function intended to automatically update the selector_campaign and selector_campaign_lot tables. It populates these tables with the correct user permissions when a campaign or lot is created, updated, or deleted, ensuring users only see items relevant to their role and organization. NOTE: This function has critical bugs and will fail to execute as written'), + (3466, 'Intercepts DML operations on a view, packages the changed data and context into a JSON object, and forwards it to a centralized function (gw_fct_admin_dynamic_trigger) for processing. It also populates default values for new records'), + (3468, 'Calculates the geometry of a campaign/lot by creating a bounding polygon that encompasses all the network elements contained within it.'), + (3470, 'Creates a data quality audit by executing all active validation rules for the project. It then aggregates the results, including error messages and the geometries of failing features, into a single report'), + (3472, 'A conditional trigger that validates if a feature can be added to a campaign. It checks the feature''s specific type (e.g., ''PIPE'', ''VALVE'') against a predefined list of allowed types for that campaign''s review class. If the type is not allowed, the insertion is silently canceled'), + (3474, 'An INSTEAD OF UPDATE trigger for a view that redirects updates to the appropriate underlying table (om_campaign_x_). It updates specific fields like status and observations while also maintaining a rich audit trail. NOTE: This trigger is critically flawed due to a hardcoded column name and will only function correctly for ''node'' features'), + (3476, 'An INSTEAD OF UPDATE trigger for a view that redirects updates of status and observation fields to the appropriate underlying table (om_campaign_x_). NOTE: This trigger is critically flawed due to a hardcoded column name and will only function correctly for ''node'' features'), + (3478, 'A validation trigger that ensures a feature can only be added to a work lot if that same feature is also part of the lot''s parent campaign. If the feature is not in the campaign, the insertion into the lot is silently canceled'), + (3480, 'Automatically copies feature data to a denormalized table when a feature is added to a work lot, and deletes it upon removal. NOTE: The INSERT logic is flawed'), + (3482, 'Function to analyze network as a macro graph.'), + (3484, 'Function for getting features filtering by sys_type and mapzone, with optional ordering by parameter.'), + (3486, 'Function to get a list of DMAs.'), + (3488, 'Function to get DMA hydrometers.'), + (3490, 'Update geometry values from child view into campaign table. Specific trigger because this process is too complex for dynamic trigger'), + (3498, 'Divides an existing arc at a specified node location. Finds the nearest arc within tolerance, splits it into two new arcs at the node position, and deletes the original arc while maintaining all attributes and topological connections.'), + (3500, 'Trigger function that automatically connects campaign arc endpoints to the nearest nodes. Validates topology rules, snaps geometry to node coordinates, and sets proper node_1/node_2 connections while prioritizing division nodes.'), + (3502, 'Synchronizes users with CM roles to the cat_user table. Automatically finds users that have role_cm permissions but are not yet in the cat_user catalog, and inserts them with proper team assignments.'), + (3504, 'Validates catalog combinations for campaign and lot features. Checks if arc and node feature combinations exist in cat_arc and cat_node tables, identifies missing catalog entries, and reports which combinations will need new catalog creation when added to production.'), + (3506, 'Insert psector_x_feature when a feature is inserted with state=2'), + (3508, 'Function to analyze graph of network. Dynamic analisys to sectorize network using pgrouting functions. Before working with this funcion, it is mandatory to configurate graphconfig on mapzone tables'), + (3510, 'Function to get the exploitation ID array'), + (3514, 'Funtion to auto-update cm views and tables to match their parent definitions.'), + (3516, 'Function to manage batch inserts of features into various relation tables (campaign, lot, psector, element, visit) based on relation type and feature type. Returns the number of inserted features.'), + (3518, 'Function to get the properties of a feature.'), + (3520, 'Function to set hydrometers in the database.'), + (3522, 'Function to generate treatment_type of your arcs and nodes. Stop your mouse over labels for more information about input parameters.'), + (3524, 'Function to transform nuemric values of price to user configuration from admin_currency in config_param_system'), + (2244, 'Function used to overlap mincuts in order to planificate possible conflicts one each other'), + (2302, 'Check topology assistant. Helps user to identify nodes connected with more/less arcs compared to num_arcs field of cat_feature_node table'), + (2304, 'This function proposes what valves must be closed in a mincut operation'), + (2306, 'Recursive function of mincut'), + (2312, 'Insert into anl_mincut_result_valve_unaccess valve non accessibles on a specific mincut.'), + (2316, 'This functions transform node to arcs (in case of valve nodes and pump nodes). '), + (2318, 'This functions transform flwreg elements to arcs.'), + (2322, 'This function is called when the importation from rpt file is finished.'), + (2324, 'Recursive function of mincut'), + (2328, 'Function used to fill data from inventory tables to rpt_inp tables converting nod2arcs features from one node to two nodes and one arc'), + (2330, 'Function used to connect CRM values on the EPA exportation'), + (2332, 'Function used to set the network valve status using mincut result status, epa tables status or inventory status'), + (2430, 'NO input parameters needed. The function allows the possibility to find errors and data inconsistency before exportation to EPA models.'), + (2500, 'To update values on field'), + (2526, 'Function exports epanet model data from database into inp file'), + (2646, 'Main function of go2epa workflow'), + (2706, 'Dynamic analisys to sectorize network using the flow traceability function and establish Minimum Sectors. Before start you need to configure: - Field graph_delimiter on [cat_feature_node] table to establish which elements will be used to sectorize. - Enable status for minsector on utils_graphanalytics_status variable from [config_param_system] table. In explotation id you can use ''-9'' to select all explotations, or a list of explotations separated by comma.'), + (2708, 'Function of graphanalytics for mincut'), + (2710, 'Function to analyze graph of network. Multiple analysis is avaliable. Dynamic analisys to sectorize network using the flow traceability function. Before work with this funcion it is mandatory to configurate field graph_delimiter on node_type and field graphconfig on [dma, sector, cat_presszone and dqa] tables'), + (2712, 'Function of graphanalytics for massive mincutzones identification. Multiple analysis is avaliable. It works applying massive mincut for the whole network of selected exploitation. Mincut id =-1 is used. To work with, be shure minsector data of the analysed network is well structured. This attribute will be used in order to optimize the analysis. You can use minsector analysis function to update it before. This analysis may take a lot of time. Be patient!!!'), + (2728, 'Function to trim arcs on model using vnodes'), + (2730, 'Trigger to edit v_edit_inp_connec view'), + (2768, 'Function to analyze network as a graph. Multiple analysis is avaliable (SECTOR, DQA, PRESSZONE & DMA). Before start you need to configurate: - Field graph_delimiter on [cat_feature_node] table. - Field graphconfig on [dma, sector, cat_presszone and dqa] tables. - Enable status for variable utils_graphanalytics_status on [config_param_system] table. Stop your mouse over labels for more information about input parameters. This function could be automatic triggered by valve status (open or closed) by configuring utils_graphanalytics_automatic_trigger variable on [config_param_system] table.'), + (2774, 'Function to generate a fast buildup of EPANET model assuming simplifications from inp_fast_builddup stored on config_param_system'), + (2778, 'Function to create two nodarcs from one nod2arc (when PUMP has a curve_type choosed PUMP-2N2A)'), + (2790, 'Function to analyze data quality of graphclass'), + (2798, 'Parameters for advanced user'), + (2800, 'Function to generate supply models oriented to manage olumes of water and water quality'), + (2846, 'Default values for epa'), + (2848, 'This function analyze data quality for specific result.'), + (2850, 'Check consistency options for epa result'), + (2854, 'Manage varcs when export to epa'), + (2888, 'Create example visits (used on sample creation)'), + (2918, 'Create example documents (used on sample creation)'), + (2924, 'Function to manage dqa editable'), + (2926, 'Function to manage presszone editable'), + (2970, 'Function to configure mapzones. To execute it, system has two requirements: - Mapzone need to be created - Closest arcs need appropiate values on mapzonefield'), + (2988, 'Get mincut values'), + (3006, 'Function that sets flow direction in inp and mapzone tables'), + (3012, 'Function that sets mincut connec & hydrometer class'), + (3020, 'Function that creates additional vnodes to enhance epanet models'), + (3026, 'Function that changes status valve'), + (3058, 'Allows editing inp rules view'), + (3108, 'Function to create network dscenarios from ToC.'), + (3110, 'Function to create dscenarios from CRM. This function store values on CONNEC features. When the network geometry generator works with [NODE] demands are moved 50% to node_1 50% and node_2.'), + (3112, 'Function to create demand dscenarios from [CONNEC, JUNCTION]. It moves demand & pattern data from source to inp_dscenario_demand. Works with epa layers (connec or junction) which means need to be loaded.'), + (3142, 'Function to calculate water balance according stardards of IWA. You must select a period already created or manually select the date of the interval. One at a time. Before that: 1) tables ext_cat_period, ext_rtc_hydrometer_x_data, ext_rtc_scada_x_data need to be filled. 2) DMA graph need to be executed. >End Date proposal for 1% of hydrometers which consum is out of the period: 2015-07-31 00:00:00'), + (3144, 'Trigger to fill mincut data'), + (3158, 'Function to create valve dscenario from mincut'), + (3160, 'Function that creates influence buffer for hydrants and helps defining new hydrant location. - Firehose range is the length of the influence buffer calculate over tramified street layer - om_streetaxis - Process mode: Influence area - calculates the influence buffer; Hydrant proposal - duplicates firehose range and allows defining location of new hydrants (usually at the end of the marked area) - Use proposed hydrants - Takes into account new hydrants inserted on auxiliar view v_edit_anl_hydrant. Those hydrants are not incorporated on inventory nor psector. - Use selected psector - Takes into account currently selected psector'), + (3162, 'Function to create influence buffer for hydrants.'), + (3164, 'Function trigger to edit proposed hidrant layer - v_edit_anl_hydrant.'), + (3180, 'Function that copies model results into *_add tables in order to show the information in the info form.'), + (3196, 'Function that returns data related to water balance results for dma for further visualization'), + (3200, 'Trigger that updates arc node related values such as type, elevation, depth'), + (3208, 'Get mincut manager values'), + (3230, 'Function that executes mapzone calculation if valve is being closed or opened'), + (3232, 'Trigger that controls if node or connec set as feature_id exists on inventory tables'), + (3236, 'Visualize mincuts that are being currently executed in the field.'), + (3250, 'Allows editing minsector view'), + (3252, 'Function to import valve status'), + (3254, 'Function to import demands into dscenario'), + (3256, 'Function to analyze network as a graph. Multiple analysis is avaliable (PRESSZONE & DMA). Before start you need to configure: - Field graph_delimiter on [cat_feature_node] table. - Field graphconfig on [plan_netscenario_presszone, plan_netscenario_dma] tables. - Enable status for variable utils_graphanalytics_status on [config_param_system] table. - Create an empty netscenario with type DMA or PRESSZONE. Stop your mouse over labels for more information about input parameters. This function could be automatic triggered by valve status (open or closed) by configuring utils_graphanalytics_automatic_trigger variable on [config_param_system] table.'), + (3258, 'Function that allows to configure demand dscenario for connecs and nodes, using netscenarios mapzones, defined on table plan_netscenario_dma and using pattern_id assigned to each of the zones'), + (3260, 'Function that allows to create new empty netscenario'), + (3262, 'Function that allows to create new configuration of netscenario and copy mapzones configuration for selected exploitation'), + (3264, 'Function that allows to create new configuration of netscenario and copy mapzones configuration from already created netscenario'), + (3266, 'Function that moves data related to selected result_id from rpt and rpt_inp tables to archived tables'), + (3268, 'Function that updates initlevel of inlets and tanks using values from selected simulation'), + (3270, 'Function that modifies the configuration of mapzones'), + (3274, 'Function trigger that allows editing views of netscenario dma and presszone'), + (3278, 'Function to import closed valve into netscenario'), + (3312, 'Function to mincut minsector'), + (3314, 'Function to mincut minsector inverted '), + (3318, 'Function to update dma hydroval'), + (3322, 'Function to set cost for removed material on specific psectors. Choose the material that has to be removed and the price that costs to remove 1 lineal meter of that material (this price has to exist in column ''id'' of table plan_price. The result is the sum of meters of the chosen material to be removed and the total cost of it for the selected exploitation grouped by psector. The result will be shown in tab Other of psectors.'), + (3326, 'Function to arrenge the network in graphanalytics'), + (3378, 'Trigger to insert, update or delete elements in supplyzone from v_ui_supplyzone or v_edit_supplyzone'), + (3382, 'Function to manage nodarcs after importing INP file'), + (3424, 'Function of graphanalytics for massive mincutzones identification.') +) AS v(id, descript) +WHERE t.id = v.id; \ No newline at end of file diff --git a/dbmodel/schemas/addon/utils/final_pass/i18n/en_US/dbjson.sql b/dbmodel/schemas/addon/utils/final_pass/i18n/en_US/dbjson.sql new file mode 100644 index 0000000000..fc874e6e08 --- /dev/null +++ b/dbmodel/schemas/addon/utils/final_pass/i18n/en_US/dbjson.sql @@ -0,0 +1,83 @@ +/* +This file is part of Giswater +The program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. +*/ + + +SET search_path = SCHEMA_NAME, public, pg_catalog; +UPDATE config_report AS t SET filterparam = v.text::json FROM ( + VALUES + (100, '[{"columnname":"Exploitation","datatype":"text","dvquerytext":"Select name as id, name as idval FROM exploitation WHERE expl_id > 0 ORDER BY name","isNullValue":"true","label":"Exploitation:","layoutorder":1,"widgettype":"combo"},{"columnname":"Arc Catalog","datatype":"text","dvquerytext":"Select id as id, id as idval FROM cat_arc WHERE id IS NOT NULL ORDER BY id","isNullValue":"true","label":"Arc catalog:","layoutorder":2,"widgettype":"combo"}]'), + (101, '[{"columnname":"expl_id","datatype":"text","dvquerytext":"Select expl_id as id, name as idval FROM exploitation WHERE expl_id IS NOT NULL","isNullValue":"true","label":"Exploitation:","layoutorder":1,"widgettype":"combo"}]'), + (105, '[{"columnname":"Exploitation","datatype":"text","dvquerytext":"Select name as id, name as idval FROM exploitation WHERE expl_id > 0 ORDER BY name","isNullValue":"true","label":"Exploitation:","layoutorder":1,"widgettype":"combo"},{"columnname":"Node type","datatype":"text","dvquerytext":"Select id as id, id as idval FROM cat_feature_node join cat_feature USING (id) WHERE id IS NOT NULL AND active ORDER BY id","isNullValue":"true","label":"Node type:","layoutorder":2,"widgettype":"combo"}]'), + (102, '[{"columnname":"Exploitation","datatype":"text","dvquerytext":"Select name as id, name as idval FROM exploitation WHERE expl_id > 0 ORDER by name","isNullValue":"true","label":"Exploitation:","layoutorder":1,"widgettype":"combo"},{"columnname":"Dma","datatype":"text","dvquerytext":"Select name as id, name as idval FROM dma WHERE dma_id != -1 and dma_id!=0 ORDER BY name","isNullValue":"true","label":"Dma:","layoutorder":2,"widgettype":"combo"},{"columnname":"Period","datatype":"text","dvquerytext":"Select code as id, code as idval FROM ext_cat_period WHERE id IS NOT NULL ORDER BY end_date DESC","isNullValue":"true","label":"Period:","layoutorder":1,"widgettype":"combo"}]'), + (103, '[{"columnname":"exploitation","datatype":"text","dvquerytext":"Select name as id, name as idval FROM exploitation WHERE expl_id > 0 ORDER by name","isNullValue":"true","label":"Exploitation:","layoutorder":1,"widgettype":"combo"},{"columnname":"crm_startdate","datatype":"text","dvquerytext":"Select start_date::date as id, start_date::date as idval FROM ext_cat_period WHERE id IS NOT NULL ORDER BY start_date desc","filterSign":">=","isNullValue":"false","label":"From Date","layoutorder":2,"showOnTableModel":{"position":2,"status":true},"widgettype":"combo"},{"columnname":"crm_enddate","datatype":"text","dvquerytext":"Select end_date::date as id, end_date::date as idval FROM ext_cat_period WHERE id IS NOT NULL ORDER BY end_date desc","filterSign":"<=","isNullValue":"false","label":"To Date","layoutorder":3,"showOnTableModel":{"position":3,"status":true},"widgettype":"combo"}]'), + (104, '[{"columnname":"exploitation","datatype":"text","dvquerytext":"Select name as id, name as idval FROM exploitation WHERE expl_id > 0 ORDER by name","isNullValue":"true","label":"Exploitation:","layoutorder":1,"widgettype":"combo"},{"columnname":"dma","datatype":"text","dvquerytext":"Select name as id, name as idval FROM dma WHERE dma_id != -1 and dma_id!=0 ORDER BY name","isNullValue":"true","label":"Dma:","layoutorder":2,"widgettype":"combo"},{"columnname":"crm_startdate","datatype":"text","dvquerytext":"Select start_date::date as id, start_date::date as idval FROM ext_cat_period WHERE id IS NOT NULL ORDER BY start_date","filterSign":">=","isNullValue":"false","label":"From Date","layoutorder":3,"showOnTableModel":{"position":3,"status":true},"widgettype":"combo"},{"columnname":"crm_enddate","datatype":"text","dvquerytext":"Select end_date::date as id, end_date::date as idval FROM ext_cat_period WHERE id IS NOT NULL ORDER BY end_date desc","filterSign":"<=","isNullValue":"false","label":"To Date","layoutorder":4,"showOnTableModel":{"position":4,"status":true},"widgettype":"combo"}]') +) AS v(id, text) +WHERE t.id = v.id; + +UPDATE config_toolbox AS t SET inputparams = v.text::json FROM ( + VALUES + (2768, '[{"comboIds":["DWFZONE","SECTOR","DMA"],"comboNames":["Drainage area (DRAINZONE + DWFZONE)","SECTOR","DMA"],"datatype":"text","label":"Graph class:","layoutname":"grl_option_parameters","layoutorder":1,"selectedId":null,"tooltip":"Graphanalytics method used","widgetname":"graphClass","widgettype":"combo"},{"datatype":"text","dvQueryText":"SELECT id, idval FROM ( SELECT -901 AS id, ''User selected expl'' AS idval, ''a'' AS sort_order UNION SELECT -902 AS id, ''All exploitations'' AS idval, ''b'' AS sort_order UNION SELECT expl_id AS id, name AS idval, ''c'' AS sort_order FROM exploitation WHERE active IS NOT FALSE AND expl_id > 0 ) a ORDER BY sort_order ASC, idval ASC","label":"Exploitation:","layoutname":"grl_option_parameters","layoutorder":2,"selectedId":null,"tooltip":"Choose exploitation to work with","widgetname":"exploitation","widgettype":"combo"},{"datatype":"text","isMandatory":false,"label":"Force open arcs: (*)","layoutname":"grl_option_parameters","layoutorder":5,"placeholder":"1015,2231,3123","tooltip":"Optative arc id(s) to temporary open closed arc(s) in order to force algorithm to continue there","value":null,"widgetname":"forceOpen","widgettype":"linetext"},{"datatype":"text","isMandatory":false,"label":"Force closed arcs: (*)","layoutname":"grl_option_parameters","layoutorder":6,"placeholder":"1015,2231,3123","tooltip":"Optative arc id(s) to temporary close open arc(s) to force algorithm to stop there","value":null,"widgetname":"forceClosed","widgettype":"text"},{"datatype":"boolean","label":"Use selected psectors:","layoutname":"grl_option_parameters","layoutorder":7,"tooltip":"If true, use selected psectors. If false ignore selected psectors and only works with on-service network","value":null,"widgetname":"usePlanPsector","widgettype":"check"},{"datatype":"boolean","label":"Commit changes:","layoutname":"grl_option_parameters","layoutorder":8,"tooltip":"If true, changes will be applied to DB. If false, algorithm results will be saved in anl tables","value":null,"widgetname":"commitChanges","widgettype":"check"},{"comboIds":[0,1,2,6],"comboNames":["NONE","CONCAVE POLYGON","PIPE BUFFER","EPA SUBCATCH"],"datatype":"integer","label":"Mapzone constructor method:","layoutname":"grl_option_parameters","layoutorder":10,"selectedId":null,"widgetname":"updateMapZone","widgettype":"combo"},{"datatype":"float","isMandatory":false,"label":"Pipe buffer","layoutname":"grl_option_parameters","layoutorder":11,"placeholder":"5-30","tooltip":"Buffer from arcs to create mapzone geometry using [PIPE BUFFER] options. Normal values maybe between 3-20 mts.","value":null,"widgetname":"geomParamUpdate","widgettype":"text"},{"datatype":"boolean","label":"Mapzones from zero:","layoutname":"grl_option_parameters","layoutorder":12,"tooltip":"If true, mapzones are calculated automatically from zero","value":null,"widgetname":"fromZero","widgettype":"check"}]'), + (3100, '[{"datatype":"text","dvQueryText":"SELECT distinct(hydrology_id) as id, name as idval FROM cat_hydrology WHERE active IS TRUE","label":"Target:","layoutname":"grl_option_parameters","layoutorder":1,"selectedId":null,"value":null,"widgetname":"target","widgettype":"combo"},{"datatype":"text","dvQueryText":"SELECT sector_id AS id, name as idval FROM sector JOIN selector_sector USING (sector_id) WHERE cur_user = current_user UNION SELECT -999,''ALL VISIBLE SECTORS'' ORDER BY 1 DESC","label":"Sector:","layoutname":"grl_option_parameters","layoutorder":2,"selectedId":null,"value":null,"widgetname":"sector","widgettype":"combo"},{"comboIds":["DELETE-COPY","KEEP-COPY","DELETE-ONLY"],"comboNames":["DELETE & COPY","KEEP & COPY","DELETE ONLY"],"datatype":"text","label":"Action:","layoutname":"grl_option_parameters","layoutorder":3,"selectedId":null,"value":null,"widgetname":"action","widgettype":"combo"},{"datatype":"text","dvQueryText":"SELECT distinct(hydrology_id) as id, name as idval FROM cat_hydrology WHERE active IS TRUE","label":"Copy from:","layoutname":"grl_option_parameters","layoutorder":4,"selectedId":null,"value":null,"widgetname":"copyFrom","widgettype":"combo"}]'), + (3102, '[{"datatype":"text","dvQueryText":"SELECT id, idval FROM cat_dwf c WHERE active IS TRUE","label":"Target Scenario:","layoutname":"grl_option_parameters","layoutorder":1,"selectedId":"$userDwf","widgetname":"target","widgettype":"combo"},{"datatype":"text","dvQueryText":"SELECT sector_id AS id, name as idval FROM sector JOIN selector_sector USING (sector_id) WHERE cur_user = current_user UNION SELECT -999,''ALL VISIBLE SECTORS'' ORDER BY 1 DESC","label":"Sector:","layoutname":"grl_option_parameters","layoutorder":2,"selectedId":"$userSector","widgetname":"sector","widgettype":"combo"},{"comboIds":["INSERT-ONLY","DELETE-COPY","KEEP-COPY","DELETE-ONLY"],"comboNames":["INSERT ONLY","DELETE & COPY","KEEP & COPY","DELETE ONLY"],"datatype":"text","label":"Action:","layoutname":"grl_option_parameters","layoutorder":3,"selectedId":"INSERT-ONLY","widgetname":"action","widgettype":"combo"},{"datatype":"text","dvQueryText":"SELECT id, idval FROM cat_dwf c WHERE active IS TRUE","label":"Copy from:","layoutname":"grl_option_parameters","layoutorder":4,"selectedId":"","widgetname":"copyFrom","widgettype":"combo"}]'), + (3118, '[{"datatype":"text","label":"Scenario name:","layoutname":"grl_option_parameters","layoutorder":1,"selectedId":null,"value":null,"widgetname":"name","widgettype":"text"},{"datatype":"text","dvQueryText":"SELECT id, idval FROM inp_typevalue where typevalue = ''inp_typevalue_dscenario'' ORDER BY id","label":"Scenario type:","layoutname":"grl_option_parameters","layoutorder":2,"selectedId":null,"value":null,"widgetname":"type","widgettype":"combo"},{"datatype":"text","dvQueryText":"SELECT expl_id as id, name as idval FROM ve_exploitation","label":"Exploitation:","layoutname":"grl_option_parameters","layoutorder":4,"selectedId":null,"value":null,"widgetname":"exploitation","widgettype":"combo"},{"datatype":"text","label":"Descript:","layoutname":"grl_option_parameters","layoutorder":5,"selectedId":null,"value":null,"widgetname":"descript","widgettype":"text"}]'), + (3134, '[{"datatype":"text","isMandatory":true,"label":"Name: (*)","layoutname":"grl_option_parameters","layoutorder":1,"placeholder":"","selectedId":null,"tooltip":"Name for dscenario (mandatory)","value":null,"widgetname":"name","widgettype":"linetext"},{"datatype":"text","isMandatory":false,"label":"Descript:","layoutname":"grl_option_parameters","layoutorder":2,"placeholder":"","selectedId":null,"tooltip":"Descript for dscenario","value":null,"widgetname":"descript","widgettype":"linetext"},{"datatype":"text","isMandatory":false,"label":"Parent:","layoutname":"grl_option_parameters","layoutorder":3,"placeholder":"","selectedId":null,"tooltip":"Parent for dscenario","value":null,"widgetname":"parent","widgettype":"linetext"},{"datatype":"text","dvQueryText":"SELECT id, idval FROM inp_typevalue WHERE typevalue = ''inp_typevalue_dscenario'' ORDER BY id","isMandatory":true,"label":"Type:","layoutname":"grl_option_parameters","layoutorder":4,"selectedId":null,"tooltip":"Dscenario type","value":null,"widgetname":"type","widgettype":"combo"},{"datatype":"text","dvQueryText":"SELECT expl_id AS id, name as idval FROM ve_exploitation WHERE expl_id > 0","isMandatory":true,"isNullValue":"true","label":"Exploitation:","layoutname":"grl_option_parameters","layoutorder":6,"selectedId":null,"tooltip":"Dscenario type","value":null,"widgetname":"expl","widgettype":"combo"}]'), + (3176, '[{"datatype":"text","label":"Node:","layoutname":"grl_option_parameters","layoutorder":1,"selectedId":null,"value":null,"widgetname":"node","widgettype":"text"}]'), + (3186, '[{"datatype":"text","isMandatory":true,"label":"Junction minimum distance","layoutname":"grl_option_parameters","layoutorder":1,"placeholder":"10","selectedId":null,"tooltip":"Value to set minimum distance for junctions","value":null,"widgetname":"minDistance","widgettype":"linetext"}]'), + (3242, '[{"datatype":"float","isMandatory":true,"label":"Buffer (meters):","layoutname":"grl_option_parameters","layoutorder":3,"selectedId":null,"value":null,"widgetname":"buffer","widgettype":"text"}]'), + (3290, '[{"datatype":"text","isMandatory":true,"label":"Name: (*)","layoutname":"grl_option_parameters","layoutorder":1,"placeholder":"","selectedId":null,"tooltip":"Name for hydrology scenario (mandatory)","value":null,"widgetname":"name","widgettype":"linetext"},{"datatype":"text","dvQueryText":"SELECT id, idval FROM inp_typevalue WHERE typevalue =''inp_value_options_in''","isMandatory":true,"label":"Infiltration:","layoutname":"grl_option_parameters","layoutorder":2,"selectedId":null,"tooltip":"Infiltration","value":null,"widgetname":"infiltration","widgettype":"combo"},{"datatype":"text","isMandatory":false,"label":"Text:","layoutname":"grl_option_parameters","layoutorder":3,"placeholder":"","selectedId":null,"tooltip":"Text of hydrology scenario","value":null,"widgetname":"text","widgettype":"linetext"},{"datatype":"text","dvQueryText":"SELECT expl_id AS id, name as idval FROM ve_exploitation","isMandatory":true,"label":"Exploitation:","layoutname":"grl_option_parameters","layoutorder":4,"selectedId":null,"tooltip":"hydrology scenario type","value":null,"widgetname":"expl","widgettype":"combo"}]'), + (3290, '[{"datatype":"text","isMandatory":true,"label":"Name: (*)","layoutname":"grl_option_parameters","layoutorder":1,"placeholder":"","selectedId":null,"tooltip":"Name for hydrology scenario (mandatory)","value":null,"widgetname":"name","widgettype":"linetext"},{"datatype":"text","dvQueryText":"SELECT id, idval FROM inp_typevalue WHERE typevalue =''inp_value_options_in''","isMandatory":true,"label":"Infiltration:","layoutname":"grl_option_parameters","layoutorder":2,"selectedId":null,"tooltip":"Infiltration","value":null,"widgetname":"infiltration","widgettype":"combo"},{"datatype":"text","isMandatory":false,"label":"Text:","layoutname":"grl_option_parameters","layoutorder":3,"placeholder":"","selectedId":null,"tooltip":"Text of hydrology scenario","value":null,"widgetname":"text","widgettype":"linetext"},{"datatype":"text","dvQueryText":"SELECT expl_id AS id, name as idval FROM ve_exploitation","isMandatory":true,"label":"Exploitation:","layoutname":"grl_option_parameters","layoutorder":4,"selectedId":null,"tooltip":"hydrology scenario type","value":null,"widgetname":"expl","widgettype":"combo"},{"datatype":"boolean","label":"Active:","layoutname":"grl_option_parameters","layoutorder":5,"selectedId":null,"tooltip":"If true, active","value":null,"widgetname":"active","widgettype":"check"}]'), + (3292, '[{"datatype":"text","isMandatory":true,"label":"Name: (*)","layoutname":"grl_option_parameters","layoutorder":1,"placeholder":"","selectedId":null,"tooltip":"Name for dwf scenario (mandatory)","value":null,"widgetname":"idval","widgettype":"linetext"},{"datatype":"date","isMandatory":false,"label":"Startdate:","layoutname":"grl_option_parameters","layoutorder":2,"placeholder":"","selectedId":null,"tooltip":"Start date for dwf scenario","value":null,"widgetname":"startdate","widgettype":"datetime"},{"datatype":"date","isMandatory":false,"label":"Enddate:","layoutname":"grl_option_parameters","layoutorder":3,"placeholder":"End date for dwf scenario","selectedId":null,"tooltip":"End date","value":null,"widgetname":"enddate","widgettype":"datetime"},{"datatype":"text","isMandatory":false,"label":"Observ:","layoutname":"grl_option_parameters","layoutorder":4,"placeholder":"","selectedId":null,"tooltip":"Observations of dwf scenario","value":null,"widgetname":"observ","widgettype":"linetext"},{"datatype":"text","dvQueryText":"SELECT expl_id AS id, name as idval FROM ve_exploitation","isMandatory":true,"label":"Exploitation:","layoutname":"grl_option_parameters","layoutorder":5,"selectedId":null,"tooltip":"dwf scenario type","value":null,"widgetname":"expl","widgettype":"combo"}]'), + (3292, '[{"datatype":"text","isMandatory":true,"label":"Name: (*)","layoutname":"grl_option_parameters","layoutorder":1,"placeholder":"","selectedId":null,"tooltip":"Name for dwf scenario (mandatory)","value":null,"widgetname":"idval","widgettype":"linetext"},{"datatype":"date","isMandatory":false,"label":"Startdate:","layoutname":"grl_option_parameters","layoutorder":2,"placeholder":"","selectedId":null,"tooltip":"Start date for dwf scenario","value":null,"widgetname":"startdate","widgettype":"datetime"},{"datatype":"date","isMandatory":false,"label":"Enddate:","layoutname":"grl_option_parameters","layoutorder":3,"placeholder":"End date for dwf scenario","selectedId":null,"tooltip":"End date","value":null,"widgetname":"enddate","widgettype":"datetime"},{"datatype":"text","isMandatory":false,"label":"Observ:","layoutname":"grl_option_parameters","layoutorder":4,"placeholder":"","selectedId":null,"tooltip":"Observations of dwf scenario","value":null,"widgetname":"observ","widgettype":"linetext"},{"datatype":"text","dvQueryText":"SELECT expl_id AS id, name as idval FROM ve_exploitation","isMandatory":true,"label":"Exploitation:","layoutname":"grl_option_parameters","layoutorder":5,"selectedId":null,"tooltip":"dwf scenario type","value":null,"widgetname":"expl","widgettype":"combo"},{"datatype":"boolean","label":"Active:","layoutname":"grl_option_parameters","layoutorder":6,"selectedId":null,"tooltip":"If true, active","value":null,"widgetname":"active","widgettype":"check"}]'), + (3294, '[{"datatype":"text","dvQueryText":"SELECT hydrology_id as id, name as idval FROM cat_hydrology WHERE active IS TRUE","label":"Copy from:","layoutname":"grl_option_parameters","layoutorder":1,"selectedId":null,"value":null,"widgetname":"copyFrom","widgettype":"combo"},{"datatype":"text","isMandatory":true,"label":"Name: (*)","layoutname":"grl_option_parameters","layoutorder":2,"placeholder":"","selectedId":null,"tooltip":"Name for hydrology scenario (mandatory)","value":null,"widgetname":"name","widgettype":"linetext"},{"datatype":"text","isMandatory":false,"label":"Text:","layoutname":"grl_option_parameters","layoutorder":4,"placeholder":"","selectedId":null,"tooltip":"Text of hydrology scenario","value":null,"widgetname":"text","widgettype":"linetext"},{"datatype":"text","dvQueryText":"SELECT expl_id AS id, name as idval FROM ve_exploitation","isMandatory":true,"label":"Exploitation:","layoutname":"grl_option_parameters","layoutorder":5,"selectedId":null,"tooltip":"hydrology scenario type","value":null,"widgetname":"expl","widgettype":"combo"},{"datatype":"boolean","label":"Active:","layoutname":"grl_option_parameters","layoutorder":6,"selectedId":null,"tooltip":"If true, active","value":null,"widgetname":"active","widgettype":"check"}]'), + (3296, '[{"datatype":"text","dvQueryText":"SELECT id, idval FROM cat_dwf WHERE active IS TRUE","label":"Copy from:","layoutname":"grl_option_parameters","layoutorder":1,"selectedId":null,"value":null,"widgetname":"copyFrom","widgettype":"combo"},{"datatype":"text","isMandatory":true,"label":"Name: (*)","layoutname":"grl_option_parameters","layoutorder":2,"placeholder":"","selectedId":null,"tooltip":"Name for dwf scenario (mandatory)","value":null,"widgetname":"idval","widgettype":"linetext"},{"datatype":"date","isMandatory":false,"label":"Start date:","layoutname":"grl_option_parameters","layoutorder":3,"placeholder":"","selectedId":null,"tooltip":"Start date for dwf scenario","value":null,"widgetname":"startdate","widgettype":"datetime"},{"datatype":"date","isMandatory":false,"label":"Parent:","layoutname":"grl_option_parameters","layoutorder":4,"placeholder":"End date for dwf scenario","selectedId":null,"tooltip":"","value":null,"widgetname":"enddate","widgettype":"datetime"},{"datatype":"text","isMandatory":false,"label":"Observ:","layoutname":"grl_option_parameters","layoutorder":5,"placeholder":"","selectedId":null,"tooltip":"Observations of dwf scenario","value":null,"widgetname":"observ","widgettype":"linetext"},{"datatype":"text","dvQueryText":"SELECT expl_id AS id, name as idval FROM ve_exploitation","isMandatory":true,"label":"Exploitation:","layoutname":"grl_option_parameters","layoutorder":6,"selectedId":null,"tooltip":"dwf scenario type","value":null,"widgetname":"expl","widgettype":"combo"},{"datatype":"boolean","label":"Active:","layoutname":"grl_option_parameters","layoutorder":7,"selectedId":null,"tooltip":"If true, active","value":null,"widgetname":"active","widgettype":"check"}]'), + (3326, '[{"datatype":"text","dvQueryText":"SELECT result_id as id, result_id as idval FROM rpt_cat_result WHERE status = 2","isMandatory":true,"label":"Result_id:","layoutname":"grl_option_parameters","layoutorder":1,"selectedId":null,"tooltip":"Result_id","value":null,"widgetname":"resultId","widgettype":"combo"},{"datatype":"text","isMandatory":true,"label":"Outfalls as WWTP:","layoutname":"grl_option_parameters","layoutorder":2,"placeholder":"234,235,3246","selectedId":null,"tooltip":"Outfalls as WWTP","value":null,"widgetname":"wwtpOutfalls","widgettype":"linetext"}]'), + (3360, '[{"comboIds":["sector","expl","muni"],"comboNames":["SECTOR","EXPL","MUNICIPALITY"],"datatype":"text","label":"Clip Layer:","layoutname":"grl_option_parameters","layoutorder":1,"widgetname":"clipLayer","widgettype":"combo"},{"datatype":"boolean","label":"Delete previous subcatchments:","layoutname":"grl_option_parameters","layoutorder":2,"value":"true","widgetname":"deletePrevious","widgettype":"check"}]'), + (3424, '[{"comboIds":["FLUID_TYPE"],"comboNames":["Fluid type"],"datatype":"text","label":"Process name:","layoutname":"grl_option_parameters","layoutorder":1,"selectedId":null,"tooltip":"Process name","value":null,"widgetname":"processName","widgettype":"combo"},{"datatype":"text","dvQueryText":"SELECT id, idval FROM ( SELECT -901 AS id, ''User selected expl'' AS idval, ''a'' AS sort_order UNION SELECT -902 AS id, ''All exploitations'' AS idval, ''b'' AS sort_order UNION SELECT expl_id AS id, name AS idval, ''c'' AS sort_order FROM vf_exploitation ) a ORDER BY sort_order ASC, idval ASC","label":"Exploitation:","layoutname":"grl_option_parameters","layoutorder":2,"selectedId":null,"tooltip":"Choose exploitation to work with","value":null,"widgetname":"exploitation","widgettype":"combo"},{"datatype":"boolean","label":"Use selected psectors:","layoutname":"grl_option_parameters","layoutorder":3,"selectedId":null,"tooltip":"If true, use selected psectors. If false ignore selected psectors and only works with on-service network","value":null,"widgetname":"usePlanPsector","widgettype":"check"},{"datatype":"boolean","label":"Commit changes:","layoutname":"grl_option_parameters","layoutorder":4,"selectedId":null,"tooltip":"If true, changes will be applied to DB. If false, algorithm results will be saved in anl tables","value":null,"widgetname":"commitChanges","widgettype":"check"}]'), + (3482, '[{"comboIds":["MACROSECTOR","MACROOMZONE","MACRODMA","MACRODQA"],"comboNames":["MACROSECTOR","MACROOMZONE","MACRODMA","MACRODQA"],"datatype":"text","label":"Graph class:","layoutname":"grl_option_parameters","layoutorder":1,"selectedId":null,"tooltip":"Graphanalytics method used","widgetname":"graphClass","widgettype":"combo"},{"datatype":"text","dvQueryText":"SELECT id, idval FROM ( SELECT -901 AS id, ''User selected expl'' AS idval, ''a'' AS sort_order UNION SELECT -902 AS id, ''All exploitations'' AS idval, ''b'' AS sort_order UNION SELECT expl_id AS id, name AS idval, ''c'' AS sort_order FROM vf_exploitation ) a ORDER BY sort_order ASC, idval ASC","label":"Exploitation:","layoutname":"grl_option_parameters","layoutorder":2,"selectedId":null,"tooltip":"Choose exploitation to work with","widgetname":"exploitation","widgettype":"combo"},{"datatype":"boolean","label":"Commit changes:","layoutname":"grl_option_parameters","layoutorder":8,"tooltip":"If True, changes will be applied to DB. If False, algorithm results will be saved in a temporal layer","value":null,"widgetname":"commitChanges","widgettype":"check"},{"comboIds":[0,1,2,3,4],"comboNames":["NONE","CONCAVE POLYGON","PIPE BUFFER","PLOT & PIPE BUFFER","LINK & PIPE BUFFER"],"datatype":"integer","label":"Mapzone constructor method:","layoutname":"grl_option_parameters","layoutorder":9,"selectedId":null,"widgetname":"updateMapZone","widgettype":"combo"},{"datatype":"float","isMandatory":false,"label":"Pipe buffer","layoutname":"grl_option_parameters","layoutorder":10,"placeholder":"5-30","tooltip":"Buffer from arcs to create mapzone geometry using [PIPE BUFFER] options. Normal values maybe between 3-20 mts.","value":null,"widgetname":"geomParamUpdate","widgettype":"text"}]'), + (3492, '[{"datatype":"text","dvQueryText":"SELECT id, idval FROM ( SELECT -901 AS id, ''User selected expl'' AS idval, ''a'' AS sort_order UNION SELECT -902 AS id, ''All exploitations'' AS idval, ''b'' AS sort_order UNION SELECT expl_id AS id, name AS idval, ''c'' AS sort_order FROM vf_exploitation ) a ORDER BY sort_order ASC, idval ASC","label":"Exploitation:","layoutname":"grl_option_parameters","layoutorder":2,"selectedId":"","tooltip":"Choose exploitation to work with","widgetname":"exploitation","widgettype":"combo"},{"datatype":"boolean","label":"Use masterplan psectors:","layoutname":"grl_option_parameters","layoutorder":6,"value":"","widgetname":"usePlanPsector","widgettype":"check"},{"datatype":"boolean","label":"Commit changes:","layoutname":"grl_option_parameters","layoutorder":7,"value":"","widgetname":"commitChanges","widgettype":"check"},{"comboIds":[0,1,2,3],"comboNames":["NONE","CONCAVE POLYGON","PIPE BUFFER","PLOT & PIPE BUFFER"],"datatype":"integer","label":"Update mapzone geometry method:","layoutname":"grl_option_parameters","layoutorder":8,"selectedId":"","widgetname":"updateMapZone","widgettype":"combo"},{"datatype":"float","isMandatory":false,"label":"Geometry parameter:","layoutname":"grl_option_parameters","layoutorder":10,"placeholder":"5-30","value":"","widgetname":"geomParamUpdate","widgettype":"text"}]'), + (3522, '[{"comboIds":["TREATMENT_TYPE"],"comboNames":["Treatment type"],"datatype":"text","label":"Process name:","layoutname":"grl_option_parameters","layoutorder":1,"selectedId":null,"tooltip":"Process name","value":null,"widgetname":"processName","widgettype":"combo"},{"datatype":"text","dvQueryText":"SELECT id, idval FROM ( SELECT -901 AS id, ''User selected expl'' AS idval, ''a'' AS sort_order UNION SELECT -902 AS id, ''All exploitations'' AS idval, ''b'' AS sort_order UNION SELECT expl_id AS id, name AS idval, ''c'' AS sort_order FROM vf_exploitation ) a ORDER BY sort_order ASC, idval ASC","label":"Exploitation:","layoutname":"grl_option_parameters","layoutorder":2,"selectedId":null,"tooltip":"Choose exploitation to work with","value":null,"widgetname":"exploitation","widgettype":"combo"},{"datatype":"boolean","label":"Use selected psectors:","layoutname":"grl_option_parameters","layoutorder":3,"selectedId":null,"tooltip":"If true, use selected psectors. If false ignore selected psectors and only works with on-service network","value":null,"widgetname":"usePlanPsector","widgettype":"check"},{"datatype":"boolean","label":"Commit changes:","layoutname":"grl_option_parameters","layoutorder":4,"selectedId":null,"tooltip":"If true, changes will be applied to DB. If false, algorithm results will be saved in anl tables","value":null,"widgetname":"commitChanges","widgettype":"check"}]'), + (2102, '[{"datatype":"float","label":"Start/end points buffer","layoutname":"grl_option_parameters","layoutorder":1,"selectedId":null,"value":null,"widgetname":"arcSearchNodes","widgettype":"text"}]'), + (2106, '[{"datatype":"float","label":"Node tolerance:","layoutname":"grl_option_parameters","layoutorder":1,"selectedId":null,"value":null,"widgetname":"connecTolerance","widgettype":"spinbox"}]'), + (2108, '[{"datatype":"float","label":"Node tolerance:","layoutname":"grl_option_parameters","layoutorder":1,"selectedId":null,"value":null,"widgetname":"nodeTolerance","widgettype":"spinbox"}]'), + (2118, '[{"datatype":"boolean","label":"Direct insert into node table:","layoutname":"grl_option_parameters","layoutorder":1,"selectedId":null,"value":null,"widgetname":"insertIntoNode","widgettype":"check"},{"datatype":"float","label":"Node tolerance:","layoutname":"grl_option_parameters","layoutorder":2,"selectedId":null,"value":null,"widgetname":"nodeTolerance","widgettype":"spinbox"},{"datatype":"text","dvQueryText":"select expl_id as id, name as idval from exploitation where active is not false order by name","label":"Exploitation ids:","layoutname":"grl_option_parameters","layoutorder":3,"selectedId":null,"value":null,"widgetname":"exploitation","widgettype":"combo"},{"datatype":"integer","dvQueryText":"select value_state_type.id as id, concat((select concat(label, '' '') from config_form_fields where columnname = ''state'' limit 1), value_state.name, (select concat('' - '', label, '' '') from config_form_fields where columnname = ''state_type'' limit 1), value_state_type.name) as idval from value_state_type join value_state on value_state.id = state where value_state_type.id is not null order by CASE WHEN state=1 THEN 1 WHEN state=2 THEN 2 WHEN state=0 THEN 3 END, id","isparent":"true","label":"State:","layoutname":"grl_option_parameters","layoutorder":4,"selectedId":null,"value":null,"widgetname":"stateType","widgettype":"combo"},{"datatype":"text","dvQueryText":"select id as id, id as idval from cat_work where id is not null","isNullValue":true,"label":"Workcat:","layoutname":"grl_option_parameters","layoutorder":5,"selectedId":null,"value":null,"widgetname":"workcatId","widgettype":"combo"},{"datatype":"date","label":"Builtdate:","layoutname":"grl_option_parameters","layoutorder":6,"selectedId":null,"value":null,"widgetname":"builtdate","widgettype":"datetime"},{"datatype":"text","dvQueryText":"select distinct cfn.id as id, cfn.id as idval from cat_feature_node cfn JOIN cat_node cn ON cn.node_type=cfn.id where cfn.id is not null","iseditable":true,"isparent":true,"label":"Node type:","layoutname":"grl_option_parameters","layoutorder":7,"selectedId":"$userNodetype","value":null,"widgetname":"nodeType","widgettype":"combo"},{"datatype":"text","dvQueryText":"select distinct id as id, id as idval from cat_node order by id","dvparentid":"node_type","dvquerytext_filterc":" AND value_state_type.state","filterquery":"select distinct id as id, id as idval from cat_node where node_type = ''{parent_value}'' order by id","label":"Node catalog:","layoutname":"grl_option_parameters","layoutorder":8,"parentname":"nodeType","selectedId":"$userNodecat","value":null,"widgetname":"nodeCat","widgettype":"combo"}]'), + (2670, '[{"comboIds":["userSelectors"],"comboNames":["Users selection (expl & state & psector)"],"datatype":"text","label":"Selection mode:","layoutname":"grl_option_parameters","layoutorder":1,"selectedId":null,"value":null,"widgetname":"selectionMode","widgettype":"combo"}]'), + (2760, '[{"comboIds":["allValues","nullValues"],"comboNames":["ALL VALUES","NULL ELEVATION VALUES"],"datatype":"text","label":"Values to update:","layoutname":"grl_option_parameters","layoutorder":1,"selectedId":null,"value":null,"widgetname":"updateValues","widgettype":"combo"}]'), + (2768, '[{"comboIds":["PRESSZONE","DQA","DMA","SECTOR"],"comboNames":["Pressure Zonification (PRESSZONE)","District Quality Areas (DQA)","District Metering Areas (DMA)","Inlet Sectorization (SECTOR-HIGH / SECTOR-LOW)"],"datatype":"text","label":"Graph class:","layoutname":"grl_option_parameters","layoutorder":1,"selectedId":null,"tooltip":"Graphanalytics method used","widgetname":"graphClass","widgettype":"combo"},{"datatype":"text","dvQueryText":"SELECT id, idval FROM ( SELECT -901 AS id, ''User selected expl'' AS idval, ''a'' AS sort_order UNION SELECT -902 AS id, ''All exploitations'' AS idval, ''b'' AS sort_order UNION SELECT expl_id AS id, name AS idval, ''c'' AS sort_order FROM vf_exploitation ) a ORDER BY sort_order ASC, idval ASC","label":"Exploitation:","layoutname":"grl_option_parameters","layoutorder":2,"selectedId":null,"tooltip":"Choose exploitation to work with","widgetname":"exploitation","widgettype":"combo"},{"datatype":"text","isMandatory":false,"label":"Force open nodes: (*)","layoutname":"grl_option_parameters","layoutorder":5,"placeholder":"1015,2231,3123","tooltip":"Optative node id(s) to temporary open closed node(s) in order to force algorithm to continue there","value":null,"widgetname":"forceOpen","widgettype":"linetext"},{"datatype":"text","isMandatory":false,"label":"Force closed nodes: (*)","layoutname":"grl_option_parameters","layoutorder":6,"placeholder":"1015,2231,3123","tooltip":"Optative node id(s) to temporary close open node(s) to force algorithm to stop there","value":null,"widgetname":"forceClosed","widgettype":"text"},{"datatype":"boolean","label":"Use selected psectors:","layoutname":"grl_option_parameters","layoutorder":7,"tooltip":"If true, use selected psectors. If false ignore selected psectors and only works with on-service network","value":null,"widgetname":"usePlanPsector","widgettype":"check"},{"datatype":"boolean","label":"Commit changes:","layoutname":"grl_option_parameters","layoutorder":8,"tooltip":"If true, changes will be applied to DB. If false, algorithm results will be saved in anl tables","value":null,"widgetname":"commitChanges","widgettype":"check"},{"comboIds":[0,1,2,3,4],"comboNames":["NONE","CONCAVE POLYGON","PIPE BUFFER","PLOT & PIPE BUFFER","LINK & PIPE BUFFER"],"datatype":"integer","label":"Mapzone constructor method:","layoutname":"grl_option_parameters","layoutorder":10,"selectedId":null,"widgetname":"updateMapZone","widgettype":"combo"},{"datatype":"float","isMandatory":false,"label":"Pipe buffer","layoutname":"grl_option_parameters","layoutorder":11,"placeholder":"5-30","tooltip":"Buffer from arcs to create mapzone geometry using [PIPE BUFFER] options. Normal values maybe between 3-20 mts.","value":null,"widgetname":"geomParamUpdate","widgettype":"text"},{"datatype":"boolean","label":"Mapzones from zero:","layoutname":"grl_option_parameters","layoutorder":12,"tooltip":"If true, mapzones are calculated automatically from zero","value":null,"widgetname":"fromZero","widgettype":"check"}]'), + (2772, '[{"comboIds":["DISCONNECTEDARCS","CONNECTEDARCS"],"comboNames":["DISCONNECTED ARCS","CONNECTED ARCS"],"datatype":"text","label":"Graph class:","layoutname":"grl_option_parameters","layoutorder":1,"selectedId":null,"value":null,"widgetname":"graphClass","widgettype":"combo"},{"datatype":"text","label":"Node id:","layoutname":"grl_option_parameters","layoutorder":2,"selectedId":null,"value":null,"widgetname":"nodeId","widgettype":"text"}]'), + (2826, '[{"datatype":"text","dvQueryText":"select expl_id as id, name as idval from exploitation where active is not false order by name","label":"Exploitation ids:","layoutname":"grl_option_parameters","layoutorder":2,"selectedId":"1","widgetname":"exploitation","widgettype":"combo"}]'), + (2890, '[{"datatype":"string","label":"Result name:","layoutname":"grl_option_parameters","layoutorder":1,"placeholder":"result name","selectedId":null,"value":null,"widgetname":"resultName","widgettype":"text"},{"comboIds":["1","2"],"comboNames":["STEP-1:RECONSTRUCTION COST","STEP-2:AMORTIZATION VALUES"],"datatype":"text","label":"Step:","layoutname":"grl_option_parameters","layoutorder":2,"selectedId":null,"value":null,"widgetname":"step","widgettype":"combo"},{"datatype":"float","label":"Coefficient:","layoutname":"grl_option_parameters","layoutorder":3,"placeholder":"1","selectedId":null,"value":null,"widgetname":"coefficient","widgettype":"text"},{"datatype":"string","ismandatory":false,"label":"Description:","layoutname":"grl_option_parameters","layoutorder":4,"placeholder":"description","selectedId":null,"value":null,"widgetname":"descript","widgettype":"text"}]'), + (2922, '[{"datatype":"text","label":"User name:","layoutname":"grl_option_parameters","layoutorder":1,"selectedId":null,"tooltip":"User name","value":null,"widgetname":"user","widgettype":"text"},{"datatype":"text","label":"Copy from user (same role):","layoutname":"grl_option_parameters","layoutorder":2,"selectedId":null,"tooltip":"Optative user name to copy all values from it","value":null,"widgetname":"fromUser","widgettype":"text"}]'), + (2998, '[{"comboIds":["User"],"comboNames":["User"],"datatype":"text","label":"Check type:","layoutname":"grl_option_parameters","layoutorder":1,"selectedId":null,"value":null,"widgetname":"checkType","widgettype":"combo"}]'), + (3040, '[{"comboIds":["geometry","finalNodes"],"comboNames":["GEOMETRY","FINAL NODES"],"datatype":"text","label":"Check type:","layoutname":"grl_option_parameters","layoutorder":1,"selectedId":null,"value":null,"widgetname":"checkType","widgettype":"combo"}]'), + (3042, '[{"datatype":"text","dvQueryText":"SELECT dscenario_id as id, name as idval FROM cat_dscenario WHERE active IS TRUE","label":"Target:","layoutname":"grl_option_parameters","layoutorder":1,"selectedId":null,"value":null,"widgetname":"target","widgettype":"combo"},{"comboIds":["DELETE-COPY","KEEP-COPY","DELETE-ONLY"],"comboNames":["DELETE VALUES & COPY FROM","KEEP VALUES & COPY FROM","DELETE SCENARIO"],"datatype":"text","label":"Action:","layoutname":"grl_option_parameters","layoutorder":2,"selectedId":null,"value":null,"widgetname":"action","widgettype":"combo"},{"datatype":"text","dvQueryText":"SELECT dscenario_id as id, name as idval FROM cat_dscenario WHERE active IS TRUE","label":"Copy from:","layoutname":"grl_option_parameters","layoutorder":3,"selectedId":null,"value":null,"widgetname":"copyFrom","widgettype":"combo"}]'), + (3052, '[{"datatype":"string","label":"Arc length:","layoutname":"grl_option_parameters","layoutorder":1,"widgetname":"arcLength","widgettype":"text"}]'), + (3052, '[{"datatype":"string","label":"Arc length shorter than:","layoutname":"grl_option_parameters","layoutorder":1,"widgetname":"shorterThan","widgettype":"text"},{"datatype":"string","label":"Arc length bigger than:","layoutname":"grl_option_parameters","layoutorder":2,"widgetname":"biggerThan","widgettype":"text"}]'), + (3080, '[{"datatype":"text","label":"Node:","layoutname":"grl_option_parameters","layoutorder":1,"selectedId":null,"value":null,"widgetname":"node","widgettype":"text"},{"comboIds":["DELETE","DOWNGRADE","MOVE-LOSE-TOPO","MOVE-KEEP-TOPO","MOVE-GET-TOPO"],"comboNames":["DELETE","DOWNGRADE","MOVE & LOSE TOPOLOGY","MOVE & KEEP TOPOLOGY","MOVE & GET TOPOLOGY"],"datatype":"text","label":"Action:","layoutname":"grl_option_parameters","layoutorder":3,"selectedId":null,"value":null,"widgetname":"action","widgettype":"combo"},{"datatype":"text","label":"Target node (optional):","layoutname":"grl_option_parameters","layoutorder":2,"selectedId":null,"tooltip":"Value for target node is optative. If null system will try to check closest node.","value":null,"widgetname":"targetNode","widgettype":"text"},{"datatype":"float","label":"Movement on X axis (m):","layoutname":"grl_option_parameters","layoutorder":4,"selectedId":null,"tooltip":"Node displacement on X axis (m)","value":null,"widgetname":"dx","widgettype":"text"},{"datatype":"float","label":"Movement on Y axis (m):","layoutname":"grl_option_parameters","layoutorder":5,"selectedId":null,"tooltip":"Node displacement on Y axis (m)","value":null,"widgetname":"dy","widgettype":"text"}]'), + (3130, '[{"comboIds":["TRUE","FALSE"],"comboNames":["MIGRATION","WORK"],"datatype":"text","label":"Set topocontrol mode:","layoutname":"grl_option_parameters","layoutorder":1,"selectedId":null,"value":null,"widgetname":"action","widgettype":"combo"}]'), + (3156, '[{"datatype":"text","dvQueryText":"SELECT dscenario_id as id, name as idval FROM cat_dscenario WHERE active IS TRUE","label":"Copy from:","layoutname":"grl_option_parameters","layoutorder":1,"selectedId":null,"signal":"manage_duplicate_dscenario_copyfrom","value":null,"widgetname":"copyFrom","widgettype":"combo"},{"datatype":"text","isMandatory":true,"label":"Name: (*)","layoutname":"grl_option_parameters","layoutorder":2,"placeholder":"","selectedId":null,"tooltip":"Name for dscenario (mandatory)","value":null,"widgetname":"name","widgettype":"linetext"},{"datatype":"text","isMandatory":false,"label":"Descript:","layoutname":"grl_option_parameters","layoutorder":3,"placeholder":"","selectedId":null,"tooltip":"Descript for dscenario","value":null,"widgetname":"descript","widgettype":"linetext"},{"datatype":"text","isMandatory":false,"label":"Parent:","layoutname":"grl_option_parameters","layoutorder":4,"placeholder":"","selectedId":null,"tooltip":"Parent for dscenario","value":null,"widgetname":"parent","widgettype":"linetext"},{"datatype":"text","dvQueryText":"SELECT id, idval FROM inp_typevalue WHERE typevalue = ''inp_typevalue_dscenario''","isMandatory":true,"label":"Type:","layoutname":"grl_option_parameters","layoutorder":5,"selectedId":null,"tooltip":"Dscenario type","value":null,"widgetname":"type","widgettype":"combo"},{"datatype":"boolean","label":"Active:","layoutname":"grl_option_parameters","layoutorder":6,"selectedId":null,"tooltip":"If true, active","value":null,"widgetname":"active","widgettype":"check"},{"datatype":"text","dvQueryText":"SELECT expl_id AS id, name as idval FROM ve_exploitation WHERE expl_id > 0","isMandatory":true,"isNullValue":"true","label":"Exploitation:","layoutname":"grl_option_parameters","layoutorder":7,"selectedId":null,"tooltip":"Dscenario type","value":null,"widgetname":"expl","widgettype":"combo"}]'), + (3198, '[{"comboIds":["ALL NODES","ALL CONNECS","HYDRANT","JUNCTION","METER","PUMP","TANK","VALVE","WJOIN"],"comboNames":["ALL NODES","ALL CONNECS","HYDRANT","JUNCTION","METER","PUMP","TANK","VALVE","WJOIN"],"datatype":"text","label":"Type:","layoutname":"grl_option_parameters","layoutorder":1,"selectedId":null,"value":null,"widgetname":"catFeature","widgettype":"combo"},{"comboIds":["postnumber","postcomplement"],"comboNames":["POSTNUMBER","POSTCOMPLEMENT"],"datatype":"text","label":"Field to update:","layoutname":"grl_option_parameters","layoutorder":2,"selectedId":null,"value":null,"widgetname":"fieldToUpdate","widgettype":"combo"},{"datatype":"float","isMandatory":true,"label":"Search buffer (meters):","layoutname":"grl_option_parameters","layoutorder":3,"selectedId":null,"value":null,"widgetname":"searchBuffer","widgettype":"text"},{"comboIds":["allValues","nullStreet","nullPostnumber","nullPostcomplement"],"comboNames":["ALL ELEMENTS","ELEMENTS WITH NULL STREETAXIS","ELEMENTS WITH NULL POSTNUMBER","ELEMENTS WITH NULL POSTCOMPLEMENT"],"datatype":"text","label":"Elements to update:","layoutname":"grl_option_parameters","layoutorder":4,"selectedId":null,"value":null,"widgetname":"updateValues","widgettype":"combo"},{"comboIds":["NONE","v_ext_plot"],"comboNames":["NONE","PLOT"],"datatype":"text","label":"Intersect with polygon layer:","layoutname":"grl_option_parameters","layoutorder":5,"selectedId":null,"value":null,"widgetname":"insersectPolygonLayer","widgettype":"combo"}]'), + (3280, '[{"datatype":"text","label":"NodeType(s):","layoutname":"grl_option_parameters","layoutorder":1,"placeholder":"''T'',''TANK''","selectedId":null,"tooltip":"Concat values of node type with '',''. Null values will execute all defined node types","value":null,"widgetname":"nodeType","widgettype":"text"}]'), + (3284, '[{"datatype":"text","isMandatory":true,"label":"Psector ids: (*)","layoutname":"grl_option_parameters","layoutorder":0,"widgetname":"psector_ids","widgettype":"text"},{"datatype":"text","isMandatory":true,"label":"New psector name: (*)","layoutname":"grl_option_parameters","layoutorder":1,"widgetname":"new_psector_name","widgettype":"text"}]'), + (3426, '[{"datatype":"text","dvQueryText":"select campaign_id as id, name as idval from cm.om_campaign WHERE status = 8 order by name","isNullValue":"true","label":"Campaign:","layoutname":"grl_option_parameters","layoutorder":1,"selectedId":"","tooltip":"Campaign to be inserted into production environment","widgetname":"campaignId","widgettype":"combo"}]'), + (2706, '[{"datatype":"text","dvQueryText":"SELECT id, idval FROM ( SELECT -901 AS id, ''User selected expl'' AS idval, ''a'' AS sort_order UNION SELECT -902 AS id, ''All exploitations'' AS idval, ''b'' AS sort_order UNION SELECT expl_id AS id, name AS idval, ''c'' AS sort_order FROM vf_exploitation ) a ORDER BY sort_order ASC, idval ASC","label":"Exploitation:","layoutname":"grl_option_parameters","layoutorder":1,"selectedId":"","tooltip":"Choose exploitation to work with","widgetname":"exploitation","widgettype":"combo"},{"datatype":"boolean","label":"Use masterplan psectors:","layoutname":"grl_option_parameters","layoutorder":2,"value":"","widgetname":"usePlanPsector","widgettype":"check"},{"datatype":"boolean","label":"Commit changes:","layoutname":"grl_option_parameters","layoutorder":3,"value":"","widgetname":"commitChanges","widgettype":"check"},{"comboIds":[0,1,2,3],"comboNames":["NONE","CONCAVE POLYGON","PIPE BUFFER","PLOT & PIPE BUFFER"],"datatype":"integer","label":"Update mapzone geometry method:","layoutname":"grl_option_parameters","layoutorder":4,"selectedId":"","widgetname":"updateMapZone","widgettype":"combo"},{"datatype":"float","isMandatory":false,"label":"Geometry parameter:","layoutname":"grl_option_parameters","layoutorder":5,"placeholder":"5-30","value":"","widgetname":"geomParamUpdate","widgettype":"text"},{"datatype":"boolean","label":"Execute Massive Mincut:","layoutname":"grl_option_parameters","layoutorder":6,"value":"","widgetname":"executeMassiveMincut","widgettype":"check"},{"datatype":"boolean","label":"Ignore Unaccess Valves Mincut:","layoutname":"grl_option_parameters","layoutorder":7,"value":"","widgetname":"ignoreUnaccessValvesMincut","widgettype":"check"},{"datatype":"boolean","label":"Ignore ChangeStatus Valves Mincut:","layoutname":"grl_option_parameters","layoutorder":8,"value":"","widgetname":"ignoreChangeStatusValvesMincut","widgettype":"check"}]'), + (2790, '[{"comboIds":["PRESSZONE","DQA","DMA","SECTOR"],"comboNames":["Pressure Zonification (PRESSZONE)","District Quality Areas (DQA) ","District Metering Areas (DMA)","Inlet Sectorization (SECTOR-HIGH / SECTOR-LOW)"],"datatype":"text","label":"Graph class:","layoutname":"grl_option_parameters","layoutorder":1,"selectedId":null,"value":null,"widgetname":"graphClass","widgettype":"combo"},{"comboIds":["userSelectors"],"comboNames":["Users selection (expl & state & psector)"],"datatype":"text","label":"Selection mode:","layoutname":"grl_option_parameters","layoutorder":2,"selectedId":null,"value":null,"widgetname":"selectionMode","widgettype":"combo"}]'), + (2970, '[{"comboIds":["DMA","PRESSZONE","SECTOR"],"comboNames":["District Metering Areas (DMA)","Pressure zones (PRESSZONE)","Inlet sectors (SECTOR)"],"datatype":"text","label":"Graph class:","layoutname":"grl_option_parameters","layoutorder":1,"selectedId":null,"value":null,"widgetname":"graphClass","widgettype":"combo"},{"datatype":"string","label":"Mapzone field name:","layoutname":"grl_option_parameters","layoutorder":2,"selectedId":null,"value":null,"widgetname":"mapzoneField","widgettype":"text"}]'), + (3108, '[{"datatype":"text","label":"Scenario name:","layoutname":"grl_option_parameters","layoutorder":1,"selectedId":null,"value":null,"widgetname":"name","widgettype":"text"},{"datatype":"text","label":"Scenario descript:","layoutname":"grl_option_parameters","layoutorder":2,"selectedId":null,"value":null,"widgetname":"descript","widgettype":"text"},{"datatype":"text","dvQueryText":"SELECT id, idval FROM inp_typevalue where typevalue = ''inp_typevalue_dscenario''","label":"Scenario type:","layoutname":"grl_option_parameters","layoutorder":3,"selectedId":null,"value":null,"widgetname":"type","widgettype":"combo"},{"datatype":"text","dvQueryText":"SELECT expl_id as id, name as idval FROM ve_exploitation","label":"Exploitation:","layoutname":"grl_option_parameters","layoutorder":4,"selectedId":null,"value":null,"widgetname":"exploitation","widgettype":"combo"},{"datatype":"text","label":"Descript:","layoutname":"grl_option_parameters","layoutorder":5,"selectedId":null,"value":null,"widgetname":"descript","widgettype":"text"}]'), + (3110, '[{"datatype":"text","label":"Scenario name:","layoutname":"grl_option_parameters","layoutorder":1,"value":"","widgetname":"name","widgettype":"text"},{"datatype":"text","label":"Scenario descript:","layoutname":"grl_option_parameters","layoutorder":2,"value":"","widgetname":"descript","widgettype":"text"},{"datatype":"text","dvQueryText":"SELECT expl_id as id, name as idval FROM exploitation where expl_id>0 UNION select 99999 as id, ''ALL'' as idval order by id desc","label":"Exploitation:","layoutname":"grl_option_parameters","layoutorder":4,"selectedId":"0","widgetname":"exploitation","widgettype":"combo"},{"comboIds":[1,2],"comboNames":["PERIOD ID","DATE INTERVAL"],"datatype":"text","isMandatory":true,"label":"Choose time method:","layoutname":"grl_option_parameters","layoutorder":5,"widgetname":"patternOrDate","widgettype":"combo"},{"datatype":"text","dvQueryText":"SELECT id, code as idval FROM ext_cat_period","label":"if PERIOD_ID - Period:","layoutname":"grl_option_parameters","layoutorder":6,"selectedId":"1","widgetname":"period","widgettype":"combo"},{"datatype":"text","label":"[if DATE INTERVAL] Source CRM init date:","layoutname":"grl_option_parameters","layoutorder":7,"value":null,"widgetname":"initDate","widgettype":"datetime"},{"datatype":"text","label":"[if DATE INTERVAL] Source CRM end date:","layoutname":"grl_option_parameters","layoutorder":8,"value":"2015-07-30 00:00:00","widgetname":"endDate","widgettype":"datetime"},{"datatype":"boolean","label":"Only hydrometers with waterbal true:","layoutname":"grl_option_parameters","layoutorder":9,"value":null,"widgetname":"onlyIsWaterBal","widgettype":"check"},{"comboIds":[1,2,3,6,7],"comboNames":["NONE","SECTOR-DEFAULT","DMA-DEFAULT","HYDROMETER-CATEGORY","FEATURE-PATTERN"],"datatype":"text","label":"Feature pattern:","layoutname":"grl_option_parameters","layoutorder":10,"selectedId":"","tooltip":"This value will be stored on pattern_id of inp_dscenario_demand table in order to be used on the inp file exportation ONLY with the pattern method FEATURE PATTERN.","widgetname":"pattern","widgettype":"combo"},{"comboIds":["LPS","LPM","MLD","CMH","CMD","CFS","GPM","MGD","AFD"],"comboNames":["LPS","LPM","MLD","CMH","CMD","CFS","GPM","MGD","AFD"],"datatype":"text","label":"Demand units:","layoutname":"grl_option_parameters","layoutorder":11,"selectedId":"","tooltip":"Choose units to insert volume data on demand column. This value need to be the same that flow units used on EPANET. On the other hand, it is assumed that volume from hydrometer data table is expresed on m3/period and column period_seconds is filled.","widgetname":"demandUnits","widgettype":"combo"},{"datatype":"boolean","label":"Demand as DMA weight factor:","layoutname":"grl_option_parameters","layoutorder":12,"tooltip":"","widgetname":"export_weight","widgettype":"check"}]'), + (3112, '[{"datatype":"text","label":"Scenario name:","layoutname":"grl_option_parameters","layoutorder":1,"selectedId":null,"value":null,"widgetname":"name","widgettype":"text"},{"datatype":"text","label":"Scenario descript:","layoutname":"grl_option_parameters","layoutorder":2,"selectedId":null,"value":null,"widgetname":"descript","widgettype":"text"},{"datatype":"text","dvQueryText":"SELECT expl_id as id, name as idval FROM ve_exploitation","label":"Exploitation:","layoutname":"grl_option_parameters","layoutorder":4,"selectedId":null,"value":null,"widgetname":"exploitation","widgettype":"combo"}]'), + (3142, '[{"datatype":"text","dvQueryText":"WITH aux AS (SELECT ''-9'' as id, ''ALL'' as idval, 0 AS rowid UNION SELECT expl_id::text as id, name as idval, row_number() over()+1 AS rowid FROM exploitation where expl_id>0) SELECT id, idval FROM aux ORDER BY rowid ASC","isMandatory":true,"label":"Exploitation:","layoutname":"grl_option_parameters","layoutorder":1,"tooltip":"Dscenario type","value":"","widgetname":"exploitation","widgettype":"combo"},{"datatype":"text","dvQueryText":"SELECT id, idval FROM om_typevalue WHERE typevalue = ''waterbalance_method''","isMandatory":true,"label":"Method:","layoutname":"grl_option_parameters","layoutorder":2,"tooltip":"Water balance method","value":"","widgetname":"method","widgettype":"combo"},{"datatype":"text","dvQueryText":"SELECT id, code as idval FROM ext_cat_period ORDER BY id desc","label":"Period:","layoutname":"grl_option_parameters","layoutorder":4,"selectedId":"","widgetname":"period","widgettype":"combo"},{"datatype":"text","isMandatory":true,"label":"Period (init date):","layoutname":"grl_option_parameters","layoutorder":5,"tooltip":"Start date","value":null,"widgetname":"initDate","widgettype":"datetime"},{"datatype":"text","isMandatory":true,"label":"Period (end date):","layoutname":"grl_option_parameters","layoutorder":6,"tooltip":"End date","value":"9999-12-12","widgetname":"endDate","widgettype":"datetime"},{"datatype":"boolean","isMandatory":true,"label":"Execute DMA:","layoutname":"grl_option_parameters","layoutorder":7,"tooltip":"Execute DMA","value":"","widgetname":"executeGraphDma","widgettype":"check"}]'), + (3158, '[{"datatype":"text","label":"Scenario name:","layoutname":"grl_option_parameters","layoutorder":1,"selectedId":null,"value":null,"widgetname":"name","widgettype":"text"},{"datatype":"text","label":"Scenario descript:","layoutname":"grl_option_parameters","layoutorder":2,"selectedId":null,"value":null,"widgetname":"descript","widgettype":"text"},{"datatype":"text","dvQueryText":"SELECT id as id, id as idval FROM om_mincut","label":"Mincut:","layoutname":"grl_option_parameters","layoutorder":3,"selectedId":null,"value":null,"widgetname":"mincutId","widgettype":"combo"}]'), + (3160, '[{"datatype":"float","label":"Firehose range:","layoutname":"grl_option_parameters","layoutorder":"1","selectedId":null,"value":null,"widgetname":"distance","widgettype":"text"},{"comboIds":["0","1"],"comboNames":["Influence area","Hydrant proposal"],"datatype":"text","label":"Process mode:","layoutname":"grl_option_parameters","layoutorder":"2","selectedId":null,"value":null,"widgetname":"mode","widgettype":"combo"},{"datatype":"boolean","label":"Use proposed hydrants:","layoutname":"grl_option_parameters","layoutorder":"3","selectedId":null,"value":null,"widgetname":"useProposal","widgettype":"check"},{"datatype":"boolean","label":"Use selected psectors:","layoutname":"grl_option_parameters","layoutorder":"4","selectedId":null,"value":null,"widgetname":"usePsector","widgettype":"check"}]'), + (3236, '[{"datatype":"text","dvQueryText":"select expl_id as id, name as idval from exploitation where active is not false order by name","label":"Exploitation:","layoutname":"grl_option_parameters","layoutorder":2,"selectedId":null,"tooltip":"Exploitation","value":null,"widgetname":"explId","widgettype":"combo"}]'), + (3256, '[{"datatype":"text","dvQueryText":"select netscenario_id as id, name as idval from plan_netscenario order by name","isNullValue":"true","label":"Create mapzones for netscenario:","layoutname":"grl_option_parameters","layoutorder":1,"selectedId":null,"tooltip":"Create mapzone for a selected netscenario","value":null,"widgetname":"netscenario","widgettype":"combo"},{"datatype":"text","dvQueryText":"SELECT id, idval FROM ( SELECT -901 AS id, ''User selected expl'' AS idval, ''a'' AS sort_order UNION SELECT -902 AS id, ''All exploitations'' AS idval, ''b'' AS sort_order UNION SELECT expl_id AS id, name AS idval, ''c'' AS sort_order FROM vf_exploitation ) a ORDER BY sort_order ASC, idval ASC","label":"Exploitation:","layoutname":"grl_option_parameters","layoutorder":2,"selectedId":null,"tooltip":"Choose exploitation to work with","value":null,"widgetname":"exploitation","widgettype":"combo"},{"datatype":"text","isMandatory":false,"label":"Force open nodes: (*)","layoutname":"grl_option_parameters","layoutorder":5,"placeholder":"1015,2231,3123","selectedId":null,"tooltip":"Optative node id(s) to temporary open closed node(s) in order to force algorithm to continue there","value":null,"widgetname":"forceOpen","widgettype":"linetext"},{"datatype":"text","isMandatory":false,"label":"Force closed nodes: (*)","layoutname":"grl_option_parameters","layoutorder":6,"placeholder":"1015,2231,3123","selectedId":null,"tooltip":"Optative node id(s) to temporary close open node(s) to force algorithm to stop there","value":null,"widgetname":"forceClosed","widgettype":"text"},{"datatype":"boolean","label":"Use selected psectors:","layoutname":"grl_option_parameters","layoutorder":8,"selectedId":null,"tooltip":"If true, use selected psectors. If false ignore selected psectors and only works with on-service network","value":null,"widgetname":"usePlanPsector","widgettype":"check"},{"comboIds":[0,1,2,3,4],"comboNames":["NONE","CONCAVE POLYGON","PIPE BUFFER","PLOT & PIPE BUFFER","LINK & PIPE BUFFER"],"datatype":"integer","label":"Mapzone constructor method:","layoutname":"grl_option_parameters","layoutorder":9,"selectedId":null,"value":null,"widgetname":"updateMapZone","widgettype":"combo"},{"datatype":"float","isMandatory":false,"label":"Pipe buffer","layoutname":"grl_option_parameters","layoutorder":10,"placeholder":"5-30","selectedId":null,"tooltip":"Buffer from arcs to create mapzone geometry using [PIPE BUFFER] options. Normal values maybe between 3-20 mts.","value":null,"widgetname":"geomParamUpdate","widgettype":"text"},{"datatype":"boolean","label":"Commit changes:","layoutname":"grl_option_parameters","layoutorder":11,"tooltip":"If true, changes will be applied to DB. If false, algorithm results will be saved in anl tables","value":null,"widgetname":"commitChanges","widgettype":"check"},{"datatype":"boolean","label":"Mapzones from zero:","layoutname":"grl_option_parameters","layoutorder":12,"tooltip":"If true, mapzones are calculated automatically from zero","value":null,"widgetname":"fromZero","widgettype":"check"}]'), + (3258, '[{"datatype":"text","dvQueryText":"select netscenario_id as id, name as idval from plan_netscenario where netscenario_type =''DMA'' order by name","isNullValue":"true","label":"Source netscenario:","layoutname":"grl_option_parameters","layoutorder":1,"selectedId":null,"tooltip":"Select mapzone dscenario from where data will be copied to demand dscenario","value":null,"widgetname":"netscenario","widgettype":"combo"},{"datatype":"text","dvQueryText":"select dscenario_id as id, name as idval from cat_dscenario where dscenario_type =''DEMAND'' order by name","isNullValue":"true","label":"Target dscenario demand:","layoutname":"grl_option_parameters","layoutorder":3,"selectedId":null,"tooltip":"Select demand dscenario where data will be inserted","value":null,"widgetname":"dscenario_demand","widgettype":"combo"}]'), + (3260, '[{"datatype":"text","isMandatory":true,"label":"Name: (*)","layoutname":"grl_option_parameters","layoutorder":1,"placeholder":"","selectedId":null,"tooltip":"Name for netscenario (mandatory)","value":null,"widgetname":"name","widgettype":"linetext"},{"datatype":"text","isMandatory":false,"label":"Descript:","layoutname":"grl_option_parameters","layoutorder":2,"placeholder":"","selectedId":null,"tooltip":"Descript for netscenario","value":null,"widgetname":"descript","widgettype":"linetext"},{"datatype":"text","dvQueryText":"SELECT id, idval FROM plan_typevalue WHERE typevalue = ''netscenario_type''","isMandatory":true,"label":"Type:","layoutname":"grl_option_parameters","layoutorder":4,"selectedId":null,"tooltip":"netscenario type","value":null,"widgetname":"type","widgettype":"combo"},{"datatype":"boolean","label":"Active:","layoutname":"grl_option_parameters","layoutorder":5,"selectedId":null,"tooltip":"If true, active","value":null,"widgetname":"active","widgettype":"check"},{"datatype":"text","dvQueryText":"SELECT expl_id AS id, name as idval FROM ve_exploitation","isMandatory":true,"label":"Exploitation:","layoutname":"grl_option_parameters","layoutorder":6,"selectedId":null,"tooltip":"netscenario type","value":null,"widgetname":"expl","widgettype":"combo"}]'), + (3262, '[{"datatype":"text","isMandatory":true,"label":"Name: (*)","layoutname":"grl_option_parameters","layoutorder":1,"placeholder":"","selectedId":null,"tooltip":"Name for netscenario (mandatory)","value":null,"widgetname":"name","widgettype":"linetext"},{"datatype":"text","isMandatory":false,"label":"Descript:","layoutname":"grl_option_parameters","layoutorder":2,"placeholder":"","selectedId":null,"tooltip":"Descript for netscenario","value":null,"widgetname":"descript","widgettype":"linetext"},{"datatype":"text","dvQueryText":"SELECT id, idval FROM plan_typevalue WHERE typevalue = ''netscenario_type''","isMandatory":true,"label":"Type:","layoutname":"grl_option_parameters","layoutorder":4,"selectedId":null,"tooltip":"netscenario type","value":null,"widgetname":"type","widgettype":"combo"},{"datatype":"boolean","label":"Active:","layoutname":"grl_option_parameters","layoutorder":5,"selectedId":null,"tooltip":"If true, active","value":null,"widgetname":"active","widgettype":"check"},{"datatype":"text","dvQueryText":"SELECT expl_id AS id, name as idval FROM ve_exploitation","isMandatory":true,"label":"Exploitation:","layoutname":"grl_option_parameters","layoutorder":6,"selectedId":null,"tooltip":"netscenario type","value":null,"widgetname":"expl","widgettype":"combo"}]'), + (3264, '[{"datatype":"text","dvQueryText":"SELECT netscenario_id as id, name as idval FROM plan_netscenario WHERE active IS TRUE","label":"Copy from:","layoutname":"grl_option_parameters","layoutorder":0,"selectedId":null,"value":null,"widgetname":"copyFrom","widgettype":"combo"},{"datatype":"text","isMandatory":true,"label":"Name: (*)","layoutname":"grl_option_parameters","layoutorder":1,"placeholder":"","selectedId":null,"tooltip":"Name for netscenario (mandatory)","value":null,"widgetname":"name","widgettype":"linetext"},{"datatype":"text","isMandatory":false,"label":"Descript:","layoutname":"grl_option_parameters","layoutorder":2,"placeholder":"","selectedId":null,"tooltip":"Descript for netscenario","value":null,"widgetname":"descript","widgettype":"linetext"},{"datatype":"text","isMandatory":false,"label":"Parent:","layoutname":"grl_option_parameters","layoutorder":3,"placeholder":"","selectedId":null,"tooltip":"Parent for netscenario","value":null,"widgetname":"parent","widgettype":"linetext"},{"datatype":"boolean","label":"Active:","layoutname":"grl_option_parameters","layoutorder":5,"selectedId":null,"tooltip":"If true, active","value":null,"widgetname":"active","widgettype":"check"}]'), + (3268, '[{"datatype":"text","dvQueryText":"SELECT result_id as id, result_id as idval FROM rpt_cat_result WHERE status !=3","label":"Copy from:","layoutname":"grl_option_parameters","layoutorder":0,"selectedId":null,"value":null,"widgetname":"resultId","widgettype":"combo"}]'), + (3308, '[{"datatype":"text","isMandatory":true,"label":"Name:","layoutname":"grl_option_parameters","layoutorder":1,"placeholder":"","selectedId":null,"tooltip":"Name of the new dscenario","value":null,"widgetname":"name","widgettype":"linetext"},{"datatype":"text","isMandatory":false,"label":"descript:","layoutname":"grl_option_parameters","layoutorder":2,"placeholder":"","selectedId":null,"tooltip":"descript of new scenario","value":null,"widgetname":"descript","widgettype":"linetext"},{"datatype":"text","dvQueryText":"SELECT expl_id AS id, name as idval FROM ve_exploitation","isMandatory":true,"label":"Exploitation:","layoutname":"grl_option_parameters","layoutorder":3,"selectedId":null,"tooltip":"dwf scenario type","value":null,"widgetname":"expl","widgettype":"combo"}]'), + (3322, '[{"datatype":"text","dvQueryText":"SELECT expl_id as id, name as idval FROM ve_exploitation","label":"Exploitation:","layoutname":"grl_option_parameters","layoutorder":1,"selectedId":null,"value":null,"widgetname":"expl","widgettype":"combo"},{"datatype":"text","dvQueryText":"SELECT id, descript as idval FROM cat_material WHERE ''ARC'' = ANY(feature_type)","label":"Material:","layoutname":"grl_option_parameters","layoutorder":2,"selectedId":null,"value":null,"widgetname":"material","widgettype":"combo"},{"datatype":"text","isMandatory":true,"label":"Price:","layoutname":"grl_option_parameters","layoutorder":3,"placeholder":"","selectedId":null,"tooltip":"Code of removal material price","value":null,"widgetname":"price","widgettype":"linetext"},{"datatype":"text","isMandatory":true,"label":"Observ:","layoutname":"grl_option_parameters","layoutorder":4,"placeholder":"","selectedId":null,"tooltip":"Descriptive text for removal (it apears on psector_x_other observ)","value":null,"widgetname":"observ","widgettype":"linetext"}]') +) AS v(id, text) +WHERE t.id = v.id; \ No newline at end of file diff --git a/dbmodel/schemas/addon/utils/final_pass/i18n/en_US/dblabel.sql b/dbmodel/schemas/addon/utils/final_pass/i18n/en_US/dblabel.sql new file mode 100644 index 0000000000..e425c98f70 --- /dev/null +++ b/dbmodel/schemas/addon/utils/final_pass/i18n/en_US/dblabel.sql @@ -0,0 +1,40 @@ +/* +This file is part of Giswater +The program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. +*/ + + +SET search_path = SCHEMA_NAME, public, pg_catalog; +UPDATE sys_label AS t SET idval = v.idval FROM ( + VALUES + (1001, 'INFO'), + (1002, 'WARNING'), + (1003, 'ERROR'), + (1004, 'CRITICAL ERRORS'), + (1005, 'HINT'), + (1006, 'WARNING-403'), + (1007, 'ERROR-403'), + (1008, 'ERROR-357'), + (2000, ' '), + (2007, '-------'), + (2008, '--------'), + (2009, '---------'), + (2010, '----------'), + (2011, '-----------'), + (2014, '--------------'), + (2022, '----------------------'), + (2025, '-------------------------'), + (2030, '------------------------------'), + (2049, '-------------------------------------------------'), + (3001, 'INFO'), + (3002, 'WARNINGS'), + (3003, 'ERRORS'), + (3006, 'ARC DIVIDE = TRUE'), + (3008, 'ARC DIVIDE = FALSE'), + (3009, 'RESUME'), + (3010, 'CHECK SYSTEM'), + (3011, 'CHECK DB DATA'), + (3012, 'DETAILS'), + (3013, 'To check CRITICAL ERRORS or WARNINGS, execute a query FROM anl_table WHERE fid=error number AND current_user. For example: SELECT * FROM MySchema.anl_arc WHERE fid = Myfid AND cur_user=current_user; Only the errors with anl_table next to the number can be checked this way. Using Giswater Toolbox it''s also posible to check these errors.') +) AS v(id, idval) +WHERE t.id = v.id; \ No newline at end of file diff --git a/dbmodel/schemas/addon/utils/final_pass/i18n/en_US/dbmessage.sql b/dbmodel/schemas/addon/utils/final_pass/i18n/en_US/dbmessage.sql new file mode 100644 index 0000000000..ad5ef9b2cc --- /dev/null +++ b/dbmodel/schemas/addon/utils/final_pass/i18n/en_US/dbmessage.sql @@ -0,0 +1,826 @@ +/* +This file is part of Giswater +The program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. +*/ + + +SET search_path = SCHEMA_NAME, public, pg_catalog; +UPDATE sys_message AS t SET error_message = v.error_message, hint_message = v.hint_message FROM ( + VALUES + (3012, 'The position value is bigger than the full length of the arc. ', 'Please review your data.'), + (3014, 'The position id is not node_1 or node_2 of selected arc', 'Please review your data.'), + (3178, 'It is no possible to relate planned connec/gully over planned connec/gully wich not are on same psector. %debugmsg%', NULL), + (3180, 'You are trying to modify some network element with related connects (connec / gully) on psector not selected. %psector_id%', 'Please activate the psector before!'), + (3182, 'It is not allowed to downgrade (state=0) on psector tables for planned features (state=2). Planned features only must have state=1 on psector', 'If you are looking for unlink it, please remove it from psector. If feature only belongs to this psector, and you are looking to unlink it, you will need to delete from ve_* or v_edit_* or use end feature tool.'), + (3194, 'It is not possible to downgrade connec because has operative hydrometer associated %feature_id%', 'It is not present on a table'), + (3206, 'This gully has an associated link', 'Remove the associated link and arc_id field will be set to null'), + (3214, 'It''s impossible to downgrade the state of a planned gully', 'To unlink it from psector remove row or delete gully'), + (3216, 'It''s impossible to update arc_id from psector dialog because this planned link has not arc as exit-type', 'Use gully dialog to update it'), + (3262, 'The column gully_type is mandatory. Please check your cat_feature_gully and choose one', NULL), + (3698, 'The table chosen does not fit with any epa dscenario. Please try another one.', NULL), + (3702, 'New scenario type %v_type% with name ''%v_name%'' and id ''%v_scenarioid%'' have been created.', NULL), + (3704, 'INFO: %v_count% features have been inserted on table %v_targettable%.', NULL), + (3880, 'ERROR: The dwf scenario already exists with proposed name (%v_idval%). Please try another one.', NULL), + (3882, 'Id_val: %v_idval%', NULL), + (3884, 'Descript: %v_startdate%', NULL), + (3886, 'Parent: %v_enddate%', NULL), + (3888, 'Type: %v_observ%', NULL), + (3890, 'active: %v_active%', NULL), + (3892, 'Expl_id: %v_expl_id%', NULL), + (3894, 'The new dscenario (%v_scenarioid%) have been created sucessfully', NULL), + (3896, 'The new dscenario is now your current DWF scenario', NULL), + (3898, 'Dwf scenario named "%v_idval%" created with values from Dwf scenario ( %v_copyfrom% ).', NULL), + (3900, 'Copied values from Dwf scenario ( %v_copyfrom% ) to new Dwf scenario ( %v_scenarioid% ).', NULL), + (3960, 'There are no arcs with both values of y and elev inserted.', NULL), + (3962, 'There are %v_count% arcs with both values of y and elev inserted.', NULL), + (3964, 'There are no intersected arcs.', NULL), + (3966, 'There are %v_count% intersected arcs.', NULL), + (3968, 'The analysis have been executed skipping arcs with TRUE value on ''inverted_slope'' column', NULL), + (3970, 'If some resultant arc is really an arc with inverted slope, please set this value to TRUE', NULL), + (3972, 'The analysis have been executed skipping nodes with ''VERIFIED'' on colum verified', NULL), + (3974, 'If you are looking to remove results please set column verified with this value', NULL), + (3976, 'There are no nodes with all values of top_elev, ymax and elev inserted.', NULL), + (3978, 'There are %v_count% nodes with all values of top_elev, ymax and elev inserted.', NULL), + (3980, 'The analysis have been executed skipping nodes with ''VERIFIED'' on colum verified', NULL), + (3982, 'There are no flow regulator nodes.', NULL), + (3984, 'There are %v_count% flow regulator nodes.', NULL), + (3986, 'There are no nodes with exit arc over entry arc.', NULL), + (3988, 'There are %v_count% nodes with exit arc over entry arc.', NULL), + (3990, 'In order to execute the process you need to specify starting node_id.', NULL), + (3992, 'You can use outfalls without doing it and execute the process for the entire layer.', NULL), + (3994, 'Node %v_node_id% does''t exist in the selected layer.', NULL), + (3996, 'Choose another node to continue.', NULL), + (3998, 'There are no arcs with unconsistent sections.', NULL), + (4000, 'There are %v_count% arcs with section (geom1) bigger than the section of the following arc.', NULL), + (4002, 'There are no slope inconsistencies.', NULL), + (4004, 'There are %v_count% arcs with slope inconsistency.', NULL), + (4006, 'Result_id: %v_eparesult%', NULL), + (4008, 'WWTP outfall_id''s: %v_wwtpoutfalls%', NULL), + (4010, 'Total precipitation volume: %v_rain% 10^6 LTS', NULL), + (4012, 'Total DWF volume: %v_dwf% 10^6 LTS', NULL), + (4014, 'Total infil.losses volume: %v_inf% 10^6 LTS', NULL), + (4016, 'Total WWTP volume: %v_wwtp% 10^6 LTS', NULL), + (4020, 'Infiltration: %v_infiltration%', NULL), + (4022, 'Text: %v_text%', NULL), + (4024, 'The hydrology scenario ( %v_scenarioid% ) already exists with proposed name %v_name%. Please try another one.', NULL), + (4026, 'This new hydrology scenario is now your current scenario.', NULL), + (4028, 'Sector: %v_sector_name%', NULL), + (4030, '%v_count% row(s) have been keep from inp_%object_rec% table.', NULL), + (4032, 'No rows have been inserted on inp_%object_rec% table.', NULL), + (4034, '%v_count2% row(s) have been inserted on inp_%object_rec% table.', NULL), + (4036, '%v_count% row(s) have been removed from inp_%object_rec% table.', NULL), + (4038, '%v_count% row(s) have been inserted into inp_dwf table from v_edit_inp_junction table.', NULL), + (4040, 'Infiltration method for (%v_source_name%) and (%v_target_name%) are not the same.', NULL), + (4042, '%v_count% row(s) have been removed from inp_subcathment table.', NULL), + (4044, '%v_count% row(s) have been removed from inp_loadings table.', NULL), + (4046, '%v_count% row(s) have been removed from inp_groundwater table.', NULL), + (4048, '%v_count% row(s) have been removed from inp_coverage table.', NULL), + (4050, 'Target and source have same infiltration method.', NULL), + (4052, 'No rows have been inserted for sector %v_sector% on inp_%object_rec% table.', NULL), + (4054, '%v_count2% row(s) have been inserted for sector %v_sector% on inp_%object_rec% table.', NULL), + (4202, 'SECTOR ID: %v_sector%', NULL), + (4204, 'HYDROLOGY SCENARIO: %v_name%', NULL), + (4206, '%v_count2-v_count1% subcatchments have been updated with outlet values', NULL), + (4208, '0 subcatchments have been updated with outlet values', NULL), + (4210, 'Fluid type calculation done succesfully', NULL), + (4302, 'This DWF scenario is now your current scenario.', NULL), + (4306, 'Minimun distance used: %v_mindistance%', NULL), + (4308, 'Initial junctions: %v_count%', NULL), + (4310, 'Total junctions after process: %v_count%', NULL), + (4312, 'Source scenario: %v_sourcename%', NULL), + (4314, 'New scenario: %v_name%', NULL), + (4316, 'Hydrology scenario named (%v_name%) have been created with values from hydrology scenario (%v_sourcename%).', NULL), + (4318, 'The new hydrology scenario (%v_name%) is now your current scenario.', NULL), + (4342, 'There are %v_count% %v_feature_type%s with fluid_type equal to zero.', NULL), + (4344, 'There are %v_count% %v_feature_type%s with fluid_type different to zero.', NULL), + (4362, 'Fusion is not allowed due to inconsistent or opposite arc directions', 'Please review your arcs and ensure their directions are continuous and logical'), + (4632, 'Hydraulic performance for this result: %(100*v_performance)::numeric(12,2)% %', NULL), + (-1, 'Uncatched error', 'Open PotgreSQL log file to get more details'), + (-2, 'There is ', NULL), + (-3, 'There are ', NULL), + (1, 'Trigger INSERT', 'Inserted'), + (10, 'No class visit', NULL), + (100, 'Lot succesfully deleted', NULL), + (1002, 'Test trigger', 'Trigger test'), + (1004, 'There are no node types defined in the model', 'Define at least one'), + (1006, 'There are no node catalog values defined in the model', 'Define at least one'), + (1008, 'There are no sectors defined in the model', 'Define at least one'), + (1010, 'Feature is out of sector, feature_id: %feature_id%', 'Take a look on your map and use the approach of the sectors!'), + (1012, 'There is no dma defined in the model', 'Define at least one'), + (1014, 'Feature is out of dma, feature_id: %feature_id%', 'Take a look on your map and use the approach of the dma'), + (1016, 'It''s impossible to change node catalog', 'The new node catalog doesn''t belong to the same type as the old node catalog (node_type.type) '), + (1018, 'There are no arc types defined in the model', 'Define at least one'), + (1020, 'There are no arc catalog values defined in the model', 'Define at least one'), + (1022, 'There are no connec catalog values defined in the model', 'Define at least one'), + (1024, 'There are no grate catalog values defined in the model', 'Define at least one'), + (1026, 'Insert new arc in this table is not allowed', 'To insert new arc, use layer arc in INVENTORY'), + (1028, 'Delete arcs from this table is not allowed', 'To delete arcs, use layer arc in INVENTORY'), + (1030, 'Insert a new node in this table is not allowed', 'To insert new node, use layer node INVENTORY'), + (1032, 'Delete nodes from this table is not allowed', 'To delete nodes, use layer node in INVENTORY'), + (1034, 'Insert a new valve in this table is not allowed', 'To insert a new valve, use layer ndoe in INVENTORY'), + (1036, 'There are columns in this table not allowed to edit', 'Try to update open, accesibility, broken, mincut_anl or hydraulic_anl'), + (1038, 'Delete valves from this table is not allowed', 'To delete valves, use layer node in INVENTORY'), + (1040, 'One or more arcs has the same node as Node1 and Node2. Node_id: %node_id%', 'Check your project or modify the configuration properties'), + (1042, 'One or more arcs was not inserted/updated because it has not start/end node. Arc_id: %arc_id%', 'Check your project or modify the configuration properties.'), + (1044, 'Exists one o more connecs closer than configured minimum distance, connec_id: %connec_id%', 'Check your project or modify the configuration properties (config.connec_proximity).'), + (1046, 'Exists one o more nodes closer than configured minimum distance, node_id: %node_id%', 'Check your project or modify the configuration properties (config.node_proximity).'), + (1048, 'Elev is not an updatable column', 'Please use top_elev or ymax to modify this value'), + (1050, 'It''s impossible to divide an arc with state=(0)', 'To divide an arc, the state has to be 1'), + (1052, 'It''s impossible to divide an arc using node that has state=(0)', 'To divide an arc, the state of the node has to be 1'), + (1054, 'It''is impossible to divide an arc with state=(1) using a node with state=(2)', 'To divide an arc, the state of the used node has to be 1'), + (1056, 'There is at least one arc attached to the deleted feature. (num. arc,feature_id) = %num_arc%, %feature_id%', 'Review your data. The deleted feature can''t have any arcs attached.'), + (1058, 'There is at least one element attached to the deleted feature. (num. element,feature_id) = %num_element%, %feature_id%', 'Review your data. The deleted feature can''t have any elements attached.'), + (1060, 'There is at least one document attached to the deleted feature. (num. document,feature_id) = %num_document%, %feature_id%', 'Review your data. The deleted feature can''t have any documents attached.'), + (1062, 'There is at least one visit attached to the deleted feature. (num. visit,feature_id) = %num_visit%, %feature_id%', 'Review your data. The deleted feature can''t have any visits attached.'), + (1064, 'There is at least one link attached to the deleted feature. (num. link,feature_id) = %num_link%, %feature_id%', 'Review your data. The deleted feature can''t have any links attached.'), + (1066, 'There is at least one connec attached to the deleted feature. (num. connec,feature_id) = %num_connec%, %feature_id%', 'Review your data. The deleted feature can''t have any connecs attached.'), + (1068, 'There is at least one gully attached to the deleted feature. (num. gully,feature_id)= %num_gully%, %feature_id%', 'Review your data. The deleted feature can''t have any gullies attached.'), + (1070, 'The feature can''t be replaced, because it''s state is different than 1. State = %state_id%', 'To replace a feature, it must have state = 1'), + (1072, 'Before downgrading the node to state 0, disconnect the associated features, node_id: %node_id%', NULL), + (1074, 'Before downgrading the arc to state 0, disconnect the associated features, arc_id: %arc_id%', NULL), + (1076, 'Before downgrading the connec to state 0, disconnect the associated features, connec_id: %connec_id%', NULL), + (1078, 'Before downgrading the gully to state 0, disconnect the associated features, gully_id: %gully_id%', NULL), + (1080, 'You don''t have permissions to manage with psector', 'Please check if your profile has role_plan in order to manage with plan issues'), + (1081, 'There are not psectors defined on the project', 'You need to have at least one psector created to add planified elements'), + (1082, 'Nonexistent arc_id: %arc_id%', NULL), + (1083, 'Please configure your own psector vdefault variable', 'To work with planified elements it is mandatory to have always defined the work psector using the psector vdefault variable'), + (1084, 'Nonexistent node_id: %node_id%', NULL), + (1086, 'You must choose a connec catalog value for this feature', 'Connecat_id is required. Fill the table cat_connec or use a default value'), + (1088, 'Connec catalog is different than connec type', 'Use a connec type defined in connec catalogs'), + (1090, 'You must choose a node catalog value for this feature', 'Nodecat_id is required. Fill the table cat_node or use a default value'), + (1092, 'Your default value catalog is not enabled using the node type choosed', 'You must use a node type defined in node catalogs'), + (1094, 'Your catalog is different than node type', 'You must use a node type defined in node catalogs'), + (1096, 'Node with state 2 over another node with state=2 on same alternative it is not allowed. The node is: %node_id%', 'Review your project data.It''s not possible to have more than one nodes with the same state at the same position.'), + (1097, 'It is not allowed to insert/update one node with state(1) over another one with state (1) also. The node is: %node_id%', 'Please ckeck it'), + (1098, 'It''s not allowe to have node with state(1) or(2) over one existing node with state(1)', 'Use the button replace node. It''s not possible to have more than one nodes with the same state at the same position'), + (1100, 'It is not allowed to insert/update one node with state (2) over another one with state (2). The node is: %node_id%', 'Review your data. It''s not possible to have more than one node with the same state at the same position.'), + (1101, 'INFO: Deactivated node proximity check.', NULL), + (1102, 'Insert is not allowed. There is no hydrometer_id on ..', NULL), + (1103, 'CONNECT TO NETWORK', NULL), + (1104, 'Update is not allowed ..', NULL), + (1105, '-------------------------------------------------------------', NULL), + (1106, 'Delete is not allowed. There is hydrometer_id on ..', NULL), + (1107, 'Trying to connect %feature_type% with id %connect_id% to an arc with a diameter smaller than %check_arcdnom% and at maximum distance of %max_distance% meters.', NULL), + (1108, 'Delete is not allowed. There is hydrometer_id on ..', NULL), + (1109, 'Trying to connect %feature_type% with id %connect_id% to an arc at maximum ditance of %max_distance% meters.', NULL), + (1110, 'There are no exploitations defined in the model', 'Define at least one'), + (1111, 'Trying to connect %feature_type% with id %connect_id%.', NULL), + (1113, 'FAILED: Link not created because connect %connect__id% is over arc %arc_id%', NULL), + (1115, 'Create new link connected to the closest arc with the appropriate conditions.', NULL), + (1117, 'Create new link connected to the selected arc: %arc_id%.', NULL), + (1119, 'Create new link connected to the closest arc.', NULL), + (1121, 'Creating new link by using geometry of existing one.', NULL), + (1123, 'Reverse the direction of drawn link.', NULL), + (2, 'Trigger UPDATE', 'Updated'), + (20, 'sucessfully deleted', NULL), + (2002, 'Node not found', 'Please check table node'), + (2004, 'It is impossible to use the node to fusion two arcs', 'Pipes have different types'), + (2006, 'It is impossible to use the node to fusion two arcs', 'Node doesn''t have 2 arcs'), + (2008, 'Arc not found', 'Please check table arc'), + (2010, 'There are no values on the cat_element table', 'Elementcat_id is required. Insert values into cat_element table or use a default value'), + (2012, 'Feature is out of exploitation, feature_id: %feature_id%', 'Take a look on your map and use the approach of the exploitations!'), + (2014, 'You need to connec the link to one connec/gully', 'Links must be connected to ohter elements'), + (2015, 'There is no state-1 feature as endpoint of link. It is impossible to create it', 'Try to connect the link to one arc / node / connec / gully or vnode with state=1'), + (2016, 'It''s not enabled to modify the start/end point of link', 'If you want to reconnect the features, delete this link and draw a new one'), + (2018, 'At least one of the extremal nodes of the arc is not present on the alternative updated. The planified network has losed the topology', NULL), + (2020, 'One or more vnodes are closer than configured minimum distance', 'Check your project or modify the configuration properties (config.node_proximity).'), + (2022, '(arc_id, geom type) = %arc_id%, %geom_type%', NULL), + (2024, 'Feature is out of any municipality,feature_id:', 'Please review your data'), + (2026, 'There are conflicts against another planified mincut', 'Please review your data'), + (2028, 'The feature does not have state(1) value to be replaced, state = %state_id%', 'The feature must have state 1 to be replaced'), + (2030, 'The feature not have state(2) value to be replaced, state = %state_id%', 'The feature must have state 2 to be replaced'), + (2032, 'Please, fill the node catalog value or configure it with the value default parameter', NULL), + (2034, 'Your catalog is different than node type', 'Your data must be in the node catalog too'), + (2036, 'It is impossible to validate the arc without assigning value of arccat_id, arc_id: %arc_id%', 'Please assign an arccat_id value'), + (2038, 'The exit arc must be reversed. Arc = %arc_id%', NULL), + (2040, 'Reduced geometry is not a Linestring, (arc_id,geom type)= %arc_id%, %geom_type%', NULL), + (2042, 'Dma is not into the defined exploitation. Please review your data', 'The element must be inside the dma which is related to the defined exploitation'), + (2044, 'Presszone is not into the defined exploitation. Please review your data', 'The element must be inside the press zone which is related to the defined exploitation'), + (2046, 'State type is not a value of the defined state. Please review your data', 'State type must be related to states'), + (2048, 'Polygon not related with any gully', 'Insert gully_id in order to assign the polygon geometry to the feature'), + (2050, 'The provided gully_id doesn''t exist', 'Look for another gully_id'), + (2052, 'Polygon not related with any node', 'Insert node_id in order to assign the polygon geometry to the feature'), + (2054, 'It is not possible to relate this geometry to any node', 'The node must be type ''NETGULLY'' (system type).'), + (2056, 'It is not possible to relate this geometry to any node', 'The node must be type ''STORAGE'' (system type).'), + (2058, 'It is not possible to relate this geometry to any node', 'The node must be type ''CHAMBER'' (system type).'), + (2060, 'It is not possible to relate this geometry to any node', 'The node must be type ''WWTP'' (system type).'), + (2062, 'The provided node_id doesn''t exist as a ''NETGULLY'' (system type)', 'Look for another node'), + (2064, 'The provided node_id doesn''t exist as a ''STORAGE'' (system type)', 'Look for another node'), + (2066, 'The provided node_id don''t exists as a ''CHAMBER'' (system type)', 'Please look for another node'), + (2068, 'The provided node_id don''t exists as a ''WWTP'' (system type)', 'Please look for another node'), + (2070, 'You need to set a value of to_arc column before continue', NULL), + (2072, 'You need to set to_arc/node_id values with topologic coherency', 'Node_id must be the node_1 of the exit arc feature'), + (2074, 'You must define the length of the flow regulator', NULL), + (2076, 'Flow length is longer than length of exit arc feature', 'Please review your project'), + (2078, 'Query text = %query_text%', NULL), + (2080, 'The x value is too large. The total length of the line is %line_length%', NULL), + (2082, 'The extension does not exists. Extension = %extension%', NULL), + (2084, 'The module does not exists. Module = %module%', NULL), + (2086, 'There are null values on the [id] column of csv. Check it', NULL), + (2088, 'There are [units] values nulls or not defined on price_value_unit table = %units%', 'Please fill it before to continue'), + (2090, 'There are null [descript] values on the imported csv', 'Please complete it before to continue'), + (2092, 'There are null values on the [price] column of csv', 'Please check it before continue'), + (2094, 'Please, assign one connec to relate this polygon geometry', NULL), + (2096, 'It is not possible to relate this geometry to any connec', 'The connec must be type ''FOUNTAIN'' (system type).'), + (2098, 'The provided connec_id doesn''t exist as a ''FOUNTAIN'' (system type)', 'Look for another connec'), + (2100, 'It is not possible to relate this geometry to any node', 'The node must be type ''REGISTER'' (system type).'), + (2102, 'It is not possible to relate this geometry to any node', 'The node must be type ''TANK'' (system type).'), + (2104, 'The provided node_id doesn''t exist as a ''REGISTER'' (system type)', 'Look for another node'), + (2106, 'The provided node_id doesn''t exist as a ''TANK'' (system type)', 'Look for another node'), + (2108, 'There is at least one node attached to the deleted feature. (num. node,feature_id)= %num_node%, %feature_id%', 'Review your data. The deleted feature can''t have any nodes attached.'), + (2110, 'Define at least one value of state_type with state=0', NULL), + (2120, 'There is an inconsistency between node and arc state', NULL), + (2122, 'Arc not found on insertion process', NULL), + (3, 'Trigger DELETE', 'Deleted'), + (30, 'does not exists, impossible to delete it', NULL), + (3002, 'The selected arc has state=0 (num. node,feature_id)= %element_id%', 'Please, select another one In order to use mincut, we recommend to disable network state=0.'), + (3004, 'The selected arc has state=0 (num. node,feature_id)=', 'Please, select another one In order to use mincut, we recommend to disable network state=0.'), + (3006, 'There are one or more arc(s) with null nodes. Mincut is broken', 'Please review your data'), + (3008, 'The values of addfields are different for both arcs', 'Review your data to make them equal.'), + (3010, 'The minimum arc length of this exportation is: %min_arc_length%', 'This length is less than nod2arc parameter. You need to update config.node2arc parameter to value less than it.'), + (3016, 'New field overlaps the existing one', 'Modify the order value.'), + (3018, 'Customer code is duplicated for connecs with state=1', 'Review your data.'), + (3022, 'The inserted value is not present in a catalog. %catalog%', 'Add it to the corresponding typevalue table in order to use it.'), + (3024, 'Can''t delete the parameter. There is at least one event related to it', NULL), + (3026, 'Can''t delete the class. There is at least one visit related to it', 'The class will be set to unactive.'), + (3028, 'Can''t modify typevalue: %typevalue%', 'It''s impossible to change system values.'), + (3030, 'Can''t delete typevalue: %typevalue%', 'It''s being used in a table.'), + (3032, 'Can''t apply the foreign key %typevalue_name%', 'there are values already inserted that are not present in the catalog'), + (3034, 'Inventory state and state type of planified features has been updated', NULL), + (3036, 'Selected state type doesn''t correspond with state %state_id%', 'Modify the value of state or state type.'), + (3038, 'Inserted value has unaccepted characters: %characters%', 'Don''t use accents, dots or dashes in the id and child view name'), + (3040, 'User with this name already exists', NULL), + (3042, 'Arc with state 2 cant be divided by node with state 1', 'To divide an arc, the state of the node has to be the same'), + (3044, 'Can''t detect any arc to divide', NULL), + (3046, 'Selected node type doesn''t divide arc. Node type: %node_type%', NULL), + (3048, 'Flow length is longer than length of exit arc feature', 'Please review your project!'), + (3050, 'It is not possible to relate connects with state=1 to arcs with state=2', 'Please check your map'), + (3052, 'Connect2network tool is not enabled for connec''s with state=2. Connec_id: %connec_id%', 'For planned connec''s you must create the link manually (one link for each alternative and one connec) by using the psector form and relate the connec using the arc_id field. After that you will be able to customize the link''s geometry.'), + (3054, 'Connect2network tool is not enabled for gullies with state=2. Gully_id: %gully_id%', 'For planned gullies you must create the link manually (one link for each alternative and one gully) by using the psector form and relate the gully using the arc_id field. After that you will be able to customize the link''s geometry.'), + (3056, 'It is impossible to validate the arc without assigning value of arccat_id. Arc_id: %arc_id%', NULL), + (3058, 'It is impossible to validate the connec without assigning value of connecat_id. Connec_id: %connec_id%', NULL), + (3060, 'It is impossible to validate the node without assigning value of nodecat_id. Node_id: %node_id%', NULL), + (3062, 'Selected gratecat_id has NULL width or length. Gratecat_id: %gratecat_id%', 'Check grate catalog or your custom config values before continue'), + (3064, 'There is a pattern with same name on inp_pattern table', 'Please check before continue.'), + (3066, 'The dma and period don''t exists yet on dma-period table (ext_rtc_scada_dma_period). It means there are no values for that dma or for that CRM period into GIS', 'Please check it before continue.'), + (3068, 'The dma/period defined on the dma-period table (ext_rtc_scada_dma_period) has a pattern_id defined', 'Please check it before continue.'), + (3070, 'Link needs one connec/gully feature as start point. Geometry have been checked and there is no connec/gully feature as start/end point', NULL), + (3072, 'It is not possible to connect link closer than 0.25 meters from nod2arc features in order to prevent conflits if this node may be a nod2arc', 'Please check it before continue'), + (3074, 'It is mandatory to connect as init point one connec or gully with link', NULL), + (3076, 'It is not possible to create the link. On inventory mode only one link is enabled for each connec. Connec_id: %connec_id%', 'In order to relate link with psector use psector dialog or link2network button. you can''t draw in on link layer'), + (3078, 'It is not possible to create the link. On inventory mode only one link is enabled for each gully. Gully_id: %gully_id%', 'On planning mode it is possible to create more than one link, one for each alternative, but it is mandatory to use the psector form and relate gully using arc_id field. After that you will be able to customize the link''s geometry.'), + (3080, 'It is not possible to relate connect with state=1 over network feature with state=2, connect: %connec_id%', 'Choose another end feature element with operative state (1).'), + (3082, 'The psector strategy is limited to only one psector when connect is related to not VNODE exit_type (link_class = 2). If you like to manage diferent psector with this connect, please use VNODE as exit_type feature', 'You can''t have two links related to the same feature (connec/gully) in one psector'), + (3084, 'It is not enabled to insert vnodes. if you are looking to join links you can use vconnec to join it', 'You can create vconnec feature and simbolyze it as vnodes. By using vconnec as vnodes you will have all features in terms of propagation of arc_id'), + (3086, 'It is not enabled to update vnodes', 'If you are looking to update endpoint of links use the link''s layer to do it'), + (3088, 'It is not enabled to delete vnodes', 'Vnode will be automaticly deleted when link connected to vnode disappears'), + (3090, 'Please enter a valid graphClass', NULL), + (3092, 'Only arc is available as input feature to execute mincut', NULL), + (3094, 'One of new arcs has no length', 'The selected node may be its final.'), + (3096, 'If widgettype=typeahead, isautoupdate must be FALSE', NULL), + (3098, 'If widgettype=typeahead and dv_querytext_filterc is not null dv_parent_id must be combo', NULL), + (3100, 'If widgettype=typeahead, id and idval for dv_querytext expression must be the same field', NULL), + (3102, 'If dv_querytext_filterc is not null dv_parent_id is mandatory', NULL), + (3104, 'When dv_querytext_filterc, dv_parent_id must be a valid column for this form. Please check form because there is not column_id with this name', NULL), + (3106, 'There is no presszone defined in the model', NULL), + (3108, 'Feature is out of any presszone, feature_id: %feature_id%', NULL), + (3110, 'There is no municipality defined in the model', NULL), + (3112, 'No class visit', NULL), + (3114, 'sucessfully deleted', NULL), + (3116, '%id% does not exists, impossible to delete it', NULL), + (3118, 'sucessfully inserted', NULL), + (3120, 'sucessfully updated', NULL), + (3122, 'Visit class have been changed. Previous data have been deleted', NULL), + (3124, 'Visit manager have been initialized', NULL), + (3126, 'Visit manager have been finished', NULL), + (3128, 'Lot succesfully saved', NULL), + (3130, 'Lot succesfully deleted', NULL), + (3132, 'Schema defined does not exists. Check your qgis project variable gwAddSchema', NULL), + (3134, 'There''s no default value for Obsolete state_type', 'You need to define one default value for Obsolete state_type'), + (3136, 'There''s no default value for On Service state_type', 'You need to define one default value for On Service state_type'), + (3138, 'Before use connec on planified mode you need to create a related link', NULL), + (3140, 'Node is connected to arc which is involved in psector %psector_list%', 'Try replacing node with feature replace tool or disconnect it using end feature tool'), + (3142, 'Node is involved in psector %psector_list%', 'It''s used as init or final node on planified arcs'), + (3144, 'Exploitation of the feature is different than the one of the related arc. Arc_id: %arc_id%', 'Both features should have the same exploitation.'), + (3146, 'Backup name is missing', 'Insert value in key backupName'), + (3148, 'Backup name already exists %backup_name%', 'Try with other name or delete the existing one before'), + (3150, 'Backup has no data related to table %table_name%', 'Please check it before continue'), + (3152, 'Null values on geom1 or geom2 fields on element catalog %elementcat_id%', 'Please check it before continue'), + (3154, 'It is not possible to add this connec to psector because it is related to node', 'Move endpoint of link closer than 0.01m to relate it to parent arc'), + (3156, 'Input parameter has null value %table_name%', 'Please check it before continue'), + (3158, 'Value of the function variable is null', 'Please check it before continue'), + (3160, 'This feature with state = 2 is only attached to one psector %psector_id%', 'If you are looking to unlink from this psector, it is necessary to remove it from ve_* or v_edit_* or using end feature tool.'), + (3162, 'This feature is a final node for planned arc ', 'It''s necessary to remove arcs first, then nodes'), + (3164, 'Arc have incorrectly defined final nodes in this plan alternative', 'Make sure that arcs finales are on service or check by using toolbox function Check plan data (fid= 355)'), + (3166, 'Id value for this catalog already exists %value%', 'Look for it in the proposed values or set a new id'), + (3168, 'Before set isparent=TRUE, other field has to have related dv_parent_id', NULL), + (3170, 'Before delete dv_parent_id, you must set isparent=FALSE to the parent field', NULL), + (3172, 'Value inserted into field featurecat_id is not defined in a table cat_feature', 'Please check it before continue'), + (3174, 'No valve has been choosen', 'You can continue by clicking on more valves or finish the process by clicking again on Change Valve Status'), + (3176, 'Change valve status done successfully', 'You can continue by clicking on more valves or finish the process by executing Refresh Mincut'), + (3184, 'There is at least one hydrometer related to the feature', 'Connec with state=0 can''t have any hydrometers state=1 attached.'), + (3186, 'Workspace is being used by some user and can not be deleted', NULL), + (3188, 'Workspace name already exists', 'Please set a new one or delete existing workspace'), + (3190, 'There are no nodes defined as arcs finals', 'First insert csv file with nodes definition'), + (3192, 'It is not possible to connect on service arc with a planified node', 'Reconnect arc with node state 1'), + (3196, 'Shortcut key is already defined for another feature %shortcut%', 'Change it before uploading configuration'), + (3198, 'Field defined as target for DEM data is not related to elevation', 'Configure correctly parameter admin_raster_dem on config_param_system table or using configuration button'), + (3200, 'Workspace is not editable you can''t modify it nor delete it', NULL), + (3202, 'It''s not possible to break planned arcs by using operative nodes %arc_id%', 'Try it using planned nodes'), + (3204, 'This connec has an associated link', 'Remove the associated link and arc_id field will be set to null'), + (3208, 'This connec has an associated link', 'Remove the associated link and arc_id field will be set to null'), + (3210, 'It''s impossible to downgrade the state of a planned connec', 'To unlink, remove from psector dialog or delete it'), + (3212, 'IT iS IMPOSSIBLE TO UPDATE ARC_ID FROM PSECTOR DIALOG BECAUSE THIS PLANNED LINK HAS NOT ARC AS EXIT-TYPE', 'TO UPDATE IT USE ARC_ID CONNECT(CONNEC or GULLY) DIALOG OR EDIT THE ENDPOINT OF LINK''S GEOMETRY ON CANVAS'), + (3218, 'It''s impossible to attach operative link to planned feature', 'Set link''s state to planned to continue'), + (3220, 'It''s impossible to change link''s state to operative, because it''s related to a planned feature', NULL), + (3222, 'It''s impossible to upgrade link', 'In order to work with planned link, create new one by drawing it on link layer, using link2network button or feature/psector dialogs (setting arc_id)'), + (3224, 'It''s impossible to create a planned link for operative feature (connec/gully)', 'If you are working on psector, use link2network button or feature/psector dialogs(setting arc_id) and then modify it'), + (3226, 'It''s impossible to downgrade link', 'If you want to remove it from psector, delete it'), + (3228, 'It is not possible to insert arc into psector because has operative connects associated', 'You need to previously insert related connects into psector'), + (3230, 'Inserted feature_id does not exist on node/connec table %feature_id%', 'Review your data'), + (3232, 'It''s not possible to connect to this arc because it exceed the maximum diameter configured: %diameter%', 'Connect to a smaller arc or change system configuration'), + (3234, 'The inserted feature has a diferent exploitation than the psector', 'Only features with the same exploitation as the psector are allowed'), + (3236, 'It''s not possible to upsert the arc because node_1 and node_2 belong to different mapzones. %zone%', 'check it before continue'), + (3242, 'It''s not possible to configure this node as mapzone header, because it''s not an operative nor planified node %zone%', 'Select different parent node.'), + (3244, 'It''s not possible to use selected arcs. They are not connected to node parent %nodeparent%', 'Select different arc.'), + (3246, 'The inserted streetname value doesn''t exist on ext_streetaxis table', 'Please insert an existing one'), + (3250, 'Value 0 for exploitation it is not enabled on network objects. It is only used to relate undefined mapzones', NULL), + (3252, 'There is no subcatchment or outlet_id nearby', 'Place the line inside a subcatchment or use the snapping tool to set an outlet_id for the subcatchment.'), + (3254, 'It is not possible to upgrade the arc to state planified because it has operative connecs associated', NULL), + (3256, 'It is not possible to upgrade the arc to state planified because it has operative gullies associated', NULL), + (3258, 'It is not possible to upgrade the node to state planified because node has operative arcs associated', NULL), + (3260, 'No arc exists with a smaller diameter than the maximum configuered on edit_link_check_arcdnom: %edit_link_check_arcdnom%', 'Please check the configured value'), + (3264, 'Wrong configuration. Check config_form_fields on column widgetcontrol key ''reloadfields'' for columnname: %parentname%', NULL), + (3266, 'Selected epa_type cannot be used in this feature', 'For valve and pump, feature type and epa type must correspond '), + (3268, 'You can not insert text values into an integer column', 'Please select the postcomplement column.'), + (3270, 'You can''t create or update a document with an empty name. Please provide a valid name', NULL), + (3272, 'The selected arc is not directly connected to the specified node. Please ensure the arc is directly linked to the node and select one that meets this requirement', 'Select one arc that is connected to the selected node'), + (3274, 'There isn''t any node configured on config_graph_mincut for the selected macroexploitation', 'Fill config_graph_mincut with the inlets before executing the mincut'), + (3276, 'Some exploitation ids don''t exist', 'Insert exploitation ids that exist'), + (3278, 'Some municipality ids don''t exist', 'Insert municipality ids that exist'), + (3280, 'Some sector ids don''t exist', 'Insert sector ids that exist'), + (3282, 'The inserted catalog value does not exist --> %catalog_value%', 'Please review and insert it into the related catalog table'), + (3284, 'Cannot do this operation because the lock level is set to %lock_level%', 'Please review the lock level'), + (3286, 'arc_id column cannot be modified when state = 0 on plan_psector %psector_id%.', NULL), + (3288, 'Replace feature done successfully', NULL), + (3290, '%v_count% operative connec(s) have been reconnected', NULL), + (3292, '%v_count% planned connec(s) have been reconnected', NULL), + (3294, '%v_count% operative gully(s) have been reconnected', NULL), + (3296, '%v_count% planned gully(s) have been reconnected', NULL), + (3298, '%v_count% operative/planned links(s) have been reconnected', NULL), + (3300, 'Replace node id in %v_count% psector', NULL), + (3302, 'Downgraded old feature %v_old_id% SETTING state: 0, workcat_id_end: %v_workcat_id_end%, enddate: %v_enddate%.', NULL), + (3304, 'Update new feature, set state: 1, workcat_id: %v_workcat_id_end% builtdate: %v_enddate%.', NULL), + (3306, 'Common values from old feature have been updated on new feature.', NULL), + (3308, 'New feature %v_id% inserted into connec table.', NULL), + (3310, 'New feature %v_id% inserted into gully table.', NULL), + (3312, 'Assign old data from %rec_addfields.column_name% addfield to the new feature.', NULL), + (3314, 'Reconnect arc %rec_arc.arc_id%.', NULL), + (3316, 'Reconnect connec %rec_connec.connec_id%.', NULL), + (3318, 'New feature %v_id% inserted into arc table.', NULL), + (3320, 'Node_2 is a delimiter of a mapzone if arc was defined as toArc it has been reconfigured with new arc_id.', NULL), + (3322, 'Node_1 is a delimiter of a mapzone if arc was defined as toArc it has been reconfigured with new arc_id.', NULL), + (3324, 'Some of the parameters on %trigger% are not valid', NULL), + (3326, 'Some values on %array_column% don''t exist in %id_table% . %id_column%', NULL), + (3328, 'Cannot delete register because it has reference on other tables', NULL), + (3332, 'New node is a delimiter of a different mapzone type than the old node. New mapzone delimiter and old mapzone delimiter needs to be configured.', NULL), + (3334, 'New node is a delimiter of a mapzone that needs to be configured.', NULL), + (3336, 'New node is not a delimiter of a mapzone. Configuration for old node need to be removed.', NULL), + (3338, 'New node and old node are delimiters of the same mapzone. Configuration will be updated.', NULL), + (3340, 'Reconnect arc %rec_arc.arc_id%.', NULL), + (3342, 'Reconnect %v_count% links.', NULL), + (3344, 'Assign %v_count% elements to the new feature.', NULL), + (3346, 'New feature (%v_id%) inserted into node table.', NULL), + (3348, 'Divide arc %v_arc_id%.', NULL), + (3350, 'Insert new arcs into arc table.', NULL), + (3352, 'Insert new arcs into man and epa table.', NULL), + (3354, 'Copy values from old arc: %v_arc_id% to the new arcs: (%rec_aux1.arc_id%, %rec_aux2.arc_id%).', NULL), + (3356, 'Update arc_id for disconnected node: %rec_node.node_id%.', NULL), + (3358, 'Copy %v_count% elements from old to new arcs.', NULL), + (3360, 'Copy %v_count% documents from old to new arcs.', NULL), + (3362, 'Copy %v_count% visits from old to new arcs.', NULL), + (3364, 'New node is a delimiter of a mapzone that needs to be configured.', NULL), + (3366, 'Node_1 is a delimiter of a mapzone if old arc was defined as toArc it has been reconfigured with new arc_id.', NULL), + (3368, 'Node_2 is a delimiter of a mapzone if old arc was defined as toArc it has been reconfigured with new arc_id.', NULL), + (3370, 'Set old arc to obsolete: %v_arc_id%.', NULL), + (3372, 'Fusion arcs using node: %v_exists_node_id% .', NULL), + (3374, 'Arcs related to selected node have been removed: %arc_id1% , %arc_id2% .', NULL), + (3376, 'New arc have been inserted: %arc_id% .', NULL), + (3378, 'Copy values for addfield: %column_name% to the new arc.', NULL), + (3380, 'Reconnect: %v_count% nodes.', NULL), + (3382, 'Delete old arc: %v_arc_id%.', NULL), + (3384, 'Arc with state =1, node with state = 2.', NULL), + (3386, 'Arc and node have both state = 2.', NULL), + (3388, 'Insert new arcs into arc table.', NULL), + (3390, 'Insert new arcs into man and epa table.', NULL), + (3392, 'Update values of arcs node_1 and node_2.', NULL), + (3394, 'Copy values from old arc: %v_arc_id% to the new arcs: (%rec_aux1.arc_id%, %rec_aux2.arc_id%).', NULL), + (3396, 'Copy elements is not avaliable from old arc to new arc when node.state = 2', NULL), + (3398, 'Copy documents is not avaliable from old arc to new arcs when node.state = 2', NULL), + (3400, 'Copy visits is not avaliable from old arc to new arcs when node.state = 2', NULL), + (3402, 'Reconnect disconnected nodes on this alternative', NULL), + (3404, 'Update arc_id for disconnected node: %rec_node.node_id%.', NULL), + (3406, 'Update psector''s arc_id value for connec and gully setting null value to force trigger to get new arc_id as closest as possible', NULL), + (3408, 'Update psector_x_arc as doable for fictitious arcs.', NULL), + (3410, 'Insert old arc as downgraded into current psector: %v_psector%.', NULL), + (3412, 'Set values on plan_psector_x_arc addparam.', NULL), + (3414, 'Arc divide done successfully', NULL), + (3416, 'Update values of arcs node_1 and node_2.', NULL), + (3418, '%v_count% additional element(s) related to the downgraded node (%v_feature_id_value%) was/were also related to another operative feature(s) (element_id: %v_element_id%)', NULL), + (3420, '%v_count_feature% node(s) have been downgraded', NULL), + (3422, '%v_count% additional element(s) related to the downgraded connec (%v_feature_id_value%) was/were also related to another operative feature(s) (element_id:%v_element_id%)', NULL), + (3424, '%v_count_feature% connec(s) have been downgraded', NULL), + (3426, '%v_count_feature% additional element(s) related to the downgraded gully (%v_feature_id_value%) was/were also related to another operative feature(s) (element_id:%v_element_id%)', NULL), + (3428, '%v_count_feature% gully(s) have been downgraded', NULL), + (3430, 'Process done successfully', NULL), + (3432, '%v_count% additional element(s) related to the downgraded arc (%v_feature_id_value%) was/were also related to another operative feature(s) (element_id: %v_element_id%)', NULL), + (3434, '%v_count_feature% arc(s) have been downgraded', NULL), + (3436, 'Number of disconnected elements: %v_count%', NULL), + (3438, 'Number of disconnected visits: %v_count%', NULL), + (3440, 'Reconnect operative: %v_count% connecs.', NULL), + (3442, 'Reconnect operative: %v_count% gullies.', NULL), + (3444, 'Reconnect planned: %v_count% connecs.', NULL), + (3446, 'Reconnect planned: %v_count% gullies.', NULL), + (3448, 'Copy: %v_count% elements from old arcs to new one.', NULL), + (3450, 'Copy: %v_count% documents from old arcs to new one.', NULL), + (3452, 'Copy: %v_count% visits from old arcs to new one.', NULL), + (3454, 'Change state of node: %v_node_id% to obsolete.', NULL), + (3456, 'Delete node: %v_node_id%.', NULL), + (3458, 'Delete planned node: %v_node_id%.', NULL), + (3460, 'There are: %v_count% orphan nodes related to existing arcs. Column arc_id remains with initial value.', NULL), + (3462, 'Connec: %feature_id% has been reconected with new arc_id but keeping the feature exit from initial node.', NULL), + (3464, 'Gully: %feature_id% has been reconected with new arc_id but keeping the feature exit from initial node.', NULL), + (3466, 'Reconnect operative: %v_count% connecs.', NULL), + (3470, 'Reconnect operative: %v_count% gullies.', NULL), + (3472, 'Delete arcs: %arc_id1% , %arc_id2% .', NULL), + (3474, 'Reconnect planned: %v_count% gullies.', NULL), + (3476, 'Reconnect planned: %v_count% connecs.', NULL), + (3478, 'Arc fusion done successfully', NULL), + (3480, 'Polygon connected with the feature: %v_connect_pol%', NULL), + (3482, 'Number of disconnected documents: %v_count%', NULL), + (3484, 'Number of removed scada connections: %v_count%', NULL), + (3486, 'Number of removed links: %v_count%', NULL), + (3488, 'Disconnected parent node: %v_related_id%', NULL), + (3490, 'Removed polygon: %v_related_id%', NULL), + (3492, 'Delete node: %v_feature_id%', NULL), + (3494, 'Disconnected arcs: %v_arc_id%', NULL), + (3496, 'Number of removed links related to connecs: %v_count%', NULL), + (3498, 'Disconnected connecs: %v_related_id%', NULL), + (3500, 'Disconnected nodes: %v_related_id%', NULL), + (3502, 'Number of removed links related to gullies: %v_count%', NULL), + (3504, 'Disconnected gullies: %v_related_id%', NULL), + (3506, 'Removed polygon: %v_related_id%', NULL), + (3508, 'Delete arc: %v_feature_id%', NULL), + (3510, 'Removed link: %v_related_id%', NULL), + (3512, 'Delete %v_feature_type%: %v_feature_id%', NULL), + (3516, 'Number of arcs identifed on the process: %v_count%', NULL), + (3518, 'Elements connected with the feature: %v_element%', NULL), + (3520, 'Visits connected with the feature: %v_visit%', NULL), + (3522, 'Documents connected with the feature: %v_doc%', NULL), + (3524, 'Psectors connected with the feature: %v_psector%', NULL), + (3526, 'IMPORTANT: Activate psector before deleting features.', NULL), + (3528, 'Repaired arcs: arc_id --> %arc_ids%', NULL), + (3562, 'No arcs have been selected', NULL), + (3564, 'Selection mode ''Whole selection'' is not enabled in this function', NULL), + (3566, 'Direction of %v_count% arcs has been changed.', NULL), + (3568, 'Reversed arcs: %v_array%', NULL), + (3570, 'There are no arcs with outlayers values', NULL), + (3572, 'There are %v_count% arcs with outlayers values', NULL), + (3574, 'There are no duplicated arcs.', NULL), + (3576, 'There are %v_count% duplicated arcs.', NULL), + (3578, 'There are no arcs with same start - end node.', NULL), + (3580, 'There are %v_count% arcs with same start - end nodes.', NULL), + (3582, 'There are no arcs without start/final nodes.', NULL), + (3584, 'Value of search nodes automatically set to %v_arcsearchnodes%', NULL), + (3586, 'There are %v_count_state1% arcs with state 1 without start/final nodes.', NULL), + (3588, 'There are %v_count_state2% arcs with state 2 without start/final nodes.', NULL), + (3590, 'There are no duplicated connecs.', NULL), + (3592, 'There are %v_count% duplicated connecs.', NULL), + (3598, 'There are no duplicated nodes.', NULL), + (3600, 'There are %v_count% duplicated nodes.', NULL), + (3602, 'There are no orphan nodes.', NULL), + (3604, 'There are %v_count1% orphan nodes with isarcdivide=TRUE.', NULL), + (3606, 'There are %v_count2% orphan nodes with isarcdivide=FALSE.', NULL), + (3608, 'There are no orphan nodes with isarcdivide=FALSE.', NULL), + (3610, 'There are no nodes T candidates.', NULL), + (3612, 'There are %v_count% nodes T candidates.', NULL), + (3614, 'There are %affected_rows% %v_feature_type% address values updated.', NULL), + (3616, 'This process works capturing compass values from arc in order to propagate to nodes.', NULL), + (3618, 'In case of arcs with different compass an average value is calculated.', NULL), + (3620, '%v_affectedrow% arcs have been analized and their compass values have been progagated to node rotation', NULL), + (3622, '%count% %feature_type%S have been updated, which are the following:', NULL), + (3624, 'ELEVATION UPDATED - FEATURE TYPE:%feature_type% ID: %feature_id%', NULL), + (3626, 'Intersection with feature %feature_id% has returned NULL value. Could be out of raster or some problem with algorithm', NULL), + (3628, 'There are no features with NULL elevation', NULL), + (3630, 'It is impossible to carry out the process. Your config_param_system variable for Raster DEM is in FALSE.', NULL), + (3640, 'Process failed', NULL), + (3642, 'Check your nodes id''s because there is no duplicated scenario.', NULL), + (3644, 'Value for target node is optative, If null system will try to check closest node.', NULL), + (3646, 'Removing node %v_node% -> Done', NULL), + (3648, 'Duplicated node %v_targetnode% exists using system node tolerance %v_nodetolerance%', NULL), + (3650, 'Transfer topology to node %v_targetnode% -> Done', NULL), + (3652, 'Downgrade node %v_node% to state 0 -> Done', NULL), + (3654, 'Moving node %v_node% -> Done', NULL), + (3656, 'Keeping topology -> Done', NULL), + (3658, 'Transfer topology from node %v_targetnode% -> Done', NULL), + (3660, 'No nodes have been selected', NULL), + (3662, 'Name: %v_name%', NULL), + (3664, 'Descript: %v_descript%', NULL), + (3666, 'Parent: %v_parent_id%', NULL), + (3668, 'Type: %v_dscenario_type%', NULL), + (3670, 'active: %v_active%', NULL), + (3672, 'The dscenario (%v_scenarioid%) already exists with proposed name %v_name%. Please try another one.', NULL), + (3674, 'The new dscenario have been created sucessfully', NULL), + (3676, 'Connecs connected with the feature : %v_connect_connec%', NULL), + (3678, 'Gullies connected with the feature : %v_connect_gully%', NULL), + (3680, 'Nodes connected with the feature: %v_connect_node%', NULL), + (3682, 'Nodes connected with the feature: %v_connect_node%', NULL), + (3684, 'Arcs connected with the feature (on service): %v_connect_arc%', NULL), + (3686, 'Arcs connected with the feature (obsolete): %v_connect_arc%', NULL), + (3688, 'Polygon connected with the feature: %v_connect_pol%', NULL), + (3690, 'Links connected with the feature : %v_connect_connec%', NULL), + (3692, 'Gullies connected with the feature : %v_connect_gully%', NULL), + (3694, 'No node was found at these coordinates', 'Please select a node to place your element.'), + (3696, 'ERROR: The dscenario ( %v_scenarioid% ) already exists with proposed name %v_name%. Please try another one.', NULL), + (3700, 'Process done successfully.', NULL), + (3714, 'Copy from: %v_copyfrom%', NULL), + (3716, 'Expl: %v_expl_id%', NULL), + (3718, 'Dscenario named "%v_name%" created with values from dscenario ( %v_copyfrom% )', NULL), + (3720, 'Copied values from dscenario ( %v_copyfrom% ) to new dscenario ( %v_scenarioid% )', NULL), + (3724, 'Target and source are the same.', NULL), + (3726, 'Target scenario: %v_target_name%', NULL), + (3728, 'Action: %v_action%', NULL), + (3730, 'Copy from scenario: %v_source_name%', NULL), + (3732, 'Dscenario type for target and source is not the same.', NULL), + (3734, 'Target and source have the same dscenario_type.', NULL), + (3736, '%v_count% row(s) has/have been removed from inp_dscenario_%object_rec% table.', NULL), + (3738, 'There was/were %v_count% row(s) related to this dscenario which has/have been keep on table inp_dscenario_ %object_rec%.', NULL), + (3740, 'No rows have been inserted on inp_dscenario_%object_rec% table.', NULL), + (3742, '%v_count2% row(s) has/have been inserted on inp_dscenario_%object_rec% table.', NULL), + (3744, '%v_count% row(s) have been removed from inp_dscenario_%object_rec% table.', NULL), + (3746, '%v_count% row(s) have been keep from inp_dscenario_%object_rec% table.', NULL), + (3748, 'No rows have been inserted on inp_dscenario_%object_rec% table.', NULL), + (3750, '%v_count2% row(s) have been inserted on inp_dscenario_%object_rec% table.', NULL), + (3752, '1 row(s) has/have been removed from cat_dscenario table.', NULL), + (3754, 'PROCESS HAS FAILED......', NULL), + (3778, 'Deactivate topology control for connecs and gullies.', NULL), + (3780, 'Psectors must have the same priority, status, psector_type and expl_id to be merged.', NULL), + (3782, 'Create psector %v_new_psector_id% as %v_new_psector_name%.', NULL), + (3784, 'Copied arcs with state 0: %v_list_features_obsolete%.', NULL), + (3786, 'Copied nodes with state 0: %v_list_features_obsolete%.', NULL), + (3788, 'Copied connecs with state 0: %v_list_features_obsolete%.', NULL), + (3790, 'Copied connecs with state 1 (doable false): %v_list_connec_undoable%.', NULL), + (3792, 'Copied gullies with state 0: %v_list_features_obsolete%', NULL), + (3794, 'Copied gullies with state 1: %v_list_gully_undoable%', NULL), + (3796, 'Copied other prices: %v_list_features_obsolete%', NULL), + (3798, 'Set %v_new_psector_name% as current psector.', NULL), + (3816, 'INFO: User %v_user% have been copied from %v_copyfromuser% values', NULL), + (3818, 'INFO: User parameters and BASIC selectors have been copied (selector_state, selector_expl, selector_hydrometer, selector_workcat)', NULL), + (3820, 'INFO: OM selectors have been copied (selector_audit, selector_date)', NULL), + (3822, 'INFO: OM-WS selectors have been copied (selector_mincut_result)', NULL), + (3824, 'INFO: There is no specific selectors for role_edit', NULL), + (3826, 'INFO: EPA selectors have been copied (selector_sector, selector_rpt_main, selector_inp_result, selector_rpt_compare)', NULL), + (3828, 'INFO: EPA-UD selectors have been copied (selector_rpt_main_tstep, selector_rpt_compare_tstep)', NULL), + (3830, 'INFO: EPA-WS selectors have been copied (selector_inp_dscenario, selector_rpt_compare_tstep, selector_rpt_main_tstep)', NULL), + (3832, 'INFO: Plan selectors have been copied (selector_plan_result, selector_psector)', NULL), + (3834, 'ERROR-358: User and copied User has not the same role', NULL), + (3836, 'ERROR-358: Copied user does not exist', NULL), + (3838, 'INFO: User %v_user% have been reset', NULL), + (3840, 'INFO: User parameters and BASIC selectors have been reset (selector_state, selector_expl, selector_hydrometer, selector_workcat)', NULL), + (3842, 'ERROR-358: User does not exist', NULL), + (3844, 'IMPORT SCADA VALUES FILE', NULL), + (3846, 'IMPORT FLOWMETER DAILY VALUES FILE', NULL), + (3848, 'Reading values from temp_csv table -> Done', NULL), + (3850, 'Inserting values on ext_rtc_scada_x_data table -> Done', NULL), + (3852, 'Deleting values from temp_csv -> Done', NULL), + (3854, 'Process finished with %i% rows inserted.', NULL), + (3856, 'Data from %v_count% scada tags have been imported.', NULL), + (3872, 'Reading values from temp_csv table -> Done', NULL), + (3874, 'Inserting values on ext_cat_period table -> Done', NULL), + (3876, 'Deleting values from temp_csv -> Done', NULL), + (3878, 'Process finished with %i% rows inserted.', NULL), + (3902, 'New %rec_type.id% inserted with state 1: %v_list_features_obsolete%', NULL), + (3904, 'Migration mode activated. Topocontrol is disabled', NULL), + (3906, 'Work mode activated. Topocontrol is enabled', NULL), + (3908, 'Reading values from temp_csv table -> Done!', NULL), + (3910, 'Inserting values on ext_rtc_scada_x_data table -> Done!', NULL), + (3912, 'Deleting values from temp_csv -> Done!', NULL), + (3914, 'Refactorize value to one value per day -> Done!', NULL), + (3916, 'Process finished with %i% rows inserted.', NULL), + (3918, 'Data from %v_count% scada tags have been imported.', NULL), + (3920, 'Nothing to import', NULL), + (3926, 'Process finished', NULL), + (3928, 'Inserting values on ext_rtc_hydrometer_x_data table -> Done', NULL), + (3930, 'Deleting values from temp_csv -> Done', NULL), + (3932, 'Process finished with %i% rows inserted.', NULL), + (3934, 'Checking exisiting curve id on table inp_curve -> Done', NULL), + (3936, 'Curve id (%rec_csv.csv1%) have been imported succesfully', NULL), + (3938, 'Curve id (%rec_csv.csv1%) already exists on inp_curve -> Import have been canceled for this curve', NULL), + (3940, 'Checking exisiting pattern id on table inp_pattern -> Done', NULL), + (3942, 'Pattern id (%rec_csv.csv1%) have been imported succesfully', NULL), + (3944, 'Pattern id (%rec_csv.csv1%) already exists on inp_pattern -> Import have been canceled for this pattern', NULL), + (3946, 'Inserting values on cat_feature table -> Done', NULL), + (3948, 'Process finished', NULL), + (3950, 'Inserting values on element table -> Done', NULL), + (3952, 'Inserting values on %v_featuretable% table -> Done', NULL), + (40, 'sucessfully inserted', NULL), + (4018, 'Use psectors: %v_usepsector%', NULL), + (4100, 'Giswater version: %version%', NULL), + (4102, 'Version of plugin is different than the database version. DB: %version%, plugin: %qgis_version%.', NULL), + (4104, 'PostgreSQL version: %version%', NULL), + (4106, 'PostGIS version: %postgis_version%', NULL), + (4108, 'QGIS version: %qgis_version%', NULL), + (4110, 'O/S version: %os_version%', NULL), + (4112, 'Log volume (User folder): %logfoldervolume%', NULL), + (4114, 'QGIS variables: gwProjectType: %v_qgis_project_type%, gwInfoType: %v_infotype%, gwProjectRole: %v_projectrole%, gwMainSchema: %v_mainschema%, gwAddSchema: %v_addschema%', NULL), + (4116, 'Logged as %current_user% on %now%', NULL), + (4118, 'There is/are %v_count% layers that come from differen host: %v_layer_list%.', NULL), + (4120, 'All layers come from current host', NULL), + (4122, 'There is/are %v_count% layers that come from different database: %v_layer_list%.', NULL), + (4124, 'All layers come from current database', NULL), + (4126, 'There is/are %v_count% layers that come from different schema: %v_layer_list%.', NULL), + (4128, 'All layers come from current schema', NULL), + (4130, 'There is/are %v_count% layers that have been added by different user: %v_layer_list%.', NULL), + (4132, 'All layers have been added by current user', NULL), + (4134, 'Set feature state = 1 for addschema and user', NULL), + (4136, 'Nothing to import', NULL), + (4138, 'Inserting values on plan_price table -> Done', NULL), + (4140, 'The specified feature type is not supported: %feature_type%', 'Must be ''FEATURE'' or ''ELEMENT'''), + (4320, 'The element is already linked to a node: %node_id%', 'Unlink the element from the node first'), + (4322, '%v_count_feature% link(s) have been downgraded', NULL), + (4324, '%v_count_feature% element(s) have been downgraded', NULL), + (4328, 'It is not allowed to downgrade planified links (state=2)', 'Review your data.'), + (4330, 'Input parameter: "%parameter%" is required', 'You need to pass correct parameters.'), + (4332, 'Unknown %parameter%', 'You need to pass correct parameters.'), + (4334, 'You can not desactivate the %mapzone_name%, because have objects linked to it', 'First you need to change the objects to another mapzone. EX: Undefined'), + (4336, 'It''s not possible to set this psector to active because it has topological inconsistencies.', 'Fix topological errors first.'), + (4340, 'You have at least 1 connec in different selected psectors which is connected to different arcs', NULL), + (4346, 'To execute from zero, all %mapzone_name% mapzones must be disabled', 'Toggle active for all mapzones, or delete them'), + (4348, 'It is not allowed to insert/updates arcs with the same geometry', NULL), + (4350, 'Planified arcs belong to a different psector than the current one', 'One or more planned arcs are associated with a different psector'), + (4352, 'Fusion is not allowed in operative mode when there are planned arcs', 'To continue, switch to plan mode or remove the planned arcs from the psector'), + (4354, 'Minsector dynamic analysis done successfully', NULL), + (4356, 'Cannot delete system mapzone with id: %id%', NULL), + (4358, 'It is not allowed to deactivate your current psector. Click on the Play button to exit psector mode and then, deactivate the psector.', NULL), + (4360, 'There is no dma selected. Please select one in the options', NULL), + (4408, 'There are no nodes to be repaired.', NULL), + (4410, '%v_count% nodes have been created to repair topology.', NULL), + (4412, 'It is not allowed to delete planified features in operative mode', 'Switch to plan mode to delete the feature'), + (4414, 'It is not allowed to delete features from a different psector than the current one', 'Switch to the correct psector to delete the feature'), + (4416, 'It is not allowed to delete operative features in plan mode', 'Switch to operative mode to delete the feature'), + (4428, 'DATA QUALITY ANALYSIS ACORDING O&M RULES', NULL), + (4430, 'The %feature_type% with id %connec_id% has been successfully connected to the arc with id %arc_id%', NULL), + (4432, 'PLEASE, SET SOME VALUE FOR STATE_TYPE FOR PLANIFIED OBJECTS (CONFIG DIALOG)', NULL), + (4434, 'Trying to connect %feature_type% with id %connect_id% to the closest arc.', NULL), + (4436, 'Trying to connect %feature_type% with id %connect_id% to the closest arc at a maximum distance of %max_distance% meters.', NULL), + (4438, 'Trying to connect %feature_type% with id %connect_id% to the closest arc with a diameter smaller than %check_arcdnom%.', NULL), + (4440, 'Trying to connect %feature_type% with id %connect_id% to the closest arc with a diameter smaller than %check_arcdnom% meters and at a maximum distance of %max_distance% meters.', NULL), + (4442, 'To check CRITICAL ERRORS or WARNINGS, execute a query FROM anl_table WHERE fid=error number AND current_user. For example: SELECT * FROM MySchema.anl_arc WHERE fid = Myfid AND cur_user=current_user; Only the errors with anl_table next to the number can be checked this way. Using Giswater Toolbox it''s also posible to check these errors.', NULL), + (4444, 'It is not allowed to change the exploitation because your current psector does not belong to the exploitation you have selected. Click on the Play button to exit psector mode and then, change the exploitation.', NULL), + (4446, 'It is not allowed to change the sector because your current psector does not belong to the sector you have selected. Click on the Play button to exit psector mode and then, change the sector.', NULL), + (4448, 'Invalid action: %action%. Must be INSERT, UPDATE, DELETE or REPLACE.', 'Check the action parameter in your request.'), + (4450, 'No hydrometers provided in the request.', 'The hydrometers array cannot be empty. Provide at least one hydrometer.'), + (4452, 'Code is required for hydrometer #%hydrometer% when using INSERT or REPLACE action.', 'Provide a valid code for each hydrometer.'), + (4454, 'Hydrometer with code %code% not found for UPDATE operation.', 'Verify that the hydrometer exists in the database.'), + (4456, 'YOU NEED TO SET SOME WORKCATID TO EXECUTE PSECTOR', NULL), + (4458, 'Cannot restore archived psector due to topology errors', 'Please fix the topology errors before restoring the psector. Check the log for details.'), + (4460, 'Used plan psectors: %v_psectors%', NULL), + (4462, 'Commit changes: %v_commit_changes%', NULL), + (4464, 'The selected catalog is not available for the feature type selected', 'Select another catalog'), + (4480, 'The following nodes don''t exist in the operative network: %node_list%', 'Check nodes in graphconfigs'), + (4482, 'All nodes in graphconfigs exist in the operative network', NULL), + (4484, 'The following to_arcs don''t exist in the operative network: %arc_list%', 'Check arcs in graphconfigs'), + (4486, 'All arcs in graphconfigs exist in the operative network', NULL), + (4488, 'The following nodes are set in multiple mapzones: %node_list%', 'Check nodes in graphconfigs'), + (4490, 'There are no nodes set on multiple mapzones', NULL), + (4492, 'The following arcs are set in more than one nodeParent: %arc_list%', 'Check arcs in graphconfigs'), + (4494, 'There are no arcs set in more than one nodeParent', NULL), + (4496, 'The following arcs are not connected to its nodeParent: %arc_list%', 'Check arcs in graphconfigs'), + (4498, 'There are no arcs not connected to its nodeParent', NULL), + (4500, 'The folowing pump/meter nodeParents don''t have the same to_arc on their graphconfig and man_table: %node_list%', 'Check for different to_arc in man_table and graphconfig'), + (4502, 'There are no pump/meter nodeParents with different to_arc on their graphconfig and man_table', NULL), + (4504, 'The folowing tank/source/waterwell/wtp nodeParents don''t have the same inlet_arc on their graphconfig and man_table: %node_list%', 'Check for different inlet_arc in man_table and graphconfig'), + (4506, 'There are no tank/source/waterwell/wtp nodeParents with different inlet_arc on their graphconfig and man_table', NULL), + (4508, 'The following nodeParent/to_arc are null: %feature_list%', 'Check for nulls in graphconfigs'), + (4510, 'There are no nodeParent or to_arc null', NULL), + (4512, 'The following nodeParents don''t exist in the operative network: %node_list%', 'Check nodeParents in graphconfigs'), + (4514, 'All nodeParents in graphconfigs exist in the operative network', NULL), + (4516, 'The following forceClosed/forceOpen don''t exist in the operative network: %node_list%', 'Check forceClosed/forceOpen in graphconfigs'), + (4518, 'All forceClosed/forceOpen in graphconfigs exist in the operative network', NULL), + (4520, 'The following nodeParents are set in multiple mapzones: %node_list%', 'Check nodeParents in graphconfigs'), + (4522, 'There are no nodeParents set on multiple mapzones', NULL), + (4524, 'The following forceClosed/forceOpen are set in multiple mapzones: %arc_list%', 'Check forceClosed/forceOpen in graphconfigs'), + (4526, 'There are no forceClosed/forceOpen set on multiple mapzones', NULL), + (50, 'sucessfully updated', NULL), + (60, 'Visit class have been changed. Previous data have been deleted', NULL), + (70, 'Visit manager have been initialized', NULL), + (80, 'Visit manager have been finished', NULL), + (90, 'Lot succesfully saved', NULL), + (3012, 'The position value is bigger than the full length of the arc. %arc_id%', 'Please review your data.'), + (3014, 'The position id is not node_1 or node_2 of selected arc. %arc_id%', 'Please review your data.'), + (3178, 'It is no possible to relate planned connec/gully over planned connec/gully wich not are on same psector', NULL), + (3180, 'You are trying to modify some network element with related connects (connec / gully) on psector not selected. %debugmsg%', 'Please activate the psector before!'), + (3182, 'It is not allowed to downgrade (state=0) on psector tables for planned features (state=2). Planned features only must have state=1 on psector. %psector_id%', 'If you are looking for unlink it, please remove it from psector. If feature only belongs to this psector, and you are looking to unlink it, you will need to delete from ve_* or v_edit_* or use end feature tool.'), + (3194, 'It is not possible to downgrade connec because has operative hydrometer associated %feature_id%', 'Unlink hydrometers first or set edit_connec_downgrade_force on config_param_system to true'), + (3238, 'Dscenario with this name doesn''t exist', 'Create an empty dscenario with the same name as indicated in csv file in order to continue the import of data'), + (3248, 'There is no street data available', 'Please draw tramified streets on om_streetaxis table'), + (3262, 'Invalid value for a presszone_id', 'Please, use an integer as the presszone_id'), + (3514, 'Process executed for hydrant: %rec_hydrant%.', NULL), + (3530, 'ERROR: The dscenario ( %v_scenarioid% ) already exists with proposed name %v_name%. Please try another one.', NULL), + (3532, 'New scenario %v_name% have been created with id:%v_scenarioid% .', NULL), + (3534, 'Feature type: %v_featuretype%', NULL), + (3536, 'Exploitation: %v_expl%', NULL), + (3538, 'Selection mode: %v_selectionmode%', NULL), + (3540, 'INFO: Process done successfully.', NULL), + (3542, 'No mincuts are being executed right now: %v_count%.', NULL), + (3544, 'There are: %v_count% mincuts being executed at the moment..', NULL), + (3594, 'There are %v_count% nodes with topological inconsistency.', NULL), + (3596, 'There are no nodes with topological inconsistency.', NULL), + (3698, 'ERROR: The table chosen does not fit with any epa dscenario. Please try another one.', NULL), + (3706, 'INFO: %v_count% features have been inserted on table %v_table%.', NULL), + (3708, 'New scenario %v_name% have been created with id:%v_scenarioid%.', NULL), + (3710, 'Exploitation: %v_expl%.', NULL), + (3712, 'Selection mode: %v_selectionmode%.', NULL), + (3722, 'INFO: %v_count% rows with features have been inserted on table %v_table%.', NULL), + (3756, '%v_count% connecs were inserted into demand table.', NULL), + (3758, '%v_count% nodes were inserted into demand table.', NULL), + (3760, 'Exists %v_count% mapzones without assigned pattern_id. Fill the data before executing the process.', NULL), + (3762, 'Type: %v_netscenario_type%', NULL), + (3764, 'The netscenario ( %v_scenarioid% ) already exists with proposed name %v_name%. Please try another one.', NULL), + (3766, 'The new netscenario have been created sucessfully', NULL), + (3768, 'Mapzones configuration (graphconfig) related to selected exploitation has been copied to new netscenario.', NULL), + (3770, 'All arcs (state=1) on the selected exploitation(s) have not minsector_id informed. Please check your data before continue', NULL), + (3772, 'There are %v_count2% arcs (state=1) on the selected exploitation(s) without minsector_id informed. Please check your data before continue', NULL), + (3774, 'There are %v_count1% arcs (state=1) on the selected exploitation(s) and all of them have minsector_id informed.', NULL), + (3776, 'Massive analysis have been done. %v_count1% mincut''s have been triggered (one by each minsector all of them using the mincut_id = -1). To check results you can query:', NULL), + (3800, 'Name: %v_name%', NULL), + (3802, 'Descript: %v_descript%', NULL), + (3804, 'Parent: %v_parent_id%', NULL), + (3806, 'Type: %v_netscenario_type%', NULL), + (3808, 'active: %v_active%', NULL), + (3810, 'ERROR: The netscenario ( %v_scenarioid% ) already exists with proposed name %v_name%. Please try another one.', NULL), + (3812, 'The new netscenario have been created successfully.', NULL), + (3814, 'Mapzones configuration (graphconfig) related to selected exploitation has been copied to new netscenario.', NULL), + (3858, 'Nothing to import', NULL), + (3860, 'Reading values from temp_csv table -> Done', NULL), + (3862, 'Inserting values on cat_dscenario table -> Done', NULL), + (3864, 'Inserting values on inp_dscenario_shortpipe table -> Done', NULL), + (3868, 'Netscenario doesn''t exist.', NULL), + (3870, 'Data wasn''t imported.', NULL), + (3922, 'Reading values from temp_csv table -> Done', NULL), + (3924, 'Inserting values on inp_dscenario_demand table -> Done', NULL), + (3954, 'New scenario %v_name% have been created with id:%v_scenarioid%.', NULL), + (3956, '%v_count% rows with features have been inserted on table inp_dscenario_shortpipe', NULL), + (3958, '%v_count% rows with features have been inserted on table inp_dscenario_valve', NULL), + (4002, 'Initlevel of %v_count% inlets has been updated.', NULL), + (4004, 'Initlevel of %v_count% tanks has been updated.', NULL), + (4006, 'I1ST. STEP Result with this name is already defined on plan_result tables.', NULL), + (4008, '1ST. STEP executed.', NULL), + (4010, 'Snapshot of values form v_plan_arc and v_plan_node have been inserted on plan_result_arc and plan_result_node tables.', NULL), + (4012, 'This proces enables to execute STEP 2 in order to calculate amortized values using age,cost and acoeff (amortized rate per year).', NULL), + (4014, '2ND STEP executed.', NULL), + (4016, 'Amortized values using age,cost and acoeff have been calculated.', NULL), + (4020, 'Minsector attribute on arc/node/connec/link features have NOT BEEN updated by this process.', NULL), + (4022, 'Missing node_1 or node_2 on arcs: %v_arc_list%. Please check your data before continue', NULL), + (4024, 'Minsector attribute on arc/node/connec/link features have been updated by this process.', NULL), + (4026, 'There are no nodes to be repaired.', NULL), + (4028, '%v_count% nodes have been created to repair topology.', NULL), + (4030, 'Number of hydrometer processed: %v_hydrometer%', NULL), + (4032, 'Total System Input: %v_tsi% CMP', NULL), + (4034, 'Billed metered consumtion: %v_bmc% CMP', NULL), + (4036, 'Non-revenue water: %v_nrw% CMP', NULL), + (4038, 'DMAs updated %v_day% days ago.', NULL), + (4040, 'Process done succesfully for period: %v_period%', NULL), + (4042, 'Number of DMA processed: %v_count%', NULL), + (4338, 'Water balance is not allowed having surpassed the threshold day limiter (parameter om_waterbalance_threshold_days)', NULL), + (4342, 'Node not valid because it has more than 2 arcs', 'Select a valid node'), + (4362, 'MINCUT STATS', NULL), + (4364, 'Number of arcs: %number%', NULL), + (4366, 'Length of affected network: %length% mts', NULL), + (4368, 'Total water volume: %volume% m3', NULL), + (4370, 'Number of connecs affected: %number%', NULL), + (4372, 'Total of hydrometers affected: %total%', NULL), + (4374, 'Hydrometers classification: %classified%', NULL), + (4376, 'MINCUT ANALYSIS', NULL), + (4378, 'Minimun cut have been checked looking for overlaps against other mincuts', NULL), + (4380, 'Psectors have been used to execute this mincut in order to calculate mincut affectations with planned network.', NULL), + (4382, '%count% Psectors have been unselected on current exploitation in order to execute this mincut without planned network.', NULL), + (4384, 'Mincut have been executed without planned network.', NULL), + (4386, 'There are not values selected for hydrometer''s state with is_operative True. As result no hydrometer have been attached to this mincut', NULL), + (4388, 'There is one value for hydrometer''s state selected with is_operative True: %selected%.', NULL), + (4390, 'There are more than one hydrometer''s state selected with is_operative True: %selected%.', NULL), + (4392, 'There is a temporal overlap with spatial intersection on the same macroexploitation with: %conflictmsg%', NULL), + (4394, 'additional pipes are involved and more connecs are affected ( %addaffconnecs% units. )', NULL), + (4396, 'additional pipes are involved', NULL), + (4398, 'No more connecs are affected', NULL), + (4400, 'There is a temporal overlap without spatial intersection on the same macroexploitation with: %conflictmsg%', NULL), + (4402, 'No additional pipes are involved and no more connecs are affected', NULL), + (4404, 'There are no more mincuts on the same macroexploitation on planned on the same date-time', NULL), + (4406, 'Mincut have been executed with conflicts. All additional affetations have created a new mincut with state_type = %state_type%', NULL), + (4418, 'Mincut conflicts: [%array%]', NULL), + (4420, 'MINCUT AFFECTED STATS', NULL), + (4422, 'New affected mincuts have been created: [%array%]', NULL), + (4424, 'New affected mincut id: %id%', NULL), + (4426, 'Conflict Interval: %interval%', NULL) +) AS v(id, error_message, hint_message) +WHERE t.id = v.id; \ No newline at end of file diff --git a/dbmodel/schemas/addon/utils/final_pass/i18n/en_US/dbparam_user.sql b/dbmodel/schemas/addon/utils/final_pass/i18n/en_US/dbparam_user.sql new file mode 100644 index 0000000000..d7bf6a255d --- /dev/null +++ b/dbmodel/schemas/addon/utils/final_pass/i18n/en_US/dbparam_user.sql @@ -0,0 +1,462 @@ +/* +This file is part of Giswater +The program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. +*/ + + +SET search_path = SCHEMA_NAME, public, pg_catalog; +UPDATE sys_param_user AS t SET label = v.label, descript = v.descript FROM ( + VALUES + ('edit_addfield_p10_vdefault', 'grate_param_1:', 'Default value of addfield grate_param_1 for PGULLY'), + ('edit_addfield_p12_vdefault', 'grate_param_2:', 'Default value of addfield grate_param_2 for PGULLY'), + ('edit_addfield_p18_vdefault', 'pumpipe_param_1:', 'Default value of addfield pumpipe_param_1 for PUMP_PIPE'), + ('edit_addfield_p20_vdefault', 'pumpipe_param_2:', 'Default value of addfield pumpipe_param_2 for PUMP_PIPE'), + ('edit_addfield_p22_vdefault', 'recmanhole_param_1:', 'Default value of addfield recmanhole_param_1 for RECT_MANHOLE'), + ('edit_addfield_p24_vdefault', 'recmanhole_param_2:', 'Default value of addfield recmanhole_param_2 for RECT_MANHOLE'), + ('edit_addfield_p26_vdefault', 'register_param_1:', 'Default value of addfield register_param_1 for REGISTER'), + ('edit_addfield_p28_vdefault', 'register_param_2:', 'Default value of addfield register_param_2 for REGISTER'), + ('edit_addfield_p2_vdefault', 'chamber_param_1:', 'Default value of addfield chamber_param_1 for CHAMBER'), + ('edit_addfield_p30_vdefault', 'sewstorage_param_1:', 'Default value of addfield sewstorage_param_1 for SEWER_STORAGE'), + ('edit_addfield_p32_vdefault', 'sewstorage_param_2:', 'Default value of addfield sewstorage_param_2 for SEWER_STORAGE'), + ('edit_addfield_p34_vdefault', 'weir_param_1:', 'Default value of addfield weir_param_1 for WEIR'), + ('edit_addfield_p36_vdefault', 'weir_param_2:', 'Default value of addfield weir_param_2 for WEIR'), + ('edit_addfield_p4_vdefault', 'chamber_param_2:', 'Default value of addfield chamber_param_2 for CHAMBER'), + ('edit_addfield_p6_vdefault', 'cirmanhole_param_1:', 'Default value of addfield cirmanhole_param_1 for CIRC_MANHOLE'), + ('edit_addfield_p8_vdefault', 'cirmanhole_param_2:', 'Default value of addfield cirmanhole_param_2 for CIRC_MANHOLE'), + ('edit_arc_keepdepthval_when_reverse_geom', NULL, 'If value, when arc is reversed only id values from node_1 and node_2 will be exchanged, keeping depth values on same node (y1, y2, custom_y1, custom_y2, elev_1, elev_2, custom_elev_1, custom_elev_2, sys_elev_1, sys_elev_2) will remain on same node'), + ('edit_arccat_vdefault', 'Default catalog for arc (parent layer):', 'Default arc catalog when parent layer (v_edit_arc) is used'), + ('edit_arctype_vdefault', 'Default type for arc (parent layer):', 'Default type for arc when parent layer (v_edit_arc) is used'), + ('edit_connec_linkcat_vdefault', 'Default catalog for linkcat:', 'Value default catalog for link connected to connec'), + ('edit_connecarccat_vdefault', 'Connec arccat:', 'Default value for connec_arccat_id'), + ('edit_connecat_vdefault', 'Default catalog for connec (parent layer):', 'Default connec catalog when parent layer (v_edit_connec) is used'), + ('edit_connectype_vdefault', 'Default type for connec (parent layer):', 'Default type for connec when parent layer (v_edit_connec) is used'), + ('edit_gratecat_vdefault', 'Default catalog for gully (parent layer):', 'Default grate catalog when parent layer (v_edit_gully) is used'), + ('edit_gully_automatic_link', 'Automatic link from gully to network:', 'If true, link will be automatically generated when inserting a new gully with state=1. For planified gullys, link will always be automatically generated'), + ('edit_gully_autoupdate_polgeom', 'Gully udapte polgeom when nodegeom is moved:', 'Parameter to configure automatic update (translate) of polygon geometry when point geometry have been updated'), + ('edit_gully_category_vdefault', 'Gully category:', 'Default value of category type for gully'), + ('edit_gully_doublegeom', 'Gully double geometry:', 'Parameter to configure automatic insert of polygon geometry for gully'), + ('edit_gully_fluid_vdefault', 'Gully fluid:', 'Default value of fluid type for gully'), + ('edit_gully_function_vdefault', 'Gully function:', 'Default value of function type for gully'), + ('edit_gully_linkcat_vdefault', 'Link catalog for automatic inserts:', 'Default value of link catalog'), + ('edit_gully_location_vdefault', 'Gully location:', 'Default value of location type for gully'), + ('edit_gullyrotation_disable', 'Disable automatic gully rotation:', 'If true, the automatic rotation calculation on the gullys is disabled. Used for an absolute manual update of rotation field'), + ('edit_node_topelev_options', 'Auto-update elevation/ymax:', 'If elev, ymax is recalculated when node top_elev is changed. If ymax, elev is recalculated when node elev is changed.'), + ('edit_node_ymax_vdefault', 'Default ymax for nodes:', 'Default value of ymax for nodes'), + ('edit_nodecat_vdefault', 'Default catalog for node (parent layer):', 'Default node catalog when parent layer (v_edit_node) is used'), + ('edit_state_vdefault', 'State:', 'Value of state parameter'), + ('epa_gully_efficiency_vdefault', '1D/2D Gully efficiency vdefault:', 'Default value for efficiency on gullies.'), + ('epa_gully_method_vdefault', '1D/2D Gully calculation method vdefault:', 'Default value for calculation method on gullies. Two options are available (UPC, W/O).'), + ('epa_gully_orifice_cd_vdefault', '1D/2D Gully CD-ORIFICE vdefault for W/O method:', 'Default value for rifice_cd using calculation method W/O on gullies.'), + ('epa_gully_outlet_type_vdefault', '1D/2D Gully outlet_type vdefault:', 'Default value for enable /disable gully. Two options are available (Sink, To_network). In case of Sink water is lossed.'), + ('epa_gully_weir_cd_vdefault', '1D/2D Gully CD-WEIR vdefault for W/O method:', 'Default value for weir_cd using calculation method W/O on gullies.'), + ('epa_lidco_vdefault', 'LID Dscenario vdefault:', 'Default value for lids when automatic creation for ToC (Subcatchments)'), + ('feat_adaptation_vdefault', 'Default catalog for adaptation:', 'Value default catalog for adaptation cat_feature'), + ('feat_air_valve_vdefault', 'Default catalog for air valve:', 'Value default catalog for air_valve cat_feature'), + ('feat_chamber_vdefault', 'Default catalog for chamber', 'Value default catalog for chamber cat_feature'), + ('feat_change_vdefault', 'Default catalog for change', 'Value default catalog for change cat_feature'), + ('feat_check_valve_vdefault', 'Default catalog for check valve:', 'Value default catalog for check_valve cat_feature'), + ('feat_circ_manhole_vdefault', 'Default catalog for circ_manhole', 'Value default catalog for circ_manhole cat_feature'), + ('feat_cjoin_vdefault', 'Default catalog for cjoin', 'Value default catalog for cjoin cat_feature'), + ('feat_conduit_vdefault', 'Default catalog for conduit', 'Value default catalog for conduit cat_feature'), + ('feat_conduitlink_vdefault', 'Default catalog for conduitlink', 'Value default catalog for conduitlink cat_feature'), + ('feat_curve_vdefault', 'Default catalog for curve:', 'Value default catalog for curve cat_feature'), + ('feat_egate_vdefault', 'Default catalog for egate', 'Value default catalog for egate cat_feature'), + ('feat_eiot_sensor_vdefault', 'Default catalog for eiot_sensor', 'Value default catalog for eiot_sensor cat_feature'), + ('feat_endline_vdefault', 'Default catalog for endline:', 'Value default catalog for endline cat_feature'), + ('feat_eorifice_vdefault', 'Default catalog for eorifice', 'Value default catalog for eorifice cat_feature'), + ('feat_eoutlet_vdefault', 'Default catalog for eoutlet', 'Value default catalog for eoutlet cat_feature'), + ('feat_eprotector_vdefault', 'Default catalog for eprotector', 'Value default catalog for eprotector cat_feature'), + ('feat_eweir_vdefault', 'Default catalog for eweir', 'Value default catalog for eweir cat_feature'), + ('feat_fl_contr_valve_vdefault', 'Default catalog for fl contr valve:', 'Value default catalog for fl_contr_valve cat_feature'), + ('feat_frorifice_vdefault', 'Default catalog for frorifice:', 'Value default catalog for frorifice cat_feature'), + ('feat_froutlet_vdefault', 'Default catalog for froutlet:', 'Value default catalog for froutlet cat_feature'), + ('feat_frweir_vdefault', 'Default catalog for frweir:', 'Value default catalog for frweir cat_feature'), + ('feat_gate_vdefault', 'Default catalog for gate:', 'Value default catalog for gate cat_feature'), + ('feat_gen_purp_valve_vdefault', 'Default catalog for gen purp valve:', 'Value default catalog for gen_purp_valve cat_feature'), + ('feat_ginlet_vdefault', 'Default catalog for ginlet', 'Value default catalog for ginlet cat_feature'), + ('feat_green_valve_vdefault', 'Default catalog for green valve:', 'Value default catalog for green_valve cat_feature'), + ('feat_highpoint_vdefault', 'Default catalog for highpoint', 'Value default catalog for highpoint cat_feature'), + ('feat_inletpipe_vdefault', 'Default catalog for inletpipe:', 'Value default catalog for inletpipe cat_feature'), + ('feat_iot_sensor_vdefault', 'Default catalog for iot sensor:', 'Value default catalog for iot_sensor cat_feature'), + ('feat_jump_vdefault', 'Default catalog for jump', 'Value default catalog for jump cat_feature'), + ('feat_netgully_vdefault', 'Default catalog for netgully', 'Value default catalog for netgully cat_feature'), + ('feat_netinit_vdefault', 'Default catalog for netinit', 'Value default catalog for netinit cat_feature'), + ('feat_out_manhole_vdefault', 'Default catalog for out_manhole', 'Value default catalog for out_manhole cat_feature'), + ('feat_outfall_valve_vdefault', 'Default catalog for outfall valve:', 'Value default catalog for outfall_valve cat_feature'), + ('feat_outfall_vdefault', 'Default catalog for outfall', 'Value default catalog for outfall cat_feature'), + ('feat_overflow_storage_vdefault', 'Default catalog for overflow_storage', 'Value default catalog for overflow_storage cat_feature'), + ('feat_owerflow_storage_vdefault', 'Default catalog for owerflow storage:', 'Value default catalog for owerflow_storage cat_feature'), + ('feat_pgully_vdefault', 'Default catalog for pgully', 'Value default catalog for pgully cat_feature'), + ('feat_pipe_vdefault', 'Default catalog for pipe:', 'Value default catalog for pipe cat_feature'), + ('feat_pr_break_valve_vdefault', 'Default catalog for pr break valve:', 'Value default catalog for pr_break_valve cat_feature'), + ('feat_pr_reduc_valve_vdefault', 'Default catalog for pr reduc valve:', 'Value default catalog for pr_reduc_valve cat_feature'), + ('feat_pr_susta_valve_vdefault', 'Default catalog for pr susta valve:', 'Value default catalog for pr_susta_valve cat_feature'), + ('feat_protector_vdefault', 'Default catalog for protector:', 'Value default catalog for protector cat_feature'), + ('feat_pump_pipe_vdefault', 'Default catalog for pump_pipe', 'Value default catalog for pump_pipe cat_feature'), + ('feat_pump_station_vdefault', 'Default catalog for pump_station', 'Value default catalog for pump_station cat_feature'), + ('feat_pump_vdefault', 'Default catalog for pump:', 'Value default catalog for pump cat_feature'), + ('feat_rect_manhole_vdefault', 'Default catalog for rect_manhole', 'Value default catalog for rect_manhole cat_feature'), + ('feat_sandbox_vdefault', 'Default catalog for sandbox', 'Value default catalog for sandbox cat_feature'), + ('feat_sewer_storage_vdefault', 'Default catalog for sewer_storage', 'Value default catalog for sewer_storage cat_feature'), + ('feat_shutoff_valve_vdefault', 'Default catalog for shutoff valve:', 'Value default catalog for shutoff_valve cat_feature'), + ('feat_siphon_vdefault', 'Default catalog for siphon', 'Value default catalog for siphon cat_feature'), + ('feat_t_vdefault', 'Default catalog for t:', 'Value default catalog for t cat_feature'), + ('feat_tank_vdefault', 'Default catalog for tank:', 'Value default catalog for tank cat_feature'), + ('feat_throttle_valve_vdefault', 'Default catalog for throttle valve:', 'Value default catalog for throttle_valve cat_feature'), + ('feat_valve_vdefault', 'Default catalog for valve', 'Value default catalog for valve cat_feature'), + ('feat_vgully_vdefault', 'Default catalog for vgully', 'Value default catalog for vgully cat_feature'), + ('feat_virtual_node_vdefault', 'Default catalog for virtual_node', 'Value default catalog for virtual_node cat_feature'), + ('feat_virtual_vdefault', 'Default catalog for virtual_node:', 'Value default catalog for virtual_node cat_feature'), + ('feat_waccel_vdefault', 'Default catalog for waccel', 'Value default catalog for waccel cat_feature'), + ('feat_weir_vdefault', 'Default catalog for weir', 'Value default catalog for weir cat_feature'), + ('feat_wjoin_vdefault', 'Default catalog for wjoin:', 'Value default catalog for wjoin cat_feature'), + ('feat_wwtp_vdefault', 'Default catalog for wwtp', 'Value default catalog for wwtp cat_feature'), + ('feat_x_vdefault', 'Default catalog for x:', 'Value default catalog for x cat_feature'), + ('inp_options_allow_ponding', 'Allow ponding:', 'Value of pounding, which determines whether excess water is allowed to collect atop nodes and be re-introduced into the system as conditions permit'), + ('inp_options_dry_days', 'Dry days:', 'Value of dry days, which is the number of days with no rainfall prior to the start of the simulation. '), + ('inp_options_dry_step', 'Dry step:', 'Value of dry step, which is the time step length used for runoff computations (consisting essentially of pollutant buildup) during periods when there is no rainfall and no ponded water. '), + ('inp_options_dwfscenario', 'DWF scenario:', 'Variable to manage diferent scenarios for dry weather flows'), + ('inp_options_dwfscenario_current', 'DWF scenario:', 'Variable to manage diferent scenarios for dry weather flows'), + ('inp_options_end_date', 'End date:', 'Value of end date, which is the date when the simulation is to end'), + ('inp_options_end_time', 'End time:', 'Value of end time, which is the time of day on the ending date when the simulation will end'), + ('inp_options_epaversion', 'EPA version:', 'EPA version'), + ('inp_options_flow_routing', 'Flow routing:', 'Value of flow routing,which determines which method is used to route flows through the drainage system'), + ('inp_options_flow_units', 'Flow units:', 'Value of flow units, makes a choice of flow units'), + ('inp_options_force_main_equation', 'Force main equation:', 'Value of force main equation, which establishes whether the Hazen-Williams (H-W) or the Darcy-Weisbach (D-W) equation will be used to compute friction losses for pressurized flow in conduits that have been assigned a Circular Force Main crosssection shape'), + ('inp_options_head_tolerance', 'Head tolerance:', 'Value of head tolerance, which defines then tolerance of head on computation'), + ('inp_options_hydrology_current', 'Hydrology Scenario:', 'Scenario for hydrology'), + ('inp_options_hydrology_scenario', 'Hydrology Scenario:', 'Scenario for hydrology'), + ('inp_options_ignore_groundwater', 'Ignore groundwater:', 'Value of head tolerance, which is set to YES if groundwater calculations should be ignored when a project file contains aquifer objects. '), + ('inp_options_ignore_quality', 'Ignore quality:', 'Value of ignore quality, which is set to YES if pollutant washoff, routing, and treatment should be ignored in a project that has pollutants defined'), + ('inp_options_ignore_rainfall', 'Ignore rainfall:', 'Value of ignore rainfall, which is set to YES if all rainfall data and runoff calculations should be ignored'), + ('inp_options_ignore_routing', 'Ignore routing:', 'Value of ignore routing, which is set to YES if only runoff should be computed even if the project contains drainage system links and nodes'), + ('inp_options_ignore_snowmelt', 'Ignore snowmelt:', 'Value of ignore snowmelt, which is set to YES if snowmelt calculations should be ignored when a project file contains snow pack objects'), + ('inp_options_inertial_damping', 'Inertial damping:', 'Value of inertial damping, which indicates how the inertial terms in the Saint Venant momentum equation will be handled under dynamic wave flow routing'), + ('inp_options_lat_flow_tol', 'Lat flow tol:', 'Lateral flow tolerance used on the computation'), + ('inp_options_lengthening_step', 'Lengthening step:', 'Value of lengthening step, which is a time step, in seconds, used to lengthen conduits under dynamic wave routing, so that they meet the Courant stability criterion under fullflow conditions'), + ('inp_options_link_offsets', 'Link offsets:', 'Value of link offsets, which determines the convention used to specify the position of a link offset above the invert of its connecting node'), + ('inp_options_max_trials', 'Max trials:', 'Value of trials, which are the maximum number of trials used to solve network hydraulics at each hydraulic time step of a simulation. '), + ('inp_options_min_slope', 'Min slope:', 'Value of minimum slope, which is the minimum value allowed for a conduit’s slope (%)'), + ('inp_options_min_surfarea', 'Min surfarea:', 'Value of minimum surfarea, which is a minimum surface area used at nodes when computing changes in water depth under dynamic wave routing'), + ('inp_options_minimum_step', 'Minimum step:', 'Value of minimum step for routing timestep.'), + ('inp_options_minlength', 'Arc minimun length (1D/2D):', 'Value for minimum length on 1D/2D export mode because arc triming with links'), + ('inp_options_networkmode', 'Network geometry generator:', 'Export geometry mode: 1D SWMM , 1D/2D coupled model (SWMM-IBER)'), + ('inp_options_normal_flow_limited', 'Normal flow limited:', 'Value of normal flow limited, which specifies which condition is checked to determine if flow in a conduit is supercritical and should thus be limited to the normal flow'), + ('inp_options_report_start_date', 'Report start date:', 'Value of report start date, which is the date when reporting of results is to begin'), + ('inp_options_report_start_time', 'Report start time:', 'Value of report start time, which is the time of day on the report starting date when reporting is to begin'), + ('inp_options_report_step', 'Report step:', 'Value of report step, which is the time interval for reporting of computed results'), + ('inp_options_routing_step', 'Routing step:', 'Value of routing step, which is the time step length in seconds used for routing flows and water quality constituents through the conveyance system'), + ('inp_options_rule_step', 'Rule step:', 'Rule step control'), + ('inp_options_setallraingages', 'Use rainfall for all raingages:', 'Set all raingages using unique rainfall from relative timeseries'), + ('inp_options_skip_steady_state', 'Skip steady state:', 'Value of skip steady state, which should be set to YES if flow routing computations should be skipped during steady state periods of a simulation during which the last set of computed flows will be used'), + ('inp_options_start_date', 'Start date:', 'Value of start date, which is the date when the simulation begins'), + ('inp_options_start_time', 'Start time:', 'Value of start time, which is the time of day on the starting date when the simulation begins'), + ('inp_options_sweep_end', 'Sweep end:', 'Value of sweep end, which is the day of the year (month/day) when street sweeping operations end'), + ('inp_options_sweep_start', 'Sweep start:', 'Value of sweep start, which is the day of the year (month/day) when street sweeping operations begin'), + ('inp_options_sys_flow_tol', 'Sys flow tol:', 'Flow tolerance used on the computation'), + ('inp_options_tempdir', 'Tempdir:', 'Value of tempdir, which provides the name of a file directory (or folder) where SWMM writes its temporary files'), + ('inp_options_threads', 'Threads:', 'Threads control'), + ('inp_options_variable_step', 'Variable step:', 'Value of variable step, which is a safety factor applied to a variable time step computed for each time period under dynamic wave flow routing'), + ('inp_options_wet_step', 'Wet step:', 'Value of wet step, which is the time step length used to compute runoff from subcatchments during periods of rainfall or when ponded water still remains on the surface'), + ('inp_report_continuity', 'Continuity:', 'Value of continuity, which specifies whether continuity checks should be reported or not'), + ('inp_report_controls', 'Controls:', 'Value of controls, which specifies whether all control actions taken during a simulation should be listed or not'), + ('inp_report_flowstats', 'Flowstats:', 'Value of flowstats, which specifies whether summary flow statistics should be reported or not'), + ('inp_report_input', 'Input:', 'Value of input, which specifies whether or not a summary of the input data should be provided in the output report'), + ('inp_report_links', 'Timestep detailed links:', 'Value of links, which gives a list of links whose results are to be reported'), + ('inp_report_nodes', 'Timestep detailed nodesI-(max.40):', 'Value of node, which gives a list of nodes whose results are to be reported'), + ('inp_report_nodes_2', 'Timestep detailed nodesII-(max.40):', 'Value of node, which gives a list of nodes whose results are to be reported'), + ('inp_report_subcatchments', 'Timestep detailed subcatchments:', 'Value of subcatchments, which gives a list of subcatchments whose results are to be reported'), + ('plan_psector_auto_insert_connec', 'Automatic connec/gully insertion:', 'Automatic insertion of connected connecs/gullies when inserting an arc'), + ('utils_checkproject_qgislayer', 'Show layer log for warnings when check database:', 'Show temporal layer log when warnings on check database for load project'), + ('basic_search_exploitation_vdefault', 'Search exploitation:', 'Selected exploitation will be the one in which the features will be searched'), + ('basic_search_municipality_vdefault', 'Search municipality:', 'Selected municipality will be the one in which the streetaxis will be searched'), + ('edit_arc_category_vdefault', 'Arc category:', 'Default value of category type for arc'), + ('edit_arc_division_dsbl', 'Disable arc division', 'If true, disable the arc divide in a internal proces of database'), + ('edit_arc_downgrade_force', 'Force arc downgrade:', 'If true, allows to force arcs downgrade although they have other connected elements. Is a dynamic param because only code switchs the values (when is used tool to downgrade features'), + ('edit_arc_fluid_vdefault', 'Arc fluid:', 'Default value of fluid type for arc'), + ('edit_arc_function_vdefault', 'Arc function:', 'Default value of function type for arc'), + ('edit_arc_insert_automatic_endpoint', 'Automatic node insert as arc endpoint:', 'If value, enables to digitize new arcs without node_2. Node2 it is automatic triggered using default nodecat value from user and common values from arc'), + ('edit_arc_location_vdefault', 'Arc location:', 'Default value of location type for arc'), + ('edit_builtdate_vdefault', 'Builtdate:', 'Default value of feature''s builtdate'), + ('edit_cadtools_baselayer_vdefault', 'CAD tools base layer:', 'Selected layer will be the only one which allows snapping using CAD tools'), + ('edit_connec_automatic_link', 'Automatic link from connec to network:', 'If true, link will be automatically generated when inserting a new connec with state=1. For planified connecs, link will always be automatically generated'), + ('edit_connec_category_vdefault', 'Connec category:', 'Default value of category type for connec'), + ('edit_connec_disable_linktonetwork', NULL, 'Variable used on code to disable temporary linktonetowork, useful to increase performance and to prevent some conflicts'), + ('edit_connec_fluid_vdefault', 'Connec fluid:', 'Default value of fluid type for connec'), + ('edit_connec_function_vdefault', 'Connec function:', 'Default value of function type for connec'), + ('edit_connec_location_vdefault', 'Connec location:', 'Default value of location type for connec'), + ('edit_disable_arctopocontrol', NULL, 'If true, topocontrol is disabled'), + ('edit_disable_locklevel', 'Disable lock level:', 'Temporarily disable lock level for specific operations'), + ('edit_disable_statetopocontrol', NULL, 'If true, topocontrol is executed without state definition. This parameter is used for trg_topocontrol_node when ficticius arcs are inserted due a misterious bug of postgres who does not recongize the new node over the old one'), + ('edit_disable_topocontrol', NULL, 'If true topocontrol and feature proximity is disabled to allow data migration'), + ('edit_disable_update_nodevalues', NULL, 'If true, topocontrol is disabled'), + ('edit_dma_vdefault', 'Dma:', 'Default value of dma parameter'), + ('edit_doctype_vdefault', 'Document type:', 'Default value of document type'), + ('edit_element_doublegeom', 'Doublegeometry value for element:', 'If value, overwrites trigger element value to create double geometry in case elementcat_id is defined with this attribute'), + ('edit_elementcat_vdefault', 'Element catalog:', 'Default value of element catalog'), + ('edit_enddate_vdefault', 'End date:', 'Default value of feature''s enddate'), + ('edit_exploitation_vdefault', 'Exploitation:', 'Default value of exploitation parameter'), + ('edit_feature_category_vdefault', 'Featurecat:', 'Featurecat for which category is defined'), + ('edit_feature_fluid_vdefault', 'Featurecat:', 'Featurecat for which fluid is defined'), + ('edit_feature_function_vdefault', 'Featurecat:', 'Featurecat for which function is defined'), + ('edit_feature_location_vdefault', 'Featurecat:', 'Featurecat for which location is defined'), + ('edit_featureval_category_vdefault', 'Featurecat category:', 'Featurecat for which category is defined'), + ('edit_featureval_fluid_vdefault', 'Featurecat fluid:', 'Featurecat for which fluid is defined'), + ('edit_featureval_function_vdefault', 'Featurecat function:', 'Featurecat for which function is defined'), + ('edit_featureval_location_vdefault', 'Featurecat location:', 'Featurecat for which location is defined'), + ('edit_insert_elevation_from_dem', 'Insert elevation from DEM:', 'If true, the the elevation will be automatically inserted from the DEM raster'), + ('edit_link_update_connecrotation', 'Automatic rotation for connec labels and vnodes:', 'If true, connec''s label and vnode symbol will be rotated using the angle of link'), + ('edit_linkcat_vdefault', 'Link catalog for automatic inserts:', 'Default value of link catalog'), + ('edit_municipality_vdefault', 'Municipality:', 'Default value of municipality parameter'), + ('edit_node2arc_update_disable', NULL, 'Parameter that controls updating values by gw_trg_topocontrol_node'), + ('edit_node_category_vdefault', 'Node category:', 'Default value of category type for node'), + ('edit_node_fluid_vdefault', 'Node fluid:', 'Default value of fluid type for node'), + ('edit_node_function_vdefault', 'Node function:', 'Default value of function type for node'), + ('edit_node_interpolate', 'Values to manage node interpolate tool:', 'Values to use with tool node interpolate'), + ('edit_node_location_vdefault', 'Node location:', 'Default value of location type for node'), + ('edit_noderotation_update_dsbl', 'Disable node rotation on update:', 'If true, the automatic rotation calculation on the nodes is disabled. Used for an absolute manual update of rotation field'), + ('edit_nodetype_vdefault', 'Default type for node (parent layer):', 'Default type for node when parent layer (v_edit_node) is used'), + ('edit_ownercat_vdefault', 'Owner catalog:', 'Default value of owner catalog'), + ('edit_pavement_vdefault', 'Pavement catalog:', 'Default value of pavement catalog'), + ('edit_pavementcat_vdefault', 'Pavement catalog:', 'Default value of pavement catalog'), + ('edit_plan_order_control', NULL, 'To manage if plan order control is executed or not. On some automatic processes is set to FALSE, on manual process is TRUE'), + ('edit_sector_vdefault', 'Sector:', 'Default value of sector parameter'), + ('edit_soilcat_vdefault', 'Soil catalog:', 'Default value of soilcat catalog'), + ('edit_statetype_0_vdefault', 'State type (Obsolete):', 'Default value of state type end parameter'), + ('edit_statetype_1_vdefault', 'State type (On service):', 'Default value of state type parameter'), + ('edit_statetype_2_vdefault', 'State type (Planified):', 'Default value of psector state type parameter'), + ('edit_typevalue_fk_disable', NULL, 'Used on code to disable fk in order to enhance performance for graphanalytics mapzones'), + ('edit_update_elevation_from_dem', 'Update elevation from DEM:', 'If true, the the elevation will be automatically updated from the DEM raster'), + ('edit_upsert_elevation_from_dem', 'Elevation from DEM:', 'If true, the the elevation will be automatically inserted from the DEM raster'), + ('edit_verified_vdefault', 'Verified:', 'Default value of verified parameter'), + ('edit_workcat_end_vdefault', 'Workcat end id:', 'Default value of workend catalog'), + ('edit_workcat_id_plan', 'Workcat id plan:', 'Default value of workcat id plan'), + ('edit_workcat_vdefault', 'Workcat id:', 'Default value of work catalog'), + ('epa_maxresults_peruser', NULL, 'Limit of maximum number of models for user'), + ('feat_connec_vdefault', 'Default catalog for connec:', 'Value default catalog for connec cat_feature'), + ('feat_cover_vdefault', 'Default catalog for cover:', 'Value default catalog for cover cat_feature'), + ('feat_ecover_vdefault', 'Default catalog for ecover', 'Value default catalog for ecover cat_feature'), + ('feat_epump_vdefault', 'Default catalog for epump', 'Value default catalog for epump cat_feature'), + ('feat_estep_vdefault', 'Default catalog for estep', 'Value default catalog for estep cat_feature'), + ('feat_frpump_vdefault', 'Default catalog for frpump:', 'Value default catalog for frpump cat_feature'), + ('feat_gully_vdefault', 'Default catalog for gully:', 'Value default catalog for gully cat_feature'), + ('feat_junction_vdefault', 'Default catalog for junction', 'Value default catalog for junction cat_feature'), + ('feat_link_vdefault', 'Default catalog for link:', 'Value default catalog for link cat_feature'), + ('feat_netelement_vdefault', 'Default catalog for netelement', 'Value default catalog for netelement cat_feature'), + ('feat_register_vdefault', 'Default catalog for register', 'Value default catalog for register cat_feature'), + ('feat_servconnection_vdefault', 'Default catalog for servconnection:', 'Value default catalog for servconnection cat_feature'), + ('feat_step_vdefault', 'Default catalog for step:', 'Value default catalog for step cat_feature'), + ('feat_varc_vdefault', 'Default catalog for varc', 'Value default catalog for varc cat_feature'), + ('feat_vconnec_vdefault', 'Default catalog for vconnec', 'Value default catalog for vconnec cat_feature'), + ('feat_vlink_vdefault', 'Default catalog for vlink', 'Value default catalog for vlink cat_feature'), + ('inp_options_advancedsettings', 'Additional settings for go2epa:', 'Additional settings for go2epa'), + ('inp_options_debug', 'Additional settings for go2epa:', 'Additional settings for go2epa'), + ('inp_options_vdefault', 'Default values:', 'Default values on go2epa generation inp file'), + ('om_profile_stylesheet', 'Profile stylesheet:', 'Parameter to customize stylesheet for profile tool'), + ('om_visit_cat_vdefault', 'Visit catalog:', 'Default value of visit catalog'), + ('om_visit_class_vdefault', 'Visit class:', 'Default value of visit class'), + ('om_visit_enddate_vdefault', 'Visit end date:', 'Default value of visit end date'), + ('om_visit_extcode_vdefault', 'Visit external code:', 'Default value of external code of a visit'), + ('om_visit_parameter_vdefault', 'Visit parameter:', 'Default value of parameter of an event'), + ('om_visit_paramvalue_vdefault', 'Visit parameter value:', 'Default value of parameter'), + ('om_visit_startdate_vdefault', 'Visit start date:', 'Default value of visit start date'), + ('om_visit_status_vdefault', 'Visit status:', 'Default value of visit status'), + ('plan_psector_current', 'Psector (Alternative):', 'Default value of psector parameter'), + ('plan_psector_disable_checktopology_trigger', NULL, 'Variable to disable the control for checktopology on trigger plan_psector'), + ('plan_psector_disable_forced_style', 'Disable forced style:', 'Variable to disable forced style changes to apply GwPlan'), + ('plan_psector_force_delete', 'Force delete planned feature:', 'Allow automatic delete of planified features when a psector is deleted and this feature is not present in another psector'), + ('plan_psector_gexpenses_vdefault', 'Psector gexpenses:', 'Default value of psector general expenses parameter'), + ('plan_psector_measurement_vdefault', 'Psector measurement:', 'Default value of psector measurement parameter'), + ('plan_psector_other_vdefault', 'Psector other:', 'Default value of psector other parameter'), + ('plan_psector_vat_vdefault', 'Psector vat:', 'Default value of psector vat value'), + ('plan_psector_vdefault', 'Psector (Alternative):', 'Default value of psector parameter'), + ('qgis_composers_folderpath', 'QGIS composers path:', 'Value of the composers path for user'), + ('qgis_dim_tooltip', 'Dimensioning tooltip:', 'If true, shows tooltip of selected node in order to capture it using dimensioning tool'), + ('qgis_form_docker', 'Force use docker for forms:', 'Force use docker for forms(only for those forms that are normalized to be dockerized like mincut or profile)'), + ('qgis_form_initproject_hidden', 'QGIS initproject hide check form:', 'QGIS initproject hide check form'), + ('qgis_form_log_hidden', 'Hide log form:', 'Hide log form after executing a process'), + ('qgis_info_docker', 'Force use docker for info:', 'Force use docker for info'), + ('qgis_init_guide_map', 'QGIS initproject show guidemap:', 'If true, qgis starts with all extension for exploitations'), + ('qgis_layers_set_propierties', 'QGIS initproject set layer propierties:', 'If true, qgis starts setting all layers with appropiate settigs from config_form_fields'), + ('qgis_qml_linelayer_path', 'Line QML file (temporal layer):', 'File path of qml line temporal layers loaded as results on ToC using toolbox functions'), + ('qgis_qml_pointlayer_path', 'Point QML file (temporal layer):', 'File path of qml point temporal layers loaded as results on ToC using toolbox functions'), + ('qgis_qml_polygonlayer_path', 'Polygon QML file (temporal layer):', 'File path of qml polygon temporal layers loaded as results on ToC using toolbox functions'), + ('qgis_toolbar_hidebuttons', NULL, 'Buttons to be disabled for user'), + ('utils_checkproject_database', 'Check database on load project:', 'Check database on load project'), + ('utils_debug_mode', 'Debug mode:', 'Variable to configure the debug mode of user'), + ('utils_formlabel_show_columname', 'Label with column_id on api forms:', 'Use column_id in spite of label to see the widget on api forms'), + ('utils_psector_strategy', 'Value for psector strategy:', 'Psector strategy'), + ('utils_transaction_mode', 'Transaction mode', 'Gets the transaction mode on functions'), + ('virtual_line_vdefault', NULL, 'Default name of line virtual layer'), + ('virtual_point_vdefault', NULL, 'Default name of point virtual layer'), + ('virtual_polygon_vdefault', NULL, 'Default name of polygon virtual layer'), + ('edit_addfield_p10_vdefault', 'greenvalve_param_1:', 'Default value of addfield greenvalve_param_1 for GREEN_VALVE'), + ('edit_addfield_p12_vdefault', 'greenvalve_param_2:', 'Default value of addfield greenvalve_param_2 for GREEN_VALVE'), + ('edit_addfield_p14_vdefault', 'airvalve_param_1:', 'Default value of addfield airvalve_param_1 for AIR_VALVE'), + ('edit_addfield_p16_vdefault', 'airvalve_param_2:', 'Default value of addfield airvalve_param_2 for AIR_VALVE'), + ('edit_addfield_p18_vdefault', 'checkvalve_param_1:', 'Default value of addfield checkvalve_param_1 for CHECK_VALVE'), + ('edit_addfield_p20_vdefault', 'checkvalve_param_2:', 'Default value of addfield checkvalve_param_2 for CHECK_VALVE'), + ('edit_addfield_p22_vdefault', 'pipe_param_1:', 'Default value of addfield pipe_param_1 for PIPE'), + ('edit_addfield_p24_vdefault', 'pressmeter_param_1:', 'Default value of addfield pressmeter_param_1 for PRESSURE_METER'), + ('edit_addfield_p26_vdefault', 'pressmeter_param_2:', 'Default value of addfield pressmeter_param_2 for PRESSURE_METER'), + ('edit_addfield_p28_vdefault', 'filter_param_1:', 'Default value of addfield filter_param_1 for FILTER'), + ('edit_addfield_p2_vdefault', 'outfallvalve_param_1:', 'Default value of addfield outfallvalve_param_1 for OUTFALL_VALVE'), + ('edit_addfield_p30_vdefault', 'filter_param_2:', 'Default value of addfield filter_param_2 for FILTER'), + ('edit_addfield_p32_vdefault', 'tank_param_1:', 'Default value of addfield tank_param_1 for TANK'), + ('edit_addfield_p34_vdefault', 'tank_param_2:', 'Default value of addfield tank_param_2 for TANK'), + ('edit_addfield_p36_vdefault', 'hydrant_param_1:', 'Default value of addfield hydrant_param_1 for HYDRANT'), + ('edit_addfield_p38_vdefault', 'hydrant_param_2:', 'Default value of addfield hydrant_param_2 for HYDRANT'), + ('edit_addfield_p4_vdefault', 'outfallvalve_param_2:', 'Default value of addfield outfallvalve_param_2 for OUTFALL_VALVE'), + ('edit_addfield_p6_vdefault', 'shtvalve_param_1:', 'Default value of addfield shtvalve_param_1 for SHUTOFF_VALVE'), + ('edit_addfield_p8_vdefault', 'shtvalve_param_2:', 'Default value of addfield shtvalve_param_2 for SHUTOFF_VALVE'), + ('edit_arccat_vdefault', 'Arc catalog:', 'Default value of arc catalog'), + ('edit_connec_linkcat_vdefault', 'Link catalog for automatic inserts:', 'Default value of link catalog'), + ('edit_connecat_vdefault', 'Connec catalog:', 'Default value of connec catalog'), + ('edit_nodecat_vdefault', 'Node catalog:', 'Default value of node catalog'), + ('edit_presszone_vdefault', 'Presszone:', 'Default value of presszone catalog'), + ('edit_state_vdefault', 'State:', 'Default value of state parameter'), + ('feat_adaptation_vdefault', 'Default catalog for adaptation', 'Value default catalog for adaptation cat_feature'), + ('feat_air_valve_vdefault', 'Default catalog for air_valve', 'Value default catalog for air_valve cat_feature'), + ('feat_bypass_register_vdefault', 'Default catalog for bypass_register', 'Value default catalog for bypass_register cat_feature'), + ('feat_change_vdefault', 'Default catalog for change:', 'Value default catalog for change cat_feature'), + ('feat_check_valve_vdefault', 'Default catalog for check_valve', 'Value default catalog for check_valve cat_feature'), + ('feat_clorinathor_vdefault', 'Default catalog for clorinathor', 'Value default catalog for clorinathor cat_feature'), + ('feat_conduit_vdefault', 'Default catalog for conduit:', 'Value default catalog for conduit cat_feature'), + ('feat_control_register_vdefault', 'Default catalog for control_register', 'Value default catalog for control_register cat_feature'), + ('feat_curve_vdefault', 'Default catalog for curve', 'Value default catalog for curve cat_feature'), + ('feat_ehydrant_plate_vdefault', 'Default catalog for ehydrant_plate', 'Value default catalog for ehydrant_plate cat_feature'), + ('feat_emanhole_vdefault', 'Default catalog for emanhole', 'Value default catalog for emanhole cat_feature'), + ('feat_emeter_vdefault', 'Default catalog for emeter', 'Value default catalog for emeter cat_feature'), + ('feat_endline_vdefault', 'Default catalog for endline', 'Value default catalog for endline cat_feature'), + ('feat_eprotect_band_vdefault', 'Default catalog for eprotect_band', 'Value default catalog for eprotect_band cat_feature'), + ('feat_eregister_vdefault', 'Default catalog for eregister', 'Value default catalog for eregister cat_feature'), + ('feat_evalve_vdefault', 'Default catalog for evalve', 'Value default catalog for evalve cat_feature'), + ('feat_expantank_vdefault', 'Default catalog for expantank', 'Value default catalog for expantank cat_feature'), + ('feat_filter_vdefault', 'Default catalog for filter', 'Value default catalog for filter cat_feature'), + ('feat_fl_contr_valve_vdefault', 'Default catalog for fl_contr_valve', 'Value default catalog for fl_contr_valve cat_feature'), + ('feat_flexunion_vdefault', 'Default catalog for flexunion', 'Value default catalog for flexunion cat_feature'), + ('feat_flowmeter_vdefault', 'Default catalog for flowmeter', 'Value default catalog for flowmeter cat_feature'), + ('feat_fountain_vdefault', 'Default catalog for fountain', 'Value default catalog for fountain cat_feature'), + ('feat_gen_purp_valve_vdefault', 'Default catalog for gen_purp_valve', 'Value default catalog for gen_purp_valve cat_feature'), + ('feat_green_valve_vdefault', 'Default catalog for green_valve', 'Value default catalog for green_valve cat_feature'), + ('feat_greentap_vdefault', 'Default catalog for greentap', 'Value default catalog for greentap cat_feature'), + ('feat_highpoint_vdefault', 'Default catalog for highpoint:', 'Value default catalog for highpoint cat_feature'), + ('feat_hydrant_plate_vdefault', 'Default catalog for hydrant plate:', 'Value default catalog for hydrant_plate cat_feature'), + ('feat_hydrant_vdefault', 'Default catalog for hydrant', 'Value default catalog for hydrant cat_feature'), + ('feat_manhole_vdefault', 'Default catalog for manhole', 'Value default catalog for manhole cat_feature'), + ('feat_netsamplepoint_vdefault', 'Default catalog for netsamplepoint', 'Value default catalog for netsamplepoint cat_feature'), + ('feat_outfall_valve_vdefault', 'Default catalog for outfall_valve', 'Value default catalog for outfall_valve cat_feature'), + ('feat_outfall_vdefault', 'Default catalog for outfall:', 'Value default catalog for outfall cat_feature'), + ('feat_pgully_vdefault', 'Default catalog for pgully:', 'Value default catalog for pgully cat_feature'), + ('feat_pipe_vdefault', 'Default catalog for pipe', 'Value default catalog for pipe cat_feature'), + ('feat_pipelink_vdefault', 'Default catalog for pipelink', 'Value default catalog for pipelink cat_feature'), + ('feat_pr_break_valve_vdefault', 'Default catalog for pr_break_valve', 'Value default catalog for pr_break_valve cat_feature'), + ('feat_pr_reduc_valve_vdefault', 'Default catalog for pr_reduc_valve', 'Value default catalog for pr_reduc_valve cat_feature'), + ('feat_pr_susta_valve_vdefault', 'Default catalog for pr_susta_valve', 'Value default catalog for pr_susta_valve cat_feature'), + ('feat_pressure_meter_vdefault', 'Default catalog for pressure_meter', 'Value default catalog for pressure_meter cat_feature'), + ('feat_protect_band_vdefault', 'Default catalog for protect band:', 'Value default catalog for protect_band cat_feature'), + ('feat_pump_pipe_vdefault', 'Default catalog for pump pipe:', 'Value default catalog for pump_pipe cat_feature'), + ('feat_pump_vdefault', 'Default catalog for pump', 'Value default catalog for pump cat_feature'), + ('feat_reduction_vdefault', 'Default catalog for reduction', 'Value default catalog for reduction cat_feature'), + ('feat_shutoff_valve_vdefault', 'Default catalog for shutoff_valve', 'Value default catalog for shutoff_valve cat_feature'), + ('feat_source_vdefault', 'Default catalog for source', 'Value default catalog for source cat_feature'), + ('feat_t_vdefault', 'Default catalog for t', 'Value default catalog for t cat_feature'), + ('feat_tank_vdefault', 'Default catalog for tank', 'Value default catalog for tank cat_feature'), + ('feat_tap_vdefault', 'Default catalog for tap', 'Value default catalog for tap cat_feature'), + ('feat_throttle_valve_vdefault', 'Default catalog for throttle_valve', 'Value default catalog for throttle_valve cat_feature'), + ('feat_valve_register_vdefault', 'Default catalog for valve_register', 'Value default catalog for valve_register cat_feature'), + ('feat_vgully_vdefault', 'Default catalog for vgully:', 'Value default catalog for vgully cat_feature'), + ('feat_virtual_node_vdefault', 'Default catalog for virtual node:', 'Value default catalog for virtual_node cat_feature'), + ('feat_water_connection_vdefault', 'Default catalog for water_connection', 'Value default catalog for water_connection cat_feature'), + ('feat_waterwell_vdefault', 'Default catalog for waterwell', 'Value default catalog for waterwell cat_feature'), + ('feat_wjoin_vdefault', 'Default catalog for wjoin', 'Value default catalog for wjoin cat_feature'), + ('feat_wtp_vdefault', 'Default catalog for wtp', 'Value default catalog for wtp cat_feature'), + ('feat_x_vdefault', 'Default catalog for x', 'Value default catalog for x cat_feature'), + ('inp_energy_demand_charge', 'Demand Charge:', 'Additional energy charge per maximum kilowatt usage.'), + ('inp_energy_price', 'Energy Price per Kwh:', 'Price of energy per kilowatt-hour'), + ('inp_energy_price_pattern', 'Price Pattern:', 'ID label of a time pattern used to represent variations in energy price with time.'), + ('inp_energy_pump_effic', 'Pump Efficiency:', 'Default pump efficiency'), + ('inp_options_accuracy', 'Accuracy:', 'Default value of accuracy, which prescribes the convergence criterion that determines when a hydraulic solution has been reached.'), + ('inp_options_buildup_mode', 'Buildup mode:', 'Mode to built up epanet assuming certain simplifications in order to make the first model as fast as possible (default management of null elevations, onfly transformations from tanks to reservoirs and status of valves and pumps)'), + ('inp_options_buildup_supply', 'Supply options for buildup model:', 'Parameters for supply buildup epanets models'), + ('inp_options_buildup_transport', 'Tansport options for buildup model:', 'Parameters for transport buildup epanets models'), + ('inp_options_checkfreq', 'Check frequency:', 'Default value of check freq, which sets the number of solution trials that pass during hydraulic balancing before the status of pumps, check valves, flow control valves and pipes connected to tanks are once again updated.'), + ('inp_options_damplimit', 'Damp limit:', 'Default value of check freq, which '), + ('inp_options_demand_model', 'Demand model:', 'Demand model:'), + ('inp_options_demand_multiplier', 'Demand multiplier:', 'Default value of demand multiplier, which is used to adjust the values of baseline demands for all junctions and all demand categories'), + ('inp_options_demandtype', 'Demand type:', 'Demand type to use on EPANET simulation'), + ('inp_options_diffusivity', 'Relative diffusivity:', 'Default value of diffusivity, which is the molecular diffusivity of the chemical being analyzed relative to that of chlorine in water. '), + ('inp_options_dscenario_priority', 'Demand scenario priority:', 'Dscenario priority'), + ('inp_options_emitter_exponent', 'Emitter exponent:', 'Default value of emitter exponent, which specifies the power to which the pressure at a junction is raised when computing the flow issuing from an emitter'), + ('inp_options_headloss', 'Headloss formula:', 'Default value of headloss, which selects a formula to use for computing head loss for flow through a pipe.'), + ('inp_options_hydraulics', 'Hydraulics:', 'Default value of hydraulics, which allows to either SAVE the current hydraulics solution to a file or USE a previously saved hydraulics solution. '), + ('inp_options_hydraulics_fname', 'Hydraulics fname:', 'Default value of hydraulics fnam, which is the name of file storing the hydraulic solution'), + ('inp_options_interval_from', 'From CRM interval:', 'CRM interval used on EPANET simulation'), + ('inp_options_interval_to', 'To CRM interval:', 'CRM interval used on EPANET simulation'), + ('inp_options_max_flowchange', 'Max flow change:', 'Max. flow change:'), + ('inp_options_max_headerror', 'Max head error:', 'Max. head error:'), + ('inp_options_maxcheck', 'Max check:', 'Default value of maxcheck, whcih is the number of solution trials after which periodic status checks on pumps, check valves flow control valves and pipes connected to tanks are discontinued '), + ('inp_options_minimum_pressure', 'Mininum pressure:', 'Mininum pressure:'), + ('inp_options_networkmode', 'Network geometry generator:', 'Generates the network onfly transformation to epa with 3 options; Faster: Only mandatory nodarc (EPANET valves and pumps); Normal: All nodarcs (GIS shutoff valves); Slower: All nodarcs and in addition treaming all pipes with vnode creating the vnodearcs'), + ('inp_options_nodarc_length', 'Nod2arc length:', 'Default value of length of arc created during the transformation of gis node features to arc model features'), + ('inp_options_node_id', 'Node id:', 'Node used to trace some polutant on quality mode'), + ('inp_options_pattern', 'Global pattern:', 'Default value of pattern, which is a default demand pattern to be applied to all junctions where no demand pattern was specified. '), + ('inp_options_patternmethod', 'Pattern for null values:', 'Pattern method used on EPANET simulation'), + ('inp_options_pressure_exponent', 'Pressure exponent:', 'Pressure exponent:'), + ('inp_options_quality_mode', 'Quality mode:', 'Default value of quality, which selects the type of water quality analysis to perform'), + ('inp_options_required_pressure', 'Required pressure:', 'Required pressure:'), + ('inp_options_rtc_period_id', 'CRM PERIOD value:', 'Billing period used to choose demands in order to export to EPANET'), + ('inp_options_selecteddma', 'Dma (NETWORK DMA):', 'Wich DMA will be exportad if networkmode is NETWORK DMA'), + ('inp_options_skipdemandpattern', 'Skip demand pattern:', 'Skip update demands and patterns when EPANET is used. Only for iterative model'), + ('inp_options_specific_gravity', 'Specific gravity:', 'Default value of specific gravity, which is the ratio of the density of the fluid being modeled to that of water at 4 deg. C (unitless)'), + ('inp_options_tolerance', 'Quality tolerance:', 'Default value of tolerance, which is the difference in water quality level below which one can say that one parcel of water is essentially the same as another.'), + ('inp_options_trials', 'Maximum trials:', 'Default value of trials, which are the maximum number of trials used to solve network hydraulics at each hydraulic time step of a simulation. '), + ('inp_options_unbalanced', 'If unbalanced:', 'Default value of unbalanced, which determines what happens if a hydraulic solution cannot be reached within the prescribed number of trials at some hydraulic time step into the simulation'), + ('inp_options_unbalanced_n', 'Additional trials:', 'Default value of number of trials for which will continue the search for a solution with the status of all links held fixed at their current settings.'), + ('inp_options_units', 'Units:', 'Default value of units, which sets the units in which flow rates are expressed'), + ('inp_options_valve_mode', 'Valve status:', 'Defines the status of valves (OPEN, CLOSED) in function of [INVENTORY][EPA TABLES}[MINCUT RESULT]. Inventory is ''as is'' status valve is defined on inventory. Epa is the possibility to use the status defined on epa tables (inp_shortpipe) modifiyng any times any want for user and Mincut Result is the posibility to use a defined status of valves as a result on a mincut scenario'), + ('inp_options_valve_mode_mincut_result', 'Mincut result id:', 'Related to `inp_options_valve_mode` when MINCUT RESULT is selected'), + ('inp_options_viscosity', 'Relative viscosity:', 'Default value of viscosity, which is the kinematic viscosity of the fluid being modeled relative to that of water at 20 deg. C'), + ('inp_reactions_bulk_order', 'Bulk Reaction Order:', 'Power to which concentration is raised when computing a bulk flow reaction rate'), + ('inp_reactions_global_bulk', 'Global Bulk Coefficient:', 'Default bulk reaction rate coefficient (Kb) assigned to all pipes.'), + ('inp_reactions_global_wall', 'Global Wall Coefficient:', 'Wall reaction rate coefficient (Kw) assigned to all pipes.'), + ('inp_reactions_limit_concentration', 'Limiting Concentration:', 'Maximum concentration that a substance can grow to or minimum value it can decay to.'), + ('inp_reactions_wall_coeff_correlation', 'Wall Coefficient Correlation:', 'Factor correlating wall reaction coefficient to pipe roughness.'), + ('inp_reactions_wall_order', 'Wall Reaction Order:', 'Power to which concentration is raised when computing a bulk flow reaction rate'), + ('inp_report_demand', 'Demand:', 'If true, value of node demand will be reported'), + ('inp_report_diameter', 'Diameter:', 'If true, value of arc diameter will be reported'), + ('inp_report_elevation', 'Elevation:', 'If true, value of node elevation will be reported'), + ('inp_report_energy', 'Energy:', 'Default value of energy, which determines if a table reporting average energy usage and cost for each pump is provided'), + ('inp_report_f_factor', 'F Factor:', 'Default value of factor of friction to show on epa result. Only this widget is editable on options dialogs because giswater result reader is not enabled to read other combinations'), + ('inp_report_file', 'File:', 'Default value of file, which supplies the name of a file to which the output report will be written'), + ('inp_report_flow', 'Flow:', 'If true, value of arc flow will be reported'), + ('inp_report_head', 'Head:', 'If true, value of node head will be reported'), + ('inp_report_headloss', 'Headloss:', 'If true, value of headloss will be reported'), + ('inp_report_length', 'Length:', 'If true, value of arc length will be reported'), + ('inp_report_links', 'Links:', 'Default value of links, which identifies which links will be reported'), + ('inp_report_nodes', 'Nodes:', 'Default value of nodes, which identifies which nodes will be reported'), + ('inp_report_pagesize', 'Pagesize:', 'Default value of pagesize, which sets the number of lines written per page of the output report. '), + ('inp_report_pressure', 'Pressure:', 'If true, value of node pressure will be reported'), + ('inp_report_quality', 'Quality:', 'If true, value of node quality will be reported'), + ('inp_report_reaction', 'Reaction:', 'If true, value of arc reaction will be reported'), + ('inp_report_setting', 'Setting:', 'If true, value of arc setting will be reported (roughness for pipes, speed for pumps, pressure/flow setting for valves)'), + ('inp_report_status', 'Status:', 'Default value of status, which determines whether a hydraulic status report should be generated'), + ('inp_report_summary', 'Summary:', 'Default value of summary, which determines whether a summary table of number of network components and key analysis options is generated'), + ('inp_report_velocity', 'Velocity:', 'If true, value of arc velocity will be reported'), + ('inp_times_duration', 'Duration:', 'Default value of duration of the simulation. Use 0 to run a single period snapshot analysis. '), + ('inp_times_hydraulic_timestep', 'Hydraulic timestep:', 'Default value of hydraulic timestep, which determines how often a new hydraulic state of the network is computed'), + ('inp_times_pattern_start', 'Pattern start:', 'Default value of pattern start, which is the time offset at which all patterns will start'), + ('inp_times_pattern_timestep', 'Pattern timestep:', 'Default value of pattern timestep, which is the interval between time periods in all time patterns.'), + ('inp_times_quality_timestep', 'Quality timestep:', 'Default value of quality timestep, which is the time step used to track changes in water quality throughout the network'), + ('inp_times_report_start', 'Report start:', 'Default value of report start, which is the length of time into the simulation at which output results begin to be reported'), + ('inp_times_report_timestep', 'Report timestep:', 'Default value of report timestep, which sets the time interval between which output results are reported'), + ('inp_times_rule_timestep', 'Rule timestep:', 'Default value of rule timestep, which is the time step used to check for changes in system status due to activation of rule-based controls between hydraulic time steps'), + ('inp_times_start_clocktime', 'Start clocktime:', 'Default value of start clocktime, which is the length of time into the simulation at which output results begin to be reported. '), + ('inp_times_statistic', 'Statistic:', 'Default value of statistic, which determines what kind of statistical post-processing should be done on the time series of simulation results generated'), + ('inp_timeseries', 'Timeseries:', 'Values for advanced exportation, managing timeseries for epanet'), + ('om_mincut_analysis_dinletsector', 'Mincut for dynamic inlet anl:', 'Use mincut to analyze dynamic inlet sector in spite of standard mincut workflow'), + ('om_mincut_analysis_dminsector', 'Mincut for minsector anl:', 'Use mincut to analyze minsector in spite of standard mincut workflow'), + ('om_mincut_analysis_pipehazard', 'Mincut for pipe hazard anl:', 'Use mincut to analyze pipehazard in spite of standard mincut workflow'), + ('plan_psector_auto_insert_connec', 'Automatic connec insertion:', 'Automatic insertion of connected connecs when inserting an arc') +) AS v(id, label, descript) +WHERE t.id = v.id; \ No newline at end of file diff --git a/dbmodel/schemas/addon/utils/final_pass/i18n/en_US/dbplan_price.sql b/dbmodel/schemas/addon/utils/final_pass/i18n/en_US/dbplan_price.sql new file mode 100644 index 0000000000..981b57a6fe --- /dev/null +++ b/dbmodel/schemas/addon/utils/final_pass/i18n/en_US/dbplan_price.sql @@ -0,0 +1,165 @@ +/* +This file is part of Giswater +The program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. +*/ + + +SET search_path = SCHEMA_NAME, public, pg_catalog; +UPDATE plan_price AS t SET descript = v.descript, text = v.text, price = REPLACE(v.price, ',', '.')::numeric FROM ( + VALUES + ('A_CON_DN100', 'Concrete sewer pipe with nominal external diameter of 1000mm', 'Concrete sewer pipe with nominal external diameter of 1000mm, sealing inside with cement mortar 1:6, base of 25cm filling up half of a pipe and protected by concrete layer HM-20/P/20/I.', '169.5776'), + ('A_CON_DN20', 'Concrete sewer pipe with nominal external diameter of 200mm', 'Concrete sewer pipe with nominal external diameter of 200mm, sealing inside with cement mortar 1:4, base of 25cm filling up half of a pipe and protected by concrete layer HM-20/P/20/I.', '20.1000'), + ('A_CON_DN30', 'Concrete sewer pipe with nominal external diameter of 300mm', 'Concrete sewer pipe with nominal external diameter of 300mm, sealing inside with cement mortar 1:4, base of 25cm filling up half of a pipe and protected by concrete layer HM-20/P/20/I.', '29.3500'), + ('A_CON_DN40', 'Concrete sewer pipe with nominal external diameter of 400mm', 'Concrete sewer pipe with nominal external diameter of 400mm, sealing inside with cement mortar 1:6, base of 25cm filling up half of a pipe and protected by concrete layer HM-20/P/20/I.', '57.3467'), + ('A_CON_DN60', 'Concrete sewer pipe with nominal external diameter of 600mm', 'Concrete sewer pipe with nominal external diameter of 600mm, sealing inside with cement mortar 1:6, base of 25cm filling up half of a pipe and protected by concrete layer HM-20/P/20/I.', '86.5815'), + ('A_CON_DN80', 'Concrete sewer pipe with nominal external diameter of 800mm', 'Concrete sewer pipe with nominal external diameter of 800mm, sealing inside with cement mortar 1:6, base of 25cm filling up half of a pipe and protected by concrete layer HM-20/P/20/I.', '116.1118'), + ('A_CON_O150', 'Ovoid concrete sewer pipe with dimensions 150x100cm', 'Ovoid concrete sewer pipe with dimensions 150x100cm, sealing inside with cement mortar 1:4,base of 10cm filling at 2/3 of a pipe and protected by concrete layer HM-20/P/20/I.', '276.4895'), + ('A_CON_R150', 'Rectangle concrete sewer pipe with with dimensions 1.50x1.50x1.00m', 'Rectangle concrete sewer pipe with dimensions 1.50x1.50x1.00m, assembled, placed on a settlement layer of concrete, joined by cement mortar and protected with concrete.', '360.0000'), + ('A_CON_R200', 'Rectangle concrete sewer pipe with with dimensions 2.0x2.0x1.00m', 'Rectangle concrete sewer pipe with dimensions 2.0x2.0x1.00m, assembled, placed on a settlement layer of concrete, joined by cement mortar and protected with concrete.', '480.0000'), + ('A_PEC_DN315', 'PEC sewer pipe with nominal internal diameter of 315mm', 'PEC sewer pipe, with internal smooth and outer corrugated wall, HDPE polyethylene, type B, application area U, external nominal diameter 315 mm, annular rigidity SN 4 kN / m2, according to UNE-EN 13476- 3, union of sleeves, with a degree of average difficulty and placed at the bottom of the ditch', '19.7000'), + ('A_PEC_DN40', 'PEC sewer pipe with nominal internal diameter of 400mm', 'PEC sewer pipe, with internal smooth and outer corrugated wall, HDPE polyethylene, type B, application area U, external nominal diameter 400 mm, annular rigidity SN 4 kN / m2, according to UNE-EN 13476- 3, union of sleeves, with a degree of average difficulty and placed at the bottom of the ditch', '29.3400'), + ('A_PRE_PE_DN20', 'Polyethylene pipe designation PE 100, nominal diameter 200mm', 'Polyethylene pipe designation PE 100, nominal diameter 200mm, nominal pressure of 10 bar, SDR series 17, UNE-EN 12201-2, welded and placed at the bottom of the trench.', '63.4800'), + ('A_PVC_DN20', 'PVC sewer pipe with nominal diameter of 200mm', 'PVC sewer pipe with nominal diameter of 200mm with helix form and rigid profile strengthen on the outside, self-supporting, elastic join with polyurethane adhesive putty and located on the ditch bottom.', '9.6727'), + ('A_PVC_DN25', 'PVC sewer pipe with nominal diameter of 250mm', 'PVC sewer pipe with nominal diameter of 250mm with helix form and rigid profile strengthen on the outside, self-supporting, elastic join with polyurethane adhesive putty and located on the ditch bottom.', '13.4500'), + ('A_PVC_DN30', 'PVC sewer pipe with nominal diameter of 300mm', 'PVC sewer pipe with nominal diameter of 300mm with helix form and rigid profile strengthen on the outside, self-supporting, elastic join with polyurethane adhesive putty and located on the ditch bottom.', '19.2000'), + ('A_PVC_DN40', 'PVC sewer pipe with nominal diameter of 400mm', 'PVC sewer pipe with nominal diameter of 400mm with helix form and rigid profile strengthen on the outside, self-supporting, elastic join with polyurethane adhesive putty and located on the ditch bottom.', '22.5959'), + ('A_PVC_DN60', 'PVC sewer pipe with nominal diameter of 600mm', 'PVC sewer pipe with nominal diameter of 600mm with helix form and rigid profile strengthen on the outside, self-supporting, elastic join with polyurethane adhesive putty and located on the ditch bottom.', '41.4094'), + ('A_PVC_DN80', 'PVC sewer pipe with nominal diameter of 800mm', 'PVC sewer pipe with nominal diameter of 800mm with helix form and rigid profile strengthen on the outside, self-supporting, elastic join with polyurethane adhesive putty and located on the ditch bottom.', '60.9223'), + ('A_WEIR_60', 'Weir formation', 'Weir formation', '0.0000'), + ('F9E1311N', 'Tile pavement for gray sidewalk of 20x20x4 cm on support of 3 cm of sand', 'Tile pavement for gray sidewalk of 20x20x4 cm, first class, top price, on support of 3 cm of sand, made in the work with concrete mixer of 165 l and portland cement', '35.3418'), + ('N_BGRT1', 'Prefabricated concrete interceptor with iron grate of 32x100cm.', 'Prefabricated concrete interceptor with iron grate of 32x100cm.', '80.0500'), + ('N_BGRT2', 'Prefabricated concrete interceptor with ductile iron grate of 20x100cm.', 'Prefabricated concrete interceptor with ductile iron grate of 20x100cm.', '71.1000'), + ('N_BGRT3', 'Prefabricated concrete interceptor with ductile iron grate of 10x100cm.', 'Prefabricated concrete interceptor with ductile iron grate of 10x100cm.', '59.5000'), + ('N_BGRT4', 'Prefabricated concrete interceptor with ductile iron grate of 13x100cm.', 'Prefabricated concrete interceptor with ductile iron grate of 13x100cm.', '64.1500'), + ('N_BGRT5', 'Prefabricated concrete interceptor with ductile iron grate of 48x100cm.', 'Prefabricated concrete interceptor with ductile iron grate of 48x100cm.', '298.5000'), + ('N_CH300x250-H300', 'Rectangle chamber with dimensions of 300x250m and 3m deep', 'Rectangle chamber with dimensions of 300x250m and 3m deep', '2900.0000'), + ('N_CONNECTION', 'Connection point of connec', 'Connection point of connec', '135.5000'), + ('N_JUMP100', 'Circular jump manhole with diameter of 100cm, 1,6m deep', 'Circular jump manhole with diameter of 100cm, 1,6m deep, with the base of sett over concrete layer HM-20P/20/I, walls of perforated brick of 11,5cm thick, plastered and slid inside with mixed mortar 1:0.5:4. Iron cover support and manhole''s cover with diameter of 70cm, and iron steps of 200x200x200 mm.', '330.0000'), + ('N_OF_STR', 'Construction of a rainwater overflow tank.', 'Construction of a rainwater overflow tank.', '750000.0000'), + ('N_PRD100-H160', 'Circular manhole with diameter of 100cm, 1,6m deep', 'Circular manhole with diameter of 100cm, 1,6m deep, with the base of sett over concrete layer HM-20P/20/I, walls of perforated brick of 11,5cm thick, plastered and slid inside with mixed mortar 1:0.5:4. Iron cover support and manhole''s cover with diameter of 70cm, and iron steps of 200x200x200 mm.', '709.3478'), + ('N_PRD100-H280', 'Circular manhole with diameter of 100cm, 2,8m deep', 'Circular manhole with diameter of 100cm, 2,8m deep, with the base of sett over concrete layer HM-20P/20/I, walls of perforated brick of 11,5cm thick, plastered and slid inside with mixed mortar 1:0.5:4. Iron cover support and manhole''s cover with diameter of 70cm, and iron steps of 200x200x200 mm.', '1034.7425'), + ('N_PRD80-H160', 'Circular manhole with diameter of 80cm, 1,6m deep', 'Circular manhole with diameter of 80cm, 1,6m deep, with the base of sett over concrete layer HM-20P/20/I, walls of perforated brick of 11,5cm thick, plastered and slid inside with mixed mortar 1:0.5:4. Iron cover support and manhole''s cover with diameter of 70cm, and iron steps of 200x200x200 mm.', '650.3955'), + ('N_PRD80-H280', 'Circular manhole with diameter of 80cm, 2,8m deep', 'Circular manhole with diameter of 80cm, 2,8m deep, with the base of sett over concrete layer HM-20P/20/I, walls of perforated brick of 11,5cm thick, plastered and slid inside with mixed mortar 1:0.5:4. Iron cover support and manhole''s cover with diameter of 70cm, and iron steps of 200x200x200 mm.', '955.9425'), + ('N_PRQ100-H160', 'Rectangle manhole with dimensions of 100x100cm ,1,6m deep', 'Rectangle manhole with dimensions of 100x100cm ,1,6m deep, with the base of sett over concrete layer HM-20P/20/I, walls of perforated brick of 11,5cm thick, plastered and slid inside with mixed mortar 1:0.5:4. Iron cover support and manhole''s cover with diameter of 70cm, and iron steps of 200x200x200 mm.', '684.9690'), + ('N_PRQ100-H280', 'Rectangle manhole with dimensions of 100x100cm ,2,8m deep', 'Rectangle manhole with dimensions of 100x100cm ,2,8m deep, with the base of sett over concrete layer HM-20P/20/I, walls of perforated brick of 11,5cm thick, plastered and slid inside with mixed mortar 1:0.5:4. Iron cover support and manhole''s cover with diameter of 70cm, and iron steps of 200x200x200 mm.', '1004.9955'), + ('N_PRQ150-H250', 'Rectangle manhole with dimensions of 150x150cm ,2,5m deep', 'Rectangle manhole with dimensions of 150x150cm ,2,5m deep, with the base of sett over concrete layer HM-20P/20/I, walls of perforated brick of 11,5cm thick, plastered and slid inside with mixed mortar 1:0.5:4. Iron cover support and manhole''s cover with diameter of 70cm, and iron steps of 200x200x200 mm.', '1059.3675'), + ('N_PRQ200-H250', 'Rectangle manhole with dimensions of 200x200cm ,2,5m deep', 'Rectangle manhole with dimensions of 200x200cm ,2,5m deep, with the base of sett over concrete layer HM-20P/20/I, walls of perforated brick of 11,5cm thick, plastered and slid inside with mixed mortar 1:0.5:4. Iron cover support and manhole''s cover with diameter of 70cm, and iron steps of 200x200x200 mm.', '1201.9955'), + ('N_PRQ60-H160', 'Rectangle manhole with dimensions of 60x60cm ,1,6m deep', 'Rectangle manhole with dimensions of 60x60cm ,1,6m deep, with the base of sett over concrete layer HM-20P/20/I, walls of perforated brick of 11,5cm thick, plastered and slid inside with mixed mortar 1:0.5:4. Iron cover support and manhole''s cover with diameter of 70cm, and iron steps of 200x200x200 mm.', '541.9963'), + ('N_PRQ80-H160', 'Rectangle manhole with dimensions of 80x80cm ,1,6m deep', 'Rectangle manhole with dimensions of 80x80cm ,1,6m deep, with the base of sett over concrete layer HM-20P/20/I, walls of perforated brick of 11,5cm thick, plastered and slid inside with mixed mortar 1:0.5:4. Iron cover support and manhole''s cover with diameter of 70cm, and iron steps of 200x200x200 mm.', '623.3080'), + ('N_PRQ80-H280', 'Rectangle manhole with dimensions of 80x80cm ,2,8m deep', 'Rectangle manhole with dimensions of 80x80cm ,2,8m deep, with the base of sett over concrete layer HM-20P/20/I, walls of perforated brick of 11,5cm thick, plastered and slid inside with mixed mortar 1:0.5:4. Iron cover support and manhole''s cover with diameter of 70cm, and iron steps of 200x200x200 mm.', '936.4395'), + ('N_PUMP_STN', 'Construction of a sewage pumping station.', 'Construction of a sewage pumping station.', '50000.0000'), + ('N_SGRT1', 'Prefabricated concrete gully with ductile iron cover of 78x36x60cm.', 'Prefabricated concrete gully with ductile iron cover of 78x36x60cm.', '245.0000'), + ('N_SGRT2', 'Prefabricated concrete gully with ductile iron cover of 78x34x55cm.', 'Prefabricated concrete gully with ductile iron cover of 78x34x55cm.', '214.5000'), + ('N_SGRT3', 'Prefabricated concrete gully with ductile iron cover of 64x30x60cm.', 'Prefabricated concrete gully with ductile iron cover of 64x30x60cm.', '200.2200'), + ('N_SGRT4', 'Prefabricated concrete gully with ductile iron cover of 77x34x60cm.', 'Prefabricated concrete gully with ductile iron cover of 77x34x60cm.', '225.5000'), + ('N_SGRT5', 'Prefabricated concrete gully with ductile iron cover of 98x48x70cm.', 'Prefabricated concrete gully with ductile iron cover of 98x48x70cm.', '298.5000'), + ('N_SGRT6', 'Prefabricated concrete gully with ductile iron cover of 56x30x50cm.', 'Prefabricated concrete gully with ductile iron cover of 56x30x50cm.', '197.4000'), + ('N_SGRT7', 'Prefabricated concrete gully with ductile iron cover of 50x25x50cm.', 'Prefabricated concrete gully with ductile iron cover of 50x25x50cm.', '185.9500'), + ('N_STR500x350x475', 'Construction of retention tank of rainwater of dimensions 500x350x475cm.', 'Construction of retention tank of rainwater of dimensions 500x350x475cm.', '106000.0000'), + ('N_VAL_01', 'Check valve of PVC, with diameter of 400mm.', 'Check valve of PVC, with diameter of 400mm,with polypropylene clapper', '1447.5100'), + ('PROTECT_SERVICES', 'Protection of extsting services', 'Location and protection of all existing services that maybe affected by the works.', '0.0300'), + ('SECURITY_HEALTH', 'Health and safety of works', 'Plan for the implementation of health and safety throughout the works according to the program and instructions of project management.', '0.0200'), + ('S_EXC', 'Excavation of trench up to 2 m wide and up to 4 meters deep', 'Excavation of trench up to 2 m wide and up to 4 meters deep in compact ground with backhoe and large mechanical load of excavated material', '9.0324'), + ('S_NULL', 'Filling conduit material', 'Filling conduit material', '0.0000'), + ('S_REB', 'Filling and bottom of ditch of more than 1.5 and up to 2 m', 'Filling and compact of ditch of more than 1.5 and up to 2 m, with selected material from the excavation itself in thick, batch of up to 25 cm, using vibrating roller to compact with 95% compaction PM.', '8.9241'), + ('S_REP', 'Level and compact of ditch soil', 'Level and compact of ditch soil of more than 0,6 and less than 1,5m, with compact of 90% PM.', '2.5708'), + ('S_TRANS', 'Transport of waste to authorized waste management facility', 'Transport of waste to authorized waste management facility, with 12 t truck and waiting time for loading machine, with a distance of more than 15 and up to 20 km', '8.1164'), + ('UNEXPECTED', 'Unexpected work', 'Implementation of the unexpected work units in the project application with the same price.', '0.0500'), + ('F9265C51', 'Concrete base of HM-20/B/10/ I, soft consistency with mechanical interior transport', 'Concrete base of HM-20/B/10/I, of soft consistency and maximum size of 10 mm granulate, with mechanical interior transport with manual extension and vibration, with a rusty finish', '87.0445'), + ('F931201F', 'Base of artificial gravels, with extended and compacted material at 95% of the PM', 'Base of artificial gravels, with extended and compacted material at 95% of the PM', '29.2250'), + ('F9G1A732', 'Concrete flooring without additives HA-30/P/20/IIIa + E of plastic consistency', 'Concrete flooring without additives HA-30/P/20/IIIa + E of plastic consistency, maximum size of aggregate, 20 mm, scattered from truck, manual extended and vibration, riveted finish', '105.6413'), + ('F9H11251', 'Continuous bituminous mixing pavement type AC 16 surf B50 / 70 D (D-12)', 'Continuous bituminous mixing pavement type AC 16 surf B50 / 70 D (D-12), with asphalt penetration bitumen, dense granulometry for tread and granite granulate, extended and compacted', '55.8791'), + ('F9H118E1', 'Continuous bituminous mixing flooring type AC 22 surf BC50 / 70 S (S-20)', 'Continuous bituminous mixing flooring type AC 22 surf BC50 / 70 S (S-20)', '57.3861'), + ('F9J12X40', 'Primer irrigation with specific cationic bituminous emulsion for irrigation of priming', 'Primer irrigation with specific cationic bituminous emulsion for irrigation of priming, ECI type, with a provision of 1 kg / m2', '0.5221'), + ('F9J13Y40', 'Adhesive irrigation with modified bituminous emulsion with fast cationic polymer', 'Adhesive irrigation with modified bituminous emulsion with fast cationic polymers, ECR-1d-m type, with a 1 kg / m2', '0.4334'), + ('P_ASPHALT-10', 'Pavement of continuous hot bituminous mix 10cm thick', 'Pavement of continuous hot bituminous mix 10cm thick (6+4), including the base of artificial ballast to 95% of PM, primer and adhesion.', NULL), + ('P_CONCRETE-20', 'Concrete pavement HM-30/P/20/I+E, 20cm thick', 'Concrete pavement HM-30/P/20/I+E, 20cm thick, scattered from the truck, and extended vibratge mechanic, mechanical swirling, including the base of artificial ballast to 95% of PM.', NULL), + ('P_SLAB-4P', 'Slab pavement 20x20x4 cm', 'Slab pavement 20x20x4 cm, 1st class, higher price, with sand support of 3cm, hammered on mixed mortar 1:0.5:4, made on site with cement mix 165 and concrete.', NULL), + ('S_TRENCH', 'Trenchlining of excavation', 'Trenchlining of excavation', '30.0000'), + ('VIRTUAL_M', 'Null price for m virtual elements', 'Null price for m virtual elements', '0.0000'), + ('VIRTUAL_M2', 'Null price for m2 virtual elements', 'Null price for m2 virtual elements', '0.0000'), + ('VIRTUAL_M3', 'Null price for m3 virtual elements', 'Null price for m3 virtual elements', '0.0000'), + ('VIRTUAL_U', 'Null price for unitary virtual elements', 'Null price for unitary virtual elements', '0.0000'), + ('A_FC110_PN10', 'Polyethylene tube designation PE 100, of 110 mm nominal diameter, 10 bar of nominal pressure', 'Polyethylene tube designation PE 100, of 110 mm nominal diameter, 10 bar of nominal pressure, series SDR 17, UNE-EN 12201-2, welded and placed at the bottom of the ditch', '20.0900'), + ('A_FC160_PN10', 'Polyethylene tube designation PE 100, of 160 mm nominal diameter, 10 bar of nominal pressure', 'Polyethylene tube designation PE 100, of 160 mm nominal diameter, 10 bar of nominal pressure, series SDR 17, UNE-EN 12201-2, welded and placed at the bottom of the ditch', '31.7400'), + ('A_FC63_PN10', 'Polyethylene tube designation PE 100, of 63 mm nominal diameter, 10 bar of nominal pressure', 'Polyethylene tube designation PE 100, of 63 mm nominal diameter, 10 bar of nominal pressure, series SDR 17, UNE-EN 12201-2, welded and placed at the bottom of the ditch', '12.0700'), + ('A_FD150', 'Ductile cast iron tube, DN = 150mm, bell-shaped joint with water', 'Ductile cast iron tube with a nominal internal diameter of 150 mm, according to ISO 2531, a hood joint with elastomeric ring for water and watertight contrabrity and placed at the bottom of the ditch', '36.5100'), + ('A_FD200', 'Ductile cast iron tube, DN = 200mm, bell-shaped joint with water', 'Ductile cast iron tube with a nominal internal diameter of 150 mm, according to ISO 2531, a hood joint with elastomeric ring for water and watertight contrabrity and placed at the bottom of the ditch', '47.6700'), + ('A_PEHD110_PN16', 'Polyethylene tube designation PE 100, of 110 mm nominal diameter, 16 bar of nominal pressure', 'Polyethylene tube designation PE 100, of 110 mm nominal diameter, 16 bar of nominal pressure, series SDR 11, UNE-EN 12201-2, welded and placed at the bottom of the ditch', '22.4400'), + ('A_PELD110_PN10', 'Polyethylene pipe, with nominal diameter of 110mm, nominal pressure 10bar', 'Polyethylene pipe ,designation PE 100, with nominal diameter of 110mm, nominal pressure 10bar, series SDR 17, UNE-EN 12201-2, welded and placed on trench bottom.', '20.0900'), + ('A_PVC110_PN16', 'PVC tube of 110 mm of nominal external diameter, of 16 bar of nominal pressure', 'PVC tube of 110 mm of nominal external diameter, of 16 bar of nominal pressure, elastic union with elastomeric ring of watertight, according to the norm UNE-EN 1452-2 and placed at the bottom of the ditch', '19.4300'), + ('A_PVC160_PN16', 'PVC tube of 160 mm of nominal external diameter, of 16 bar of nominal pressure', 'PVC tube of 160 mm of nominal external diameter, of 16 bar of nominal pressure, elastic union with elastomeric ring of watertight, according to the norm UNE-EN 1452-2 and placed at the bottom of the ditch', '27.6400'), + ('A_PVC200_PN16', 'PVC tube of 200 mm of nominal external diameter, of 16 bar of nominal pressure', 'PVC tube of 200 mm of nominal external diameter, of 16 bar of nominal pressure, elastic union with elastomeric ring of watertight, according to the norm UNE-EN 1452-2 and placed at the bottom of the ditch', '35.1000'), + ('A_PVC25_PN10', 'PVC sewer pipe with nominal exterior diameter of 25mm, nominal pressure of 10 bar', 'PVC sewer pipe with nominal exterior diameter of 25mm, nominal pressure of 10 bar', '8.1500'), + ('A_PVC32_PN10', 'PVC sewer pipe with nominal exterior diameter of 32mm, nominal pressure of 10 bar', 'PVC sewer pipe with nominal exterior diameter of 32mm, nominal pressure of 10 bar', '8.9500'), + ('A_PVC50_PN10', 'PVC sewer pipe with nominal exterior diameter of 50mm, nominal pressure of 10 bar', 'PVC sewer pipe with nominal exterior diameter of 50mm, nominal pressure of 10 bar', '11.4300'), + ('A_PVC63_PN10', 'PVC tube of 63 mm of nominal external diameter, of 16 bar of nominal pressure', 'PVC tube of 63 mm of nominal external diameter, of 16 bar of nominal pressure, elastic union with elastomeric ring of watertight, according to the norm UNE-EN 1452-2 and placed at the bottom of the ditch', '12.2100'), + ('A_PVC90_PN16', 'PVC sewer pipe with nominal exterior diameter of 90mm, nominal pressure of 16 bar', 'PVC sewer pipe with nominal exterior diameter of 90mm, nominal pressure of 16 bar, with elastic join and elastomeric ring, according to the UNE-EN 1452-2; placed on the bottom trench.', '16.9000'), + ('F9E1311N', 'Tile pavement for gray sidewalk of 20x20x4 cm on support of 3 cm of sand', 'Tile pavement for gray sidewalk of 20x20x4 cm, first class, top price, on support of 3 cm of sand, made in the work with concrete mixer of 165 l and portland cement', '65.3418'), + ('N_AIRVAL_DN50', 'Embossed air valve of 50 mm DN, 16 bar of test pressure', 'Embossed air valve of 50 mm DN, 16 bar of test pressure, smelting, high price and mounted in a buried channeling', '192.4000'), + ('N_CHKVAL100_PN10', 'Check valve with tilting disc check, with diameter nominal 100mm, nominal pressure of 10 bar', 'Check valve with tilting disc check, according to UNE-EN 12334, with flanges, with diameter nominal 100mm, nominal pressure of 10 bar, iron nodular body cast EN-GJS-400-15 (GGG40) and epoxy resin coating (200 micres), iron nodular tilting discs EN-GJS-400-15 (GGG40), elastic closure seatclosing, mounted in a mini manhole. ', '184.2100'), + ('N_CHKVAL150_PN10', 'Check valve with tilting disc check, with diameter nominal 150mm, nominal pressure of 10 bar', 'Check valve with tilting disc check, according to UNE-EN 12334, with flanges, with diameter nominal 150mm, nominal pressure of 10 bar, iron nodular body cast EN-GJS-400-15 (GGG40) and epoxy resin coating (200 micres), iron nodular tilting discs EN-GJS-400-15 (GGG40), elastic closure seatclosing, mounted in a mini manhole. ', '312.5200'), + ('N_CHKVAL200_PN10', 'Check valve with flanges, of 200 mm in nominal diameter, of 10 bar of nominal pressure', 'Check valve according to UNE-EN 12334 standard, with flanges, of 200 mm in nominal diameter, of 10 bar of nominal pressure, nodular cast iron body EN-GJS-400-15 (GGG40) with coating of epoxy resin (200 microns) , nodular cast iron cladding EN-GJS-400-15 (GGG40), elastic seating closure, mounted a buried pipe', '556.9300'), + ('N_CHKVAL300_PN10', 'Check valve with flanges, of 300 mm in nominal diameter, of 10 bar of nominal pressure', 'Check valve according to UNE-EN 12334 standard, with flanges, of 300 mm in nominal diameter, of 10 bar of nominal pressure, nodular cast iron body EN-GJS-400-15 (GGG40) with coating of epoxy resin (200 microns) , nodular cast iron cladding EN-GJS-400-15 (GGG40), elastic seating closure, mounted a buried pipe', '998.4800'), + ('N_CHKVAL63_PN10', 'Check valve with tilting disc check, with diameter nominal 63mm, nominal pressure of 10 bar', 'Check valve with tilting disc check, according to UNE-EN 12334, with flanges, with diameter nominal 63mm, nominal pressure of 10 bar, iron nodular body cast EN-GJS-400-15 (GGG40) and epoxy resin coating (200 micres), iron nodular tilting discs EN-GJS-400-15 (GGG40), elastic closure seatclosing, mounted in a mini manhole. ', '95.3500'), + ('N_CUR30_PVC110', 'Connection of DN 110mm, on the 30° angle', 'Connection of DN 110mm, on the 30° angle, with 2 bell unions with with an elastomeric ring for water and counter flange,placed on the trench bottom.', '103.0900'), + ('N_CUR45_PVC110', 'Connection of DN 110mm, on the 45° angle', 'Connection of DN 110mm, on the 45° angle, with 2 bell unions with with an elastomeric ring for water and counter flange,placed on the trench bottom.', '103.0900'), + ('N_ENDLINE', 'Cavity plug', 'Cavity plug', '92.5600'), + ('N_ETAP', 'Water treatment plant', 'Water treatment plant', '1950000.0000'), + ('N_EXPANTANK', 'Expansion tank ', 'Expansion tank ', '3950.0000'), + ('N_FILTER-01', 'Filter strainer with Y-shaped flanges, nominal diameter of 200mm', 'Filter strainer with Y-shaped flanges, nominal diameter of 200mm, nominal pressure of 16bar, gray cast iron EN-GJL-250 (GG25), mesh stainless steel 1.4301 (AISI 304) with perforations of diameter 1,5mm, mounted in a mini manhole.', '1114.2600'), + ('N_FLEXUNION', 'Flexunion, nominal pressure of 10 bar', 'Flexunion, nominal pressure of 10 bar', '15.5000'), + ('N_FLOWMETER110', 'Flow meter with connections with 100 mm diameter', 'Flow meter,designation G400 according to UNE 60510 with 100 mm diameter bundled connections, of 650 m3 / h (n), at most, of turbine and mounted between tubes', '2278.7700'), + ('N_FLOWMETER200', 'Flow meter with connections with 200 mm diameter', 'Flow meter designation G400 according to UNE 60510 with 200 mm diameter bundled connections, of 2500 m3 / h (n), at most, of turbine and mounted between tubes', '13639.3300'), + ('N_GREVAL110_PN16', 'Iron irigation head, with hose fitting diameter of 110mm', 'Iron irigation head, with hose fitting diameter of 110mm', '190.3600'), + ('N_GREVAL50_PN16', 'Iron irigation head, with hose fitting diameter of 50mm', 'Iron irigation head, with hose fitting diameter of 50mm', '120.4500'), + ('N_GREVAL63_PN16', 'Iron irigation head, with hose fitting diameter of 63mm', 'Iron irigation head, with hose fitting diameter of 63mm', '145.5400'), + ('N_HYD_1x100', 'Buried hydrant, with an output of 100 mm', 'Buried hydrant, with an output of 100 mm in diameter and 4" in diameter of connection to the pipe, mounted outside', '501.5200'), + ('N_HYD_1x110-2x63', 'Hydrant with output diameter of 110 and 63mm.', 'Hydrant buried with mini manhole, with output diameter of 100 and 63mm and diameter of pipe connection of 4", placed on the outside.', '689.3400'), + ('N_JUN110', '110 mm DN cast iron connection sleeve with 2 bell unions', '110 mm DN cast iron connection sleeve with 2 bell unions with elastomeric ring for water and watertight contrabrity and placed at the bottom of the ditch', '103.0900'), + ('N_JUN160', '160 mm DN cast iron connection sleeve with 2 bell unions', '160 mm DN cast iron connection sleeve with 2 bell unions with elastomeric ring for water and watertight contrabrity and placed at the bottom of the ditch', '186.0000'), + ('N_JUN200', '200 mm DN cast iron connection sleeve with 2 bell unions', '200 mm DN cast iron connection sleeve with 2 bell unions with elastomeric ring for water and watertight contrabrity and placed at the bottom of the ditch', '235.3200'), + ('N_JUN63', '63 mm DN cast iron connection sleeve with 2 bell unions', '63 mm DN cast iron connection sleeve with 2 bell unions with elastomeric ring for water and watertight contrabrity and placed at the bottom of the ditch', '103.0900'), + ('N_JUNCT_CHNGMAT', 'Change of material', 'Change of material', '100.0000'), + ('N_NETELEMENT', 'Network element', 'Network element', '0.0000'), + ('N_NETSAMPLEP', 'Network sampling point', 'Network sampling point', '0.0000'), + ('N_OUTVAL-01', 'Iron automatic outfall valve, with diameter nominal of 150mm', 'Iron automatic outfall valve, with diameter nominal of 150mm, placed on the pipe, with unions and accessories included fully installed.', '340.6300'), + ('N_PRESME110_PN16', 'Glycerin manometer DN-100 mm with key of passage', 'Glycerin manometer DN-100 mm with key of passage, including unions, auxiliary elements and necessary accessories for its operation, mounted in the pipe and tested', '144.5300'), + ('N_PRESME200_PN16', 'Glycerine manometer DN-200mm, with stopcock', 'Glycerine manometer DN-200mm, with stopcock, including unions, auxiliary elements and accessories necessary for the operation, mounted on the pipe.', '249.3600'), + ('N_PRVAL100_6/16', 'Pressure reduction valve with flanges, 100 mm DN with a maximum pressure of 16 bar', 'Pressure reduction valve with flanges, 100 mm DN with a maximum pressure of 16 bar and a maximum differential of 15 bar, of bronze, high price and mounted in a bureid pipe', '4417.4800'), + ('N_PRVAL150_6/16', 'Pressure reduction valve with flanges, 150 mm DN with a maximum pressure of 16 bar', 'Pressure reduction valve with flanges, 150 mm DN with a maximum pressure of 16 bar and a maximum differential of 15 bar, of bronze, high price and mounted in a bureid pipe', '6134.3200'), + ('N_PRVAL200_6/16', 'Pressure reduction valve with flanges, 200 mm DN with a maximum pressure of 16 bar', 'Pressure reduction valve with flanges, 200 mm DN with a maximum pressure of 16 bar and a maximum differential of 15 bar, of bronze, high price and mounted in a bureid pipe', '7769.2900'), + ('N_PUMP-01', 'Pressure group for installations against fires of maximum flow rate 50 m3/h', 'Pressure group for installations against fires of maximum flow rate 50 m3 / h, minimum pressure of 5 bar and maximum 6 bar with 1 service pump and 1 pump jockey and mounted on bench', '4210.7800'), + ('N_REDUC_110-63', 'Iron reduction form 110mm to 90mm, nominal pressure of 16 bar', 'Iron reduction form 110mm to 63mm, nominal pressure of 16 bar', '125.1500'), + ('N_REDUC_110-90', 'Iron reduction form 110mm to 90mm, nominal pressure of 16 bar', 'Iron reduction form 110mm to 90mm, nominal pressure of 16 bar', '125.1500'), + ('N_REDUC_160-110', 'Iron reduction form 180mm to 110mm, nominal pressure of 16 bar', 'Iron reduction form 160mm to 110mm, nominal pressure of 16 bar', '125.1500'), + ('N_REDUC_160-90', 'Iron reduction form 160mm to 90mm, nominal pressure of 16 bar', 'Iron reduction form 160mm to 90mm, nominal pressure of 16 bar', '198.5000'), + ('N_REDUC_200-110', 'Iron reduction form 200mm to 110mm, nominal pressure of 16 bar', 'Iron reduction form 200mm to 110mm, nominal pressure of 16 bar', '188.3100'), + ('N_REGISTER', 'Register of 57x57x90cm, of brick and interior batter, with frame and cover of 60x60x5cm of ductile i', 'Register of 57x57x90cm, of brick and interior batter, with frame and cover of 60x60x5cm of ductile i', '155.5000'), + ('N_SHTVAL110_PN16', 'Manual shutoff valve with thread of nominal diameter 110mm, nominal pressure 16 bar', 'Manual shutoff valve with thread of nominal diameter 110mm, nominal pressure 16 bar, with iron nodular body cast EN-GJS-500-7 (GGG50) and nodular iron cover EN-GJS-500-7 (GGG50) with epoxy resin coating (250 micres), iron leads+EPDM and elastic closure seatclosing, stainless steel shaft 1.4021 (AISI 420), with iron steering wheel mounted on the surface.', '98.4100'), + ('N_SHTVAL160_PN16', 'Manual shutoff valve with thread of nominal diameter 160mm, nominal pressure 16 bar', 'Manual shutoff valve with thread of nominal diameter 160mm, nominal pressure 16 bar, with iron nodular body cast EN-GJS-500-7 (GGG50) and nodular iron cover EN-GJS-500-7 (GGG50) with epoxy resin coating (250 micres), iron leads+EPDM and elastic closure seatclosing, stainless steel shaft 1.4021 (AISI 420), with iron steering wheel mounted on the surface.', '120.3200'), + ('N_SHTVAL63_PN16', 'Manual shutoff valve with thread of nominal diameter 63mm, nominal pressure 16 bar', 'Manual shutoff valve with thread of nominal diameter 63mm, nominal pressure 16 bar, with iron nodular body cast EN-GJS-500-7 (GGG50) and nodular iron cover EN-GJS-500-7 (GGG50) with epoxy resin coating (250 micres), iron leads+EPDM and elastic closure seatclosing, stainless steel shaft 1.4021 (AISI 420), with iron steering wheel mounted on the surface.', '75.3200'), + ('N_SOURCE-01', 'Hydraulic structure intended to derive water', 'Hydraulic structure intended to derive water', '141.0200'), + ('N_T110-110_PN16', 'Druid derivation of 110 mm DN with two bell unions', 'Druid derivation of 110 mm DN with two bell unions and elastomeric ring of watertightness and sealing contrabrity, 90 ° branch, 110 mm DN gusset and placed at the bottom of the ditch', '156.0200'), + ('N_T110-63_PN16', 'PVC derivation DN110mm, 90° branches of 63mm', 'PVC dervation of DN 110mm, nominal pressure of 16bar , with two elastic unions with elastometric ring, 90° branches of 63mm;placed on the bottom trench.', '35.0000'), + ('N_T160-110-63', 'FD derivation of DN 160 mm with 90° branches of 110 and 63mm', 'Ductile iron derivation of DN 160 mm with two bell shaped unions with an elastomeric ring for water and counter flange,90° branches of 110 and 63mm; placed on the bottom trench.', '201.0000'), + ('N_T160-110_PN16', 'Druid derivation of 160 mm DN with two bell unions. Embedded 110mm', 'Druid derivation of 160 mm DN with two bell unions and elastomeric ring of watertightness and sealing contrabrity, 90 ° branch, 110 mm DN gusset and placed at the bottom of the ditch', '209.0800'), + ('N_T160-160_PN16', 'Druid derivation of 160 mm DN with two bell unions. Embedded 160mm', 'Druid derivation of 160 mm DN with two bell unions and elastomeric ring of watertightness and sealing contrabrity, 90 ° branch, 160 mm DN gusset and placed at the bottom of the ditch', '210.6700'), + ('N_T160-63_PN16', 'Druid derivation of 160 mm DN with two bell unions. Embedded 63mm', 'Druid derivation of 160 mm DN with two bell unions and elastomeric ring of watertightness and sealing contrabrity, 90 ° branch, 63 mm DN gusset and placed at the bottom of the ditch', '204.3400'), + ('N_T200-160_PN16', 'Druid derivation of 200 mm DN with two bell unions. Embedded 160mm', 'Druid derivation of 200 mm DN with two bell unions and elastomeric ring of watertightness and sealing contrabrity, 90 ° branch, 160 mm DN gusset and placed at the bottom of the ditch', '260.3000'), + ('N_T63-63-110', 'PVC dervation of DN 63mm, nominal pressure of 16bar, 90° branches of 63 and 110mm', 'PVC dervation of DN 63mm, nominal pressure of 16bar , with two elastic unions with elastometric ring, 90° branches of 63 and 110mm;placed on the bottom trench.', '33.0000'), + ('N_T63-63_PN16', 'PVC dervation of DN 63mm, nominal pressure of 16bar, 90° branches of 63mm', 'PVC dervation of DN 63mm, nominal pressure of 16bar , with two elastic unions with elastometric ring, 90° branches of 63mm;placed on the bottom trench.', '28.0000'), + ('N_TANK_30x10x3', 'Construction of potable water tank of dimensions 30x10x3m.', 'Construction of potable water tank of dimensions 30x10x3m.', NULL), + ('N_WATER-CONNECT', 'Connection point of connec', 'Connection point of connec', '135.5000'), + ('N_WATERWELL-01', 'Fully equipied construction of waterwell ', 'Fully equipied construction of waterwell ', '6000.0000'), + ('N_XDN110-90_PN16', 'Derivation on T, with diameter nominal 110mm and 90mm, nominal pressure of 16 bar', 'Derivation on T, with diameter nominal 110mm and 90mm, nominal pressure of 16 bar', '85.3000'), + ('N_XDN110_PN16', 'Derivation on T, with diameter nominal 110mm, nominal pressure of 16 bar', 'Derivation on T, with diameter nominal 110mm, nominal pressure of 16 bar', '90.9500'), + ('PROTEC_SERVIS', 'Protection of extsting services', 'Location and protection of all existing services that maybe affected by the works.', '0.5000'), + ('SECURITY_HEALTH', 'Health and safety of works', 'Plan for the implementation of health and safety throughout the works according to the program and instructions of project management.', '0.3000'), + ('S_EXC', 'Excavation of trench up to 2 m in width and up to 4 m in depth', 'Excavation of trench up to 2 m in width and up to 4 m in depth, in compact terrain, with excavator shovel and load mechanics of excavated material', '9.0324'), + ('S_NULL', 'Filling pipe material', 'Filling pipe material', '0.0000'), + ('S_REB', 'Reversing and trenching of width ditch more than 1.5 and up to 2 m', 'Reversing and trenching of width ditch more than 1.5 and up to 2 m, with selected material, in tongades of thickness up to 25 cm, using vibratory roller to compact, with 95% PM compaction', '8.9241'), + ('S_REP', 'Revision and trenching of dense soil of more than 0.6 and less than 1.5 m in width', 'Revision and trenching of dense soil of more than 0.6 and less than 1.5 m in width, with 90% PM compaction', '2.5708'), + ('S_TRANS', 'Transport of waste to authorized waste management facility, with 12 t truck and waiting time for loa', 'Transport of waste to authorized waste management facility, with 12 t truck and waiting time for loading, with a route of more than 15 and up to 20 km', '8.1164') +) AS v(id, descript, text, price) +WHERE t.id = v.id; \ No newline at end of file diff --git a/dbmodel/schemas/addon/utils/final_pass/i18n/en_US/dbtable.sql b/dbmodel/schemas/addon/utils/final_pass/i18n/en_US/dbtable.sql new file mode 100644 index 0000000000..8c7913f076 --- /dev/null +++ b/dbmodel/schemas/addon/utils/final_pass/i18n/en_US/dbtable.sql @@ -0,0 +1,1241 @@ +/* +This file is part of Giswater +The program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. +*/ + + +SET search_path = SCHEMA_NAME, public, pg_catalog; +UPDATE sys_table AS t SET alias = v.alias, descript = v.descript FROM ( + VALUES + ('anl_gully', NULL, 'Table to analyze gullies'), + ('arc', NULL, 'Table of spatial objects representing arcs.'), + ('arc_add', NULL, 'arc_add'), + ('archived_psector_gully', NULL, 'archived_psector_gully'), + ('archived_psector_gully_traceability', NULL, 'archived_psector_gully_traceability'), + ('archived_rpt_arc', NULL, 'id'), + ('archived_rpt_inp_raingage', NULL, 'archived_rpt_inp_raingage'), + ('archived_rpt_lidperformance_sum', NULL, 'archived_rpt_lidperformance_sum'), + ('archived_rpt_node', NULL, 'id'), + ('archived_rpt_subcatchment', NULL, 'archived_rpt_subcatchment'), + ('archived_rpt_subcatchrunoff_sum', NULL, 'archived_rpt_subcatchrunoff_sum'), + ('archived_rpt_subcatchwashoff_sum', NULL, 'archived_rpt_subcatchwashoff_sum'), + ('audit_psector_gully_traceability', 'Psector gully traceability', 'Traceability of executed planified gullys'), + ('cat_arc', 'Arc catalog', 'Catalog of arcs.'), + ('cat_arc_shape', 'Arc shape catalog', 'Catalog of shapes (related to arcs)'), + ('cat_brand_model', 'Brand model catalog', 'Catalog of models'), + ('cat_dscenario', NULL, 'Table to manage scenarios'), + ('cat_dwf', NULL, 'id'), + ('cat_element', 'Element catalog', 'Catalog of elements.'), + ('cat_feature_arc', NULL, 'Contains the types of arcs.'), + ('cat_feature_gully', NULL, 'Contains de types of gullys.'), + ('cat_grate', 'Grate catalog', 'Catalog of grates.'), + ('cat_gully', 'Gully catalog', 'Catalog of gullys.'), + ('cat_hydrology', NULL, 'Catalog of hydrology.'), + ('cat_node', 'Node catalog', 'Catalog of nodes.'), + ('cat_node_shape', 'Node shape catalog', 'Catalog of shapes of node'), + ('cat_owner', 'Owner catalog', 'Catalog of owners.'), + ('cat_pavement', 'Pavement catalog', 'Catalog of pavements.'), + ('cat_soil', 'Soil catalog', 'Catalog of soil types.'), + ('cat_work', 'Work catalog', 'Catalog of construction works.'), + ('config_form_tableview', NULL, 'Configuration qgis table view forms table'), + ('config_param_system', NULL, 'Configuration table of system parameters'), + ('config_param_user', NULL, 'Configuration table of user parameters'), + ('config_visit_parameter', 'Parameter Catalog', 'Catalog of parameters related to event types'), + ('config_visit_parameter_action', NULL, 'Reverse table for parameters'), + ('dma', NULL, 'dma'), + ('doc_x_arc', NULL, 'Contains the information of document related to arcs.'), + ('doc_x_connec', NULL, 'Contains the information of document related to connects.'), + ('doc_x_gully', NULL, 'Contains the document related to gullies.'), + ('doc_x_node', NULL, 'Contains the information of document related to nodes.'), + ('doc_x_visit', NULL, 'Contains the information of document related to visits.'), + ('drainzone', NULL, 'Table of spatial objects representing Drainage zones'), + ('dwfzone', NULL, 'dwfzone'), + ('element_type', NULL, 'Contains the types of elements.'), + ('element_x_arc', NULL, 'Contains the elements related to arc.'), + ('element_x_gully', NULL, 'Contains the elements related to gullies'), + ('ext_address', NULL, 'Table of entrance numbers.'), + ('ext_arc', NULL, 'External table for arc values'), + ('ext_cat_hydrometer', 'Hydrometer catalog', 'Catalog of hydrometer receivers'), + ('ext_cat_period', 'Period catalog', 'id'), + ('ext_hydrometer_category', NULL, 'External table of hydrometer categories'), + ('ext_hydrometer_category_x_pattern', NULL, 'Table that related hydrometer category with its pattern'), + ('ext_municipality', 'Municipality', 'Table of town cities and villages'), + ('ext_node', NULL, 'External table for node values'), + ('ext_plot', NULL, 'Table of urban properties.'), + ('ext_rtc_hydrometer_x_data', NULL, 'id'), + ('ext_rtc_scada_x_data', NULL, 'Data for external data of scada'), + ('ext_streetaxis', NULL, 'Table of streetaxis.'), + ('ext_type_street', NULL, 'Catalog of street types.'), + ('gully', NULL, 'Table of spatial objects representing gullies.'), + ('inp_adjustments', NULL, 'Adjustments are +- changes to temperature and evaporation or multipliers for rainfall that can vary month of the year'), + ('inp_aquifer', NULL, 'Supplies parameters for each unconfined groundwater aquifer in the study area. Aquifers consist of two zones – a lower saturated zone and an upper unsaturated zone.'), + ('inp_buildup', NULL, 'Specifies the rate at which pollutants build up over different land uses between rain events.'), + ('inp_conduit', NULL, 'Identifies each conduit link of the drainage system. Conduits are pipes or channels that convey water from one node to another.'), + ('inp_controls', NULL, 'id'), + ('inp_coverage', NULL, 'Specifies the percentage of a subcatchment area that is covered by each category of land use.'), + ('inp_curve', NULL, 'Curve catalog.'), + ('inp_curve_value', NULL, 'Defines data curves and their X,Y points.'), + ('inp_divider', NULL, 'Identifies each flow divider node of the drainage system. Flow dividers are junctions with exactly two outflow conduits where the total outflow is divided between the two in a prescribed manner.'), + ('inp_dscenario_conduit', NULL, 'Table to manage scenario for conduits'), + ('inp_dscenario_flwreg_orifice', NULL, 'Table to manage scenario for orifice'), + ('inp_dscenario_flwreg_outlet', NULL, 'Table to manage scenario for outlet'), + ('inp_dscenario_flwreg_pump', NULL, 'Table to manage scenario for pump'), + ('inp_dscenario_flwreg_weir', NULL, 'Table to manage scenario for weir'), + ('inp_dscenario_frorifice', NULL, 'inp_dscenario_frorifice'), + ('inp_dscenario_froutlet', NULL, 'inp_dscenario_froutlet'), + ('inp_dscenario_frweir', NULL, 'inp_dscenario_frweir'), + ('inp_dscenario_inflows', NULL, 'Table to manage scenario for inflows'), + ('inp_dscenario_inflows_poll', NULL, 'Table to manage scenario for inflows'), + ('inp_dscenario_inlet', NULL, 'Table to manage scenario for inlets'), + ('inp_dscenario_junction', NULL, 'Table to manage scenario for junctions'), + ('inp_dscenario_lid_usage', 'Lid Dscenario', 'Table to manage dscenario for lids'), + ('inp_dscenario_lids', NULL, 'inp_dscenario_lids'), + ('inp_dscenario_outfall', NULL, 'Table to manage scenario for outfall'), + ('inp_dscenario_raingage', NULL, 'Table to manage scenario for raingages'), + ('inp_dscenario_storage', NULL, 'Table to manage scenario for storage'), + ('inp_dscenario_treatment', NULL, 'Table to manage scenario for treatment'), + ('inp_dwf', NULL, 'Specifies dry weather flow and its quality entering the drainage system at specific nodes.'), + ('inp_dwf_pol_x_node', NULL, 'Specifies pollutant inflow to drainage system at specific nodes.'), + ('inp_evaporation', NULL, 'Specifies how daily evaporation rates vary with time for the study area.'), + ('inp_files', NULL, 'Contains the information about work files of SWMM'), + ('inp_flwreg_orifice', NULL, 'Table with the information of flow regulators type orifice'), + ('inp_flwreg_outlet', NULL, 'Table with the information of flow regulators type outlet'), + ('inp_flwreg_pump', NULL, 'Table with the information of flow regulators type pump'), + ('inp_flwreg_weir', NULL, 'Table with the information of flow regulators type weir'), + ('inp_frorifice', NULL, 'inp_frorifice'), + ('inp_froutlet', NULL, 'inp_froutlet'), + ('inp_frweir', NULL, 'inp_frweir'), + ('inp_groundwater', NULL, 'Supplies parameters that determine the rate of groundwater flow between the aquifer underneath a subcatchment and a node of the conveyance system.'), + ('inp_gully', NULL, 'Table to manage gullies on epa'), + ('inp_hydrograph', NULL, 'id'), + ('inp_hydrograph_value', NULL, 'Specifies the shapes of the triangular unit hydrographs that determine the amount of rainfall-dependent infiltration/inflow (RDII) entering the drainage system.'), + ('inp_inflows', NULL, 'Specifies external hydrographs and pollutographs that enter the drainage system at specific nodes.'), + ('inp_inflows_poll', NULL, 'Specifies external hydrographs and pollutographs that enter the drainage system at specific nodes.'), + ('inp_inlet', NULL, 'Table to manage inlets'), + ('inp_landuses', NULL, 'Identifies the various categories of land uses within the drainage area. Each subcatchment area can be assigned a different mix of land uses. Each land use can be subjected to a different street sweeping schedule.'), + ('inp_lid', 'Lid catalog', 'Defines scale-independent LID controls that can be deployed within subcatchments.'), + ('inp_lid_value', 'Lid values', 'Defines values of scale-independent LID controls that can be deployed within subcatchments.'), + ('inp_loadings', NULL, 'Specifies the pollutant buildup that exists on each subcatchment at the start of a simulation.'), + ('inp_mapdim', NULL, 'Contains the information about the map dimensions'), + ('inp_mapunits', NULL, 'Contains the information about map units'), + ('inp_netgully', NULL, 'Table to manage epa-side of netgully. Special case where netgully has two epa-sides (junction and also gully)'), + ('inp_orifice', NULL, 'Identifies each orifice link of the drainage system. An orifice link serves to limit the flow exiting a node and is often used to model flow diversions.'), + ('inp_outfall', NULL, 'Identifies each outfall node (i.e., final downstream boundary) of the drainage system and the corresponding water stage elevation. Only one link can be incident on an outfall node.'), + ('inp_outlet', NULL, 'Identifies each outlet flow control device of the drainage system. These devices are used to model outflows from storage units or flow diversions that have a user-defined relation between flow rate and water depth.'), + ('inp_pattern', NULL, 'Defines time patterns.'), + ('inp_pollutant', NULL, 'Identifies the pollutants being analyzed.'), + ('inp_pump', NULL, 'Defines all pump links contained in the network.'), + ('inp_rdii', NULL, 'Specifies the parameters that describe rainfall-dependent infiltration/inflow (RDII) entering the drainage system at specific nodes.'), + ('inp_snowmelt', NULL, 'Snowmelt parameters are climatic variables that apply across the entire study area when simulating snowfall and snowmelt.'), + ('inp_snowpack', NULL, 'id'), + ('inp_snowpack_value', NULL, 'Specifies parameters that govern how snowfall accumulates and melts on the plowable, impervious and pervious surfaces of subcatchments.'), + ('inp_storage', NULL, 'Identifies each storage node of the drainage system. Storage nodes can have any shape as specified by a surface area versus water depth relation.'), + ('inp_subcatchment', NULL, 'Identifies each subcatchment within the study area. Subcatchments are land area units which generate runoff from rainfall.'), + ('inp_temperature', NULL, 'Specifies daily air temperatures, monthly wind speed, and various snowmelt parameters for the study area. Required only when snowmelt is being modeled or when evaporation rates are computed from daily temperatures or are read from an external climate file.'), + ('inp_timeseries', NULL, 'Timeseries catalog. This table could be edited trough giswater control panel: Giswater / Data / Timeseries'), + ('inp_timeseries_value', NULL, 'Table relative to timeseries values. This table could be edited trough giswater control panel: Giswater / Data / Timeseries'), + ('inp_transects', 'Transects catalog', 'Table with the id of the cross-section geometry of natural channels or conduits with irregular shapes following the HEC-2 data format.'), + ('inp_transects_value', NULL, 'Describes the cross-section geometry of natural channels or conduits with irregular shapes following the HEC-2 data format.'), + ('inp_treatment', NULL, 'Specifies the degree of treatment received by pollutants at specific nodes of the drainage system.'), + ('inp_virtual', NULL, 'Table with that arc entitites that are ''transparents'' for the hydraulic model (virtuals)'), + ('inp_washoff', NULL, 'Specifies the rate at which pollutants are washed off from different land uses during rain events.'), + ('inp_weir', NULL, 'Identifies each weir link of the drainage system. Weirs are used to model flow diversions.'), + ('man_chamber', NULL, 'Additional information for chamber management'), + ('man_cjoin', NULL, 'Additional information for cjoin management'), + ('man_conduit', NULL, 'Additional information for conduit management'), + ('man_conduitlink', NULL, 'man_conduitlink'), + ('man_inletpipe', NULL, 'man_inletpipe'), + ('man_netgully', NULL, 'Additional information for netgully management'), + ('man_netinit', NULL, 'Additional information for netinit management'), + ('man_outfall', NULL, 'Additional information for outfall management'), + ('man_siphon', NULL, 'Additional information for siphon management'), + ('man_storage', NULL, 'Additional information for storage management'), + ('man_vgully', NULL, 'Additional information for vgully management'), + ('man_waccel', NULL, 'Additional information for water accelerator management'), + ('man_wjump', NULL, 'Additional information for water jump management'), + ('man_wwtp', NULL, 'Additional information for wastewater treatment plant management'), + ('node', NULL, 'Table of spatial objects representing nodes.'), + ('node_add', NULL, 'node_add'), + ('om_reh_cat_works', NULL, 'Rehabilitation catalog of works'), + ('om_reh_parameter_x_works', NULL, 'Rehabilitation parameter x works table'), + ('om_reh_value_loc_condition', NULL, 'Rehabilitation location condition value'), + ('om_reh_works_x_pcompost', NULL, 'Rehabilitation works x price'), + ('om_visit_event', NULL, 'Table of events that took place during the visit'), + ('om_visit_event_photo', NULL, 'Table of events that took place during the visit and the relative photos'), + ('om_visit_x_arc', NULL, 'Table of visits related to arc'), + ('om_visit_x_connec', NULL, 'Table of visits related to connec'), + ('om_visit_x_gully', NULL, 'Table of visits related to gully'), + ('om_visit_x_node', NULL, 'Table of visits related to node'), + ('plan_psector', NULL, 'Table of plan sector'), + ('plan_psector_x_arc', NULL, 'Table of arcs related to plan sectors'), + ('plan_psector_x_gully', NULL, 'Table of gullys related to plan sectors'), + ('plan_psector_x_node', NULL, 'Table of nodes related to plan sectors'), + ('plan_psector_x_other', NULL, 'Table of other objects related to plan sectors'), + ('raingage', NULL, 'Identifies each rain gage that provides rainfall data for the study area.'), + ('review_audit_gully', NULL, 'Table for O&M about audit gullys'), + ('review_gully', NULL, 'Table for O&M to report about gullys'), + ('rpt_arcflow_sum', NULL, 'Contains the results of arc flow simulations.'), + ('rpt_arcpolload_sum', NULL, 'Contains the results of arc pollutant load simulations.'), + ('rpt_arcpollutant_sum', NULL, 'Table to store arcpollutant values'), + ('rpt_condsurcharge_sum', NULL, 'Contains the results of conduit surcharge simulations.'), + ('rpt_continuity_errors', NULL, 'Contains the results of continuity errors simulations.'), + ('rpt_control_actions_taken', NULL, 'id'), + ('rpt_critical_elements', NULL, 'Contains the results of critical elements simulations analysis'), + ('rpt_flowclass_sum', NULL, 'Contains the results of flow classification simulations.'), + ('rpt_flowrouting_cont', NULL, 'Contains the results of flow routing continuity simulations.'), + ('rpt_groundwater_cont', NULL, 'Contains the results of groundwater continuity simulations'), + ('rpt_high_conterrors', NULL, 'Contains the results of high continuity errors simulations.'), + ('rpt_high_flowinest_ind', NULL, 'Contains the results of high flow instability index simulations.'), + ('rpt_inp_raingage', NULL, 'Table to store results for raingages'), + ('rpt_instability_index', NULL, 'Contains the results of instability index simulations.'), + ('rpt_lidperformance_sum', NULL, 'Contains the results of LID performance simulations.'), + ('rpt_nodedepth_sum', NULL, 'Contains the results of depth of nodes'), + ('rpt_nodeflooding_sum', NULL, 'Contains the results of flooded nodes'), + ('rpt_nodeinflow_sum', NULL, 'Contains the inflow value of nodes'), + ('rpt_nodesurcharge_sum', NULL, 'Contains the surcharge value of nodes'), + ('rpt_outfallflow_sum', NULL, 'Contains the results of outfall flow simulations.'), + ('rpt_outfallload_sum', NULL, 'Contains the results of outfall load simulations.'), + ('rpt_pumping_sum', NULL, 'Contains the results of pumping summary simulations.'), + ('rpt_qualrouting_cont', NULL, 'Contains the results of quality routing continuity simulations.'), + ('rpt_rainfall_dep', NULL, 'Contains the results of rainfall dependent simulations.'), + ('rpt_routing_timestep', NULL, 'Contains the results of routing timestep simulations'), + ('rpt_runoff_qual', NULL, 'Contains the results of runoff quality simulations .'), + ('rpt_runoff_quant', NULL, 'Contains the results of runoff quantity simulations .'), + ('rpt_storagevol_sum', NULL, 'Contains the results of storage volume simulations'), + ('rpt_subcatchment', NULL, 'id'), + ('rpt_subcatchrunoff_sum', NULL, 'Contains the results from subcatchments'), + ('rpt_subcatchwashoff_sum', NULL, 'Contains the results of subcatchment washoff simulations.'), + ('rpt_summary_arc', NULL, 'id'), + ('rpt_summary_crossection', NULL, 'id'), + ('rpt_summary_node', NULL, 'id'), + ('rpt_summary_raingage', NULL, 'id'), + ('rpt_summary_subcatchment', NULL, 'id'), + ('rpt_timestep_critelem', NULL, 'Contains the results of timestep critical elements simulations'), + ('rpt_warning_summary', NULL, 'Used to store swmm warning results'), + ('rtc_scada_node', NULL, 'Contains the information to link SCADA with nodes'), + ('rtc_scada_x_dma', NULL, 'Contains the information to link SCADA with dma'), + ('rtc_scada_x_sector', NULL, 'Contains the information to link SCADA with sector.'), + ('selector_inp_dscenario', NULL, 'Table to select scenario for users'), + ('selector_inp_result', NULL, 'Result selector'), + ('selector_rpt_main', NULL, 'Result´s selector'), + ('temp_arc_flowregulator', NULL, 'Table to use on pg2epa export for flowregulators (outlet, orifice, weir, pump'), + ('temp_gully', NULL, 'Table to manage gullies on epa exportaiton process'), + ('temp_lid_usage', NULL, 'Table used during pg2epa export for lid usage configuration'), + ('temp_node_other', NULL, 'Table to use on pg2epa export for those processes that uses a relation of cardinility on nodes 1:m (inflows, treatment'), + ('v_element_x_gully', NULL, 'Contains the elements related to gully'), + ('v_expl_gully', NULL, 'Filter view for gully'), + ('v_gully', NULL, 'Auxiliar view for gully'), + ('v_link_gully', NULL, 'Filtered view of links type connec'), + ('v_man_gully', NULL, 'Shows editable information about gully management'), + ('v_plan_psector', 'Plan psector', 'View to show sectors planifieds'), + ('v_plan_psector_gully', 'Plan psector gully', 'View to show gullys related to psectors. Useful to show gullys which will be obsolete in psectors'), + ('v_plan_result_arc', NULL, 'View related to cost results for arcs'), + ('v_plan_result_node', NULL, 'View related to cost results for node'), + ('v_rpt_arc', NULL, 'v_rpt_arc'), + ('v_rpt_arc_compare_all', NULL, 'Shows the simulation results of arcs for comparing'), + ('v_rpt_arc_compare_timestep', NULL, 'Shows the simulation results of arcs for comparing it over time'), + ('v_rpt_arc_timestep', NULL, 'Shows the simulation results of arcs over time'), + ('v_rpt_arcflow_sum', 'Arc Flow', 'Shows the results of arc flow simulations.'), + ('v_rpt_arcpolload_sum', 'Arc Pollutant Load', 'Shows the results of arc pollutant load simulations.'), + ('v_rpt_comp_arcflow_sum', 'Arc Flow Compare', 'Shows the result selecteb by the comparision selector in order to show into GIS project the data from result_selector and result_comparisor to compare between arcflow simulation results.'), + ('v_rpt_comp_condsurcharge_sum', 'Conduit Surcharge Compare', 'Shows the result selecteb by the comparision selector in order to show into GIS project the data from result_selector and result_comparisor to compare between conduit surcharge simulations results.'), + ('v_rpt_comp_continuity_errors', NULL, 'Shows the result selecteb by the comparision selector in order to show into GIS project the data from result_selector and result_comparisor to compare between continuity errors simulations results.'), + ('v_rpt_comp_critical_elements', NULL, 'Shows the result selecteb by the comparision selector in order to show into GIS project the data from result_selector and result_comparisor to compare between critical elements simulations analysis results.'), + ('v_rpt_comp_flowclass_sum', 'Flow Class Compare', 'Shows the result selecteb by the comparision selector in order to show into GIS project the data from result_selector and result_comparisor to compare between flow classification simulations results.'), + ('v_rpt_comp_flowrouting_cont', NULL, 'Shows the result selecteb by the comparision selector in order to show into GIS project the data from result_selector and result_comparisor to compare between flow routing continuity simulations results.'), + ('v_rpt_comp_groundwater_cont', NULL, 'Shows the result selecteb by the comparision selector in order to show into GIS project the data from result_selector and result_comparisor to compare between groundwater continuity simulation results.'), + ('v_rpt_comp_high_cont_errors', NULL, 'Shows the result selecteb by the comparision selector in order to show into GIS project the data from result_selector and result_comparisor to compare between high continuity errors simulations results.'), + ('v_rpt_comp_high_flowinest_ind', NULL, 'Shows the result selecteb by the comparision selector in order to show into GIS project the data from result_selector and result_comparisor to compare between high flow instability index simulations results.'), + ('v_rpt_comp_instability_index', NULL, 'Shows the result selecteb by the comparision selector in order to show into GIS project the data from result_selector and result_comparisor to compare between instability index simulations results.'), + ('v_rpt_comp_lidperformance_sum', 'LID Performance Compare', 'Shows the result selecteb by the comparision selector in order to show into GIS project the data from result_selector and result_comparisor to compare between LID performance simulations results.'), + ('v_rpt_comp_nodedepth_sum', 'Node Depth Compare', 'Shows the result selecteb by the comparision selector in order to show into GIS project the data from result_selector and result_comparisor to compare between depth of nodes results.'), + ('v_rpt_comp_nodeflooding_sum', 'Node Flooding Compare', 'Shows the result selecteb by the comparision selector in order to show into GIS project the data from result_selector and result_comparisor to compare between flooded nodes results.'), + ('v_rpt_comp_nodeinflow_sum', 'Node Inflow Compare', 'Shows the result selecteb by the comparision selector in order to show into GIS project the data from result_selector and result_comparisor to compare between inflow value of nodes results.'), + ('v_rpt_comp_nodesurcharge_sum', 'Node Surcharge Compare', 'Shows the result selecteb by the comparision selector in order to show into GIS project the data from result_selector and result_comparisor to compare between surcharge value of nodes results.'), + ('v_rpt_comp_outfallflow_sum', 'Outfall Flow Compare', 'Shows the result selecteb by the comparision selector in order to show into GIS project the data from result_selector and result_comparisor to compare between outfall flow simulations results..'), + ('v_rpt_comp_outfallload_sum', 'Outfall Load Compare', 'Shows the result selecteb by the comparision selector in order to show into GIS project the data from result_selector and result_comparisor to compare between outfall load simulations results..'), + ('v_rpt_comp_pumping_sum', 'Pumping Summary Compare', 'Shows the result selecteb by the comparision selector in order to show into GIS project the data from result_selector and result_comparisor to compare between pumping summary simulations results.'), + ('v_rpt_comp_qualrouting', NULL, 'Shows the result selecteb by the comparision selector in order to show into GIS project the data from result_selector and result_comparisor to compare between quality routing continuity simulations results.'), + ('v_rpt_comp_rainfall_dep', NULL, 'Shows the result selecteb by the comparision selector in order to show into GIS project the data from result_selector and result_comparisor to compare between rainfall dependent simulations results.'), + ('v_rpt_comp_routing_timestep', NULL, 'Shows the result selecteb by the comparision selector in order to show into GIS project the data from result_selector and result_comparisor to compare between routing timestep simulations results.'), + ('v_rpt_comp_runoff_qual', NULL, 'Shows the result selecteb by the comparision selector in order to show into GIS project the data from result_selector and result_comparisor to compare between runoff quality simulations results.'), + ('v_rpt_comp_runoff_quant', NULL, 'Shows the result selecteb by the comparision selector in order to show into GIS project the data from result_selector and result_comparisor to compare between runoff quantity simulations results.'), + ('v_rpt_comp_storagevol_sum', 'Storage Volume Compare', 'Shows the result selecteb by the comparision selector in order to show into GIS project the data from result_selector and result_comparisor to compare between storage volume simulations results.'), + ('v_rpt_comp_subcatchrunoff_sum', 'Subcatchment Runoff Compare', 'Shows the result selecteb by the comparision selector in order to show into GIS project the data from result_selector and result_comparisor to compare between subcatchments runoff simulations results.'), + ('v_rpt_comp_subcatchwashoff_sum', 'Subcatchment Washoff Compare', 'Shows the result selecteb by the comparision selector in order to show into GIS project the data from result_selector and result_comparisor to compare between subcatchment washoff simulations results.'), + ('v_rpt_comp_timestep_critelem', NULL, 'Shows the result selecteb by the comparision selector in order to show into GIS project the data from result_selector and result_comparisor to compare between timestep critical elements simulations results.'), + ('v_rpt_condsurcharge_sum', 'Conduit Surcharge', 'Shows the results of conduit surcharge simulations.'), + ('v_rpt_continuity_errors', NULL, 'Shows the results of continuity errors simulations.'), + ('v_rpt_critical_elements', NULL, 'Shows the results of critical elements simulations analysis'), + ('v_rpt_flowclass_sum', NULL, 'Shows the results of flow classification simulations.'), + ('v_rpt_flowrouting_cont', NULL, 'Shows the results of flow routing continuity simulations.'), + ('v_rpt_groundwater_cont', NULL, 'Shows the results of groundwater continuity simulations'), + ('v_rpt_high_cont_errors', NULL, 'Shows the results of high continuity errors simulations.'), + ('v_rpt_high_flowinest_ind', NULL, 'Shows the results of high flow instability index simulations.'), + ('v_rpt_instability_index', NULL, 'Shows the results of instability index simulations.'), + ('v_rpt_lidperformance_sum', 'LID Performance', 'Shows the results of LID performance simulations.'), + ('v_rpt_node', NULL, 'v_rpt_node'), + ('v_rpt_node_compare_all', NULL, 'Shows the simulation results of nodes for comparing'), + ('v_rpt_node_compare_timestep', NULL, 'Shows the simulation results of nodes for comparing it over time'), + ('v_rpt_node_timestep', NULL, 'Shows the simulation results of nodes over time'), + ('v_rpt_nodedepth_sum', 'Node Depth', 'Shows the results of depth of nodes'), + ('v_rpt_nodeflooding_sum', 'Node Flooding', 'Shows the results of flooded nodes'), + ('v_rpt_nodeinflow_sum', 'Node Inflow', 'Shows the inflow value of nodes'), + ('v_rpt_nodesurcharge_sum', 'Node Surcharge', 'Shows the surcharge value of nodes'), + ('v_rpt_outfallflow_sum', 'Outfall flow', 'Shows the results of outfall flow simulations.'), + ('v_rpt_outfallload_sum', 'Outfall load', 'Shows the results of outfall load simulations.'), + ('v_rpt_pumping_sum', 'Pumping Summary', 'Shows the results of pumping summary simulations.'), + ('v_rpt_qualrouting', NULL, 'Shows the results of quality routing continuity simulations.'), + ('v_rpt_rainfall_dep', NULL, 'Shows the results of rainfall dependent simulations.'), + ('v_rpt_routing_timestep', NULL, 'Shows the results of routing timestep simulations'), + ('v_rpt_runoff_qual', NULL, 'Shows the results of runoff quality simulations .'), + ('v_rpt_runoff_quant', NULL, 'Shows the results of runoff quantity simulations .'), + ('v_rpt_storagevol_sum', 'Storage Volume', 'Shows the results of storage volume simulations'), + ('v_rpt_subcatchrunoff_sum', 'Subcatchment Runoff', 'Shows the results from subcatchments runoff simulations.'), + ('v_rpt_subcatchwashoff_sum', 'Subcatchment Washoff', 'Shows the results of subcatchment washoff simulations.'), + ('v_rpt_timestep_critelem', NULL, 'Shows the results of timestep critical elements simulations'), + ('v_rtc_period_dma', NULL, 'View of the relation between dma and period'), + ('v_rtc_period_node', NULL, 'View of the relation between node and period'), + ('v_rtc_period_pjoint', NULL, 'id'), + ('v_state_gully', NULL, 'View that filter gullys for state and exploitation'), + ('v_state_link_gully', NULL, 'View that filters links related to gully by state and exploitation'), + ('v_ui_doc_x_gully', NULL, 'Shows the information of document related to gully. User Interface view.'), + ('v_ui_dwfzone', NULL, 'v_ui_dwfzone'), + ('v_ui_element_x_gully', NULL, 'Contains the elements related to gully. User Interface view.'), + ('v_ui_event_x_gully', NULL, 'User interface view for gullys related to its events'), + ('v_ui_node_x_connection_downstream', NULL, 'View that relates arcs and nodes downstrem'), + ('v_ui_node_x_connection_upstream', NULL, 'View that relates arcs and nodes upstrem'), + ('v_ui_om_visit_x_gully', NULL, 'Shows the visits related to gully elements. User Interface view.'), + ('v_ui_om_visitman_x_gully', NULL, 'Shows the visits related to management of gully elements. User Interface view.'), + ('v_ui_sector', NULL, 'v_ui_sector'), + ('v_ui_visit_arc_insp', NULL, 'v_ui_visit_arc_insp'), + ('v_ui_visit_connec_insp', NULL, 'v_ui_visit_connec_insp'), + ('v_ui_visit_gully_insp', NULL, 'v_ui_visit_gully_insp'), + ('v_ui_visit_incid_arc', NULL, 'v_ui_visit_incid_arc'), + ('v_ui_visit_incid_connec', NULL, 'v_ui_visit_incid_connec'), + ('v_ui_visit_incid_gully', NULL, 'v_ui_visit_incid_gully'), + ('v_ui_visit_incid_link', NULL, 'v_ui_visit_incid_link'), + ('v_ui_visit_link_insp', NULL, 'v_ui_visit_link_insp'), + ('ve_arc_conduit', NULL, 'Custom editable view for CONDUIT'), + ('ve_arc_pump_pipe', NULL, 'Custom editable view for PUMP_PIPE'), + ('ve_arc_siphon', NULL, 'Custom editable view for SIPHON'), + ('ve_arc_waccel', NULL, 'Custom editable view for WACCEL'), + ('ve_cat_dwf', NULL, 'v_edit_cat_dwf'), + ('ve_cat_dwf_scenario', 'Dwf scenario catalog', 'Table to manage scenario for dwf'), + ('ve_cat_feature_gully', 'Gully features', 'Editable view for cat_feature_gully configuration'), + ('ve_cat_hydrology', 'Hydrology catalog', 'Table to manage scenario for hydrology'), + ('ve_connec_cjoin', NULL, 'Custom editable view for CJOIN'), + ('ve_connec_connec', 'Connec', 'Custom editable view for CONNEC'), + ('ve_drainzone', 'DRAINZONE', 'Shows editable information about drainzone.'), + ('ve_dwfzone', 'Dwfzone', 'Shows editable information about dwfzone.'), + ('ve_elem_cover', 'Cover', 'Custom editable view for COVER'), + ('ve_elem_frorifice', 'Frorifice', 'Custom editable view for FRORIFICE'), + ('ve_elem_froutlet', 'Froutlet', 'Custom editable view for FROUTLET'), + ('ve_elem_frpump', 'Frpump', 'Custom editable view for FRPUMP'), + ('ve_elem_frweir', 'Frweir', 'Custom editable view for FRWEIR'), + ('ve_elem_gate', 'Gate', 'Custom editable view for GATE'), + ('ve_elem_iot_sensor', 'Iot_Sensor', 'Custom editable view for IOT_SENSOR'), + ('ve_elem_protector', 'Protector', 'Custom editable view for PROTECTOR'), + ('ve_elem_pump', 'Pump', 'Custom editable view for PUMP'), + ('ve_elem_step', 'Step', 'Custom editable view for STEP'), + ('ve_element', 'Elements', 'Shows information about elements'), + ('ve_element_egate', NULL, 'Custom editable view for EGATE'), + ('ve_element_eiot_sensor', NULL, 'Custom editable view for EIOT_SENSOR'), + ('ve_element_eorifice', NULL, 'Custom editable view for EORIFICE'), + ('ve_element_eoutlet', NULL, 'Custom editable view for EOUTLET'), + ('ve_element_eprotector', NULL, 'Custom editable view for EPROTECTOR'), + ('ve_element_eweir', NULL, 'Custom editable view for EWEIR'), + ('ve_epa_conduit', NULL, 'Editable view for epa counduit'), + ('ve_epa_frorifice', NULL, 've_epa_frorifice'), + ('ve_epa_froutlet', NULL, 've_epa_froutlet'), + ('ve_epa_frweir', NULL, 've_epa_frweir'), + ('ve_epa_gully', NULL, 'Editable view for epa gully'), + ('ve_epa_netgully', NULL, 'Editable view for epa netgully'), + ('ve_epa_orifice', NULL, 'Editable view for epa orifice'), + ('ve_epa_outfall', NULL, 'Editable view for epa outfall'), + ('ve_epa_outlet', NULL, 'Editable view for epa outlet'), + ('ve_epa_pump', NULL, 'Editable view for epa pump'), + ('ve_epa_storage', NULL, 'Editable view for epa storage'), + ('ve_epa_virtual', NULL, 'Editable view for epa virtual'), + ('ve_epa_weir', NULL, 'Editable view for epa weir'), + ('ve_flwreg', 'Flow regulator', 'View to edit flowregulators.'), + ('ve_frelem_eorifice', 'Eorifice', 'Custom editable view for EORIFICE'), + ('ve_frelem_eoutlet', 'Eoutlet', 'Custom editable view for EOUTLET'), + ('ve_frelem_eweir', 'Eweir', 'Custom editable view for EWEIR'), + ('ve_genelem_egate', 'Egate', 'Custom editable view for EGATE'), + ('ve_genelem_eiot_sensor', 'Eiot_Sensor', 'Custom editable view for EIOT_SENSOR'), + ('ve_genelem_eprotector', 'Eprotector', 'Custom editable view for EPROTECTOR'), + ('ve_gully', 'Gully', 'Shows editable information about gullys.'), + ('ve_gully_ginlet', NULL, 'Custom editable view for GINLET'), + ('ve_gully_gully', 'Gully', 'Custom editable view for GULLY'), + ('ve_gully_pgully', NULL, 'Custom editable view for PGULLY'), + ('ve_gully_vgully', NULL, 'Custom editable view for VGULLY'), + ('ve_inp_conduit', 'Inp Conduit', 'Shows editable information about conduits.'), + ('ve_inp_coverage', 'Inp coverage', 'Editable view to manage coverage'), + ('ve_inp_divider', 'Inp Divider', 'Shows editable information about dividers.'), + ('ve_inp_dscenario_conduit', 'Conduit Dscenario', 'View to manage scenario for conduits'), + ('ve_inp_dscenario_flwreg_orifice', 'Orifice Dscenario', 'Editable view to manage scenario for orifice'), + ('ve_inp_dscenario_flwreg_outlet', 'Outlet Dscenario', 'Editable view to manage scenario for outlet'), + ('ve_inp_dscenario_flwreg_pump', 'Pump Dscenario', 'Editable view to manage scenario for pump'), + ('ve_inp_dscenario_flwreg_weir', 'Weir Dscenario', 'Editable view to manage scenario for weir'), + ('ve_inp_dscenario_frorifice', 'FRorifice Dscenario', 'v_edit_inp_dscenario_frorifice'), + ('ve_inp_dscenario_froutlet', 'FRoutlet Dscenario', 'v_edit_inp_dscenario_froutlet'), + ('ve_inp_dscenario_frshortpipe', 'FRshortpipe Dscenario', 've_inp_dscenario_frshortpipe'), + ('ve_inp_dscenario_frweir', 'FRweir Dscenario', 'v_edit_inp_dscenario_frweir'), + ('ve_inp_dscenario_inflows', 'Inflow Dscenario', 'Editable view to manage scenario for inflows'), + ('ve_inp_dscenario_inflows_poll', 'Inflow pollutants Dscenario', 'Editable view to manage scenario for inflow pollutants'), + ('ve_inp_dscenario_junction', 'Junction Dscenario', 'View to manage scenario for junctions'), + ('ve_inp_dscenario_lid_usage', 'Lid Dscenario', 'View to edit dscenario for lids'), + ('ve_inp_dscenario_lids', 'Lids Dscenario', 'v_edit_inp_dscenario_lids'), + ('ve_inp_dscenario_outfall', 'Outfall Dscenario', 'Editable view to manage scenario for outfall'), + ('ve_inp_dscenario_raingage', 'Raingage Dscenario', 'View to manage scenario for raingages'), + ('ve_inp_dscenario_storage', 'Storage Dscenario', 'Editable view to manage scenario for storage'), + ('ve_inp_dscenario_treatment', 'Treatment Dscenario', 'Editable view to manage scenario for treatment'), + ('ve_inp_dwf', 'Dry Weather Flows (DWF)', 'editable view for dry weather flows'), + ('ve_inp_flwreg_orifice', 'Flowreg Orifice', 'View with the information of flow regulators type orifice'), + ('ve_inp_flwreg_outlet', 'Flowreg Outlet', 'View with the information of flow regulators type outlet'), + ('ve_inp_flwreg_pump', 'Flowreg Pump', 'View with the information of flow regulators type pump'), + ('ve_inp_flwreg_weir', 'Flowreg Weir', 'View with the information of flow regulators type weir'), + ('ve_inp_frorifice', 'Inp flwreg orifice', 've_inp_frorifice'), + ('ve_inp_froutlet', 'Inp flwreg outlet', 've_inp_froutlet'), + ('ve_inp_frshortpipe', 'FRshortpipe', 've_inp_frshortpipe'), + ('ve_inp_frweir', 'Inp flwreg weir', 've_inp_frweir'), + ('ve_inp_gully', 'Inp Gully', 'Editable view to manage gullies on epa'), + ('ve_inp_inflows', 'Inp Inflows', 'Editable view to manage inflows'), + ('ve_inp_inflows_poll', 'Inflow Pollutants', 'Editable view to manage inflow pollutants'), + ('ve_inp_inlet', 'Inp Inlet', 'Shows editable information about inlets.'), + ('ve_inp_netgully', 'Inp Netgully', 'View to manage epa-side of netgully. Special case where netgully has two epa-sides (junction and also gully)'), + ('ve_inp_orifice', 'Inp Orifice', 'Shows editable information about orifices.'), + ('ve_inp_outfall', 'Inp Outfall', 'Shows editable information about outfalls.'), + ('ve_inp_outlet', 'Inp Outlet', 'Shows editable information about outlets.'), + ('ve_inp_pattern', 'Pattern catalog', 'View to edit patterns, filtered by expl_id'), + ('ve_inp_pattern_value', 'Pattern values', 'View to edit curve values, filtered by expl_id'), + ('ve_inp_storage', 'Inp Storage', 'Shows editable information about storages.'), + ('ve_inp_subc2outlet', 'Subcatchment outlet', 'Shows the information about the relation between subcatchments and nodes'), + ('ve_inp_subcatchment', 'Inp Subcatchment', 'Shows editable information about subcatchments.'), + ('ve_inp_timeseries', 'Timeseries catalog', 'View to edit timeseries, filtered by expl_id'), + ('ve_inp_timeseries_value', 'Timeseries values', 'View to edit timeseries values, filtered by expl_id'), + ('ve_inp_transects', 'Transects value', 'Editable view of transects'), + ('ve_inp_treatment', 'Treatment', 'Editable view to manage treatments'), + ('ve_inp_virtual', 'Inp Virtual', 'Shows editable information about virtuals.'), + ('ve_inp_weir', 'Inp Weir', 'Shows editable information about weirs.'), + ('ve_link_conduitlink', NULL, 'Custom editable view for CONDUITLINK'), + ('ve_link_connec', 'Link connec', 'Editable view of links type connec'), + ('ve_link_gully', 'Link gully', 'Editable view of links type connec'), + ('ve_link_inletpipe', 'Inletpipe', 'Custom editable view for INLETPIPE'), + ('ve_man_frelem', 'FRElement', 'Specific view for flowregulator elements'), + ('ve_man_genelem', 'GenElement', 'Specific view for general elements'), + ('ve_node_chamber', NULL, 'Custom editable view for CHAMBER'), + ('ve_node_change', NULL, 'Custom editable view for CHANGE'), + ('ve_node_circ_manhole', NULL, 'Custom editable view for CIRC_MANHOLE'), + ('ve_node_highpoint', NULL, 'Custom editable view for HIGHPOINT'), + ('ve_node_jump', NULL, 'Custom editable view for JUMP'), + ('ve_node_netgully', NULL, 'Custom editable view for NETGULLY'), + ('ve_node_netinit', NULL, 'Custom editable view for NETINIT'), + ('ve_node_out_manhole', NULL, 'Custom editable view for OUT_MANHOLE'), + ('ve_node_outfall', NULL, 'Custom editable view for OUTFALL'), + ('ve_node_overflow_storage', NULL, 'Custom editable view for OVERFLOW_STORAGE'), + ('ve_node_owerflow_storage', 'Owerflow_Storage', 'Custom editable view for OWERFLOW_STORAGE'), + ('ve_node_pump_station', NULL, 'Custom editable view for PUMP_STATION'), + ('ve_node_rect_manhole', NULL, 'Custom editable view for RECT_MANHOLE'), + ('ve_node_sandbox', NULL, 'Custom editable view for SANDBOX'), + ('ve_node_sewer_storage', NULL, 'Custom editable view for SEWER_STORAGE'), + ('ve_node_valve', NULL, 'Custom editable view for VALVE'), + ('ve_node_virtual_node', NULL, 'Custom editable view for VIRTUAL_NODE'), + ('ve_node_weir', NULL, 'Custom editable view for WEIR'), + ('ve_node_wwtp', NULL, 'Custom editable view for WWTP'), + ('ve_plan_psector', NULL, 'Psector edit view'), + ('ve_plan_psector_x_gully', NULL, 'Editable view to work with psector and gully'), + ('ve_pol_chamber', NULL, 'Editable view for chamber polygons'), + ('ve_pol_gully', 'Gully polygon', 'Editable view for gully polygons'), + ('ve_pol_netgully', NULL, 'Editable view for netgully polygons'), + ('ve_pol_storage', NULL, 'Editable view for storage polygons'), + ('ve_pol_wwtp', NULL, 'Editable view for wwtp polygons'), + ('ve_raingage', 'Inp Raingage', 'Shows editable information about raingages.'), + ('ve_review_audit_gully', NULL, 'Used to edit the review information'), + ('ve_review_gully', NULL, 'Used to edit the review information'), + ('ve_visit_arc_insp', NULL, 've_visit_arc_insp'), + ('ve_visit_connec_insp', NULL, 've_visit_connec_insp'), + ('ve_visit_gully_insp', NULL, 've_visit_gully_insp'), + ('ve_visit_gully_singlevent', NULL, 've_visit_gully_singlevent'), + ('ve_visit_incid_arc', NULL, 've_visit_incid_arc'), + ('ve_visit_incid_connec', NULL, 've_visit_incid_connec'), + ('ve_visit_incid_gully', NULL, 've_visit_incid_gully'), + ('ve_visit_incid_link', NULL, 've_visit_incid_link'), + ('ve_visit_link_insp', NULL, 've_visit_link_insp'), + ('vi_adjustments', NULL, 'Used to export to SWMM information about adjustments'), + ('vi_aquifers', NULL, 'Used to export to SWMM information about aquifers'), + ('vi_buildup', NULL, 'Used to export to SWMM the information about velocity of the pollutants that accumulate on the surface'), + ('vi_conduits', NULL, 'Used to export to SWMM the information about special conduits'), + ('vi_coverages', NULL, 'Used to export to SWMM the information about the relation between subcatchments and landuses'), + ('vi_dividers', NULL, 'Used to export to SWMM the information about dividers type tabular'), + ('vi_dwf', NULL, 'Used to export to SWMM the information about flow during the dry period'), + ('vi_evaporation', NULL, 'Used to export to SWMM the information about the evaporation with the constant format type'), + ('vi_files', NULL, 'Used to export to SWMM information about the work files of SWMM'), + ('vi_groundwater', NULL, 'Used to export to SWMM the information about groundwaters'), + ('vi_gully', NULL, 'View with gully data ready to work with 2D-IBER'), + ('vi_gully2node', 'Gully2node', 'View to show what is the outlet node of gully'), + ('vi_gwf', NULL, 'Used to export to SWMM the information about gwf'), + ('vi_hydrographs', NULL, 'Used to export to SWMM information about inp_hydrograph'), + ('vi_infiltration', NULL, 'Used to export to SWMM the information about the infiltration using Curve-Number method'), + ('vi_inflows', NULL, 'Used to export to SWMM the information about the inflows related in terms of pollutants to nodes (if the user has defined it)'), + ('vi_landuses', NULL, 'Used to export to SWMM the information about land use'), + ('vi_lid_controls', NULL, 'Used to export to SWMM the information about LID controls'), + ('vi_lid_usage', NULL, 'Used to export to SWMM the information about LID usage.'), + ('vi_loadings', NULL, 'Used to export to SWMM the information about loadings.'), + ('vi_losses', NULL, 'Used to export to SWMM the information about the coefficiency of losses and conduits behaviour'), + ('vi_map', NULL, 'Used to export to SWMM the information about map units'), + ('vi_orifices', NULL, 'Show the information about arcs type orifice'), + ('vi_outfalls', NULL, 'Used to export to SWMM the information about outfalls with fixed format type'), + ('vi_outlets', NULL, 'Used to export to SWMM the information about outlet with tabular/head format type'), + ('vi_pollutants', NULL, 'Used to export to SWMM information about the pollutant'), + ('vi_polygons', NULL, 'Used to export to SWMM information about polygons'), + ('vi_raingages', NULL, 'Used to export to SWMM the information about raingages'), + ('vi_rdii', NULL, 'Used to export to SWMM the information about rainfall-dependent infiltration/inflow (RDII).'), + ('vi_snowpacks', NULL, 'Used to export to SWMM the information about snow layer'), + ('vi_storage', NULL, 'Used to export to SWMM the information about the reservoirs'), + ('vi_subareas', NULL, 'Used to export to SWMM information about subareas'), + ('vi_subcatchcentroid', NULL, 'Shows the information about subcatchments centroid'), + ('vi_subcatchments', NULL, 'Used to export to SWMM the information about the poligons with subcatchment type'), + ('vi_symbols', NULL, 'Used to export to SWMM informationa about symbols'), + ('vi_temperature', NULL, 'Used to export to SWMM the information about the temperature data of the project (if user has defined it)'), + ('vi_timeseries', NULL, 'Used to export to SWMM the information about time series with absolute type'), + ('vi_transects', NULL, 'Used to export to SWMM the information about transects'), + ('vi_treatment', NULL, 'Used to export to SWMM the information about the treatment of deposits'), + ('vi_washoff', NULL, 'Used to export to SWMM the information about the washoff.'), + ('vi_weirs', NULL, 'Used to export to SWMM the information about arcs type weir'), + ('vi_xsections', NULL, 'Used to export to SWMM the information about xsections'), + ('vu_gully', NULL, 'Unfiltered view with no state and no sector'), + ('vu_link_connec', NULL, 'Unfiltered view of links'), + ('vu_link_gully', NULL, 'Unfiltered view of gully links '), + ('anl_arc', NULL, 'Table with the results of the topology process of arcs'), + ('anl_arc_x_node', NULL, 'Table with the results of the topology process of arcs interacting against nodes'), + ('anl_connec', NULL, 'Table with the results of the topology process of connecs'), + ('anl_node', NULL, 'Table with the results of the topology process of connecs'), + ('anl_polygon', NULL, 'Table with the results of the topology process of polygons'), + ('archived_psector_arc', NULL, 'archived_psector_arc'), + ('archived_psector_arc_traceability', NULL, 'archived_psector_arc_traceability'), + ('archived_psector_connec', NULL, 'archived_psector_connec'), + ('archived_psector_connec_traceability', NULL, 'archived_psector_connec_traceability'), + ('archived_psector_link', NULL, 'archived_psector_link'), + ('archived_psector_link_traceability', NULL, 'archived_psector_link_traceability'), + ('archived_psector_node', NULL, 'archived_psector_node'), + ('archived_psector_node_traceability', NULL, 'archived_psector_node_traceability'), + ('archived_rpt_inp_arc', NULL, 'archived_rpt_inp_arc'), + ('archived_rpt_inp_node', NULL, 'archived_rpt_inp_node'), + ('audit_arc_traceability', NULL, 'Table which store data of geoprocesses that have happened'), + ('audit_check_data', NULL, 'Result of fct_plan_audit_check_data. List of errors for different processes'), + ('audit_check_project', NULL, 'Result of fct_audit_check_project. List of errors for different processes'), + ('audit_fid_log', NULL, 'Table to store logs of fid process'), + ('audit_log_data', NULL, 'Result of the audit of check data'), + ('audit_psector_arc_traceability', 'Psector arc traceability', 'Traceability of executed planified arcs'), + ('audit_psector_connec_traceability', 'Psector connec traceability', 'Traceability of executed planified connecs'), + ('audit_psector_node_traceability', 'Psector node traceability', 'Traceability of executed planified nodes'), + ('cat_brand', 'Brand catalog', 'Catalog of brands'), + ('cat_connec', 'Connec catalog', 'Catalog of connections.'), + ('cat_feature', 'Feature catalog', 'Catalog of features'), + ('cat_feature_connec', NULL, 'Domain data with connects types'), + ('cat_feature_element', NULL, 'cat_feature_element'), + ('cat_feature_link', NULL, 'cat_feature_link'), + ('cat_feature_node', 'Node feature catalog', 'Contains the types of nodes'), + ('cat_link', 'Link catalog', 'cat_link'), + ('cat_manager', NULL, 'Catalog of management divisions'), + ('cat_material', 'Material catalog', 'Catalog of materials.'), + ('cat_users', 'Users catalog', 'Catalog of system users'), + ('cat_workspace', NULL, 'Table to save workspace configuration - values of currently set selectors and inp settings'), + ('config_csv', NULL, 'Catalog of functions of csv import '), + ('config_form_fields', NULL, 'Table whichs saves all values, widgets and configurations for atribute tables and forms in QGIS'), + ('config_form_help', NULL, 'config_form_help'), + ('config_form_list', NULL, 'Saves diferent query_texts related to tables'), + ('config_form_tabs', NULL, 'List of tabs in forms used by the API'), + ('config_fprocess', NULL, 'Table to configure exportation parameters'), + ('config_function', NULL, 'Table with the layers and styles of them, which are needed to handle other functions'), + ('config_info_layer', NULL, 'List of layers used by the API'), + ('config_info_layer_x_type', NULL, 'Table of relations between one table and the table which will be openend based'), + ('config_report', NULL, 'Configuration table used for raport tool.'), + ('config_style', NULL, 'Catalog of different style context'), + ('config_table', NULL, 'Config table used by plugin to aggrupate result layers'), + ('config_toolbox', NULL, 'Catalog and configuration of toolbox functions'), + ('config_typevalue', NULL, 'Relation of id/idval for diferent typevalues in order to manage diferent combo values'), + ('config_user_x_expl', NULL, 'Exploitation defined by the user'), + ('config_visit_class', NULL, 'Catalog of visit classes'), + ('config_visit_class_x_parameter', NULL, 'Table that relates visit parameters with visit classes'), + ('connec', NULL, 'Table of spatial objects representing connects.'), + ('crm_typevalue', NULL, 'Value domain of crm tables'), + ('dimensions', NULL, 'Table to store dimension entities (CAD utils)'), + ('doc', NULL, 'Document information'), + ('doc_type', NULL, 'Contains the document''s types'), + ('doc_x_element', NULL, 'doc_x_element'), + ('doc_x_link', NULL, 'doc_x_link'), + ('doc_x_psector', NULL, 'Doc psector'), + ('doc_x_workcat', NULL, 'Contains the information of document related to workcat'), + ('edit_typevalue', NULL, 'Value domain of edit tables'), + ('element', NULL, 'Contains the elements'), + ('element_x_connec', NULL, 'Contains the elements related to connects'), + ('element_x_link', NULL, 'element_x_link'), + ('element_x_node', NULL, 'Contains the elements related to nodes'), + ('exploitation', NULL, 'Contains the elements related to exploitation'), + ('ext_cat_hydrometer_priority', NULL, 'id'), + ('ext_cat_hydrometer_type', NULL, 'id'), + ('ext_cat_period_type', NULL, 'Catalog of different types of periods'), + ('ext_cat_raster', NULL, 'Catalog of rasters'), + ('ext_district', NULL, 'Catalog of districts'), + ('ext_province', 'Province', 'Table of provinces'), + ('ext_raster_dem', NULL, 'Table to store raster DEM'), + ('ext_region', 'Region', 'Table of regions'), + ('ext_region_x_province', NULL, 'ext_region_x_province'), + ('ext_rtc_dma_period', NULL, 'Data from scada related to date and dma'), + ('ext_rtc_hydrometer', NULL, 'Table of hydrometer receivers'), + ('ext_rtc_hydrometer_state', NULL, 'hydrometers state catalog'), + ('ext_timeseries', NULL, 'Table of timeseries'), + ('inp_backdrop', NULL, 'Identifies a backdrop image and dimensions for the network EPANET map'), + ('inp_dscenario_controls', NULL, '"Table to manage scenario for controls"'), + ('inp_dscenario_frpump', NULL, 'inp_dscenario_frpump'), + ('inp_frpump', NULL, 'inp_frpump'), + ('inp_junction', NULL, 'Defines junction nodes contained in the network'), + ('inp_label', NULL, 'Assigns coordinates to map labels on EPANET user inferface'), + ('inp_pattern_value', NULL, 'Defines time patterns values'), + ('inp_project_id', NULL, 'Table with information of the project'), + ('inp_typevalue', NULL, 'Unfiltered view with no state and no sector'), + ('link', NULL, 'Table of spatial objects representing links.'), + ('macrodma', NULL, 'Table of dma''s'), + ('macroexploitation', 'Macroexploitation', 'Table of macroexploitations'), + ('macrominsector', NULL, 'Table of macrominsectors'), + ('macroomzone', NULL, 'macroomzone'), + ('macrosector', NULL, 'Table of macrosectors'), + ('man_frelem', NULL, 'man_frelem'), + ('man_genelem', NULL, 'man_genelem'), + ('man_junction', NULL, 'Additional information for junction management'), + ('man_manhole', NULL, 'Additional information for manhole management'), + ('man_netelement', NULL, 'Additional information for netelement management'), + ('man_servconnection', NULL, 'man_servconnection'), + ('man_type_category', 'Category type', 'Domain data with types of management'), + ('man_type_fluid', 'Fluid type', 'Domain data with types of fluid management'), + ('man_type_function', 'Function type', 'Domain data with types of function management'), + ('man_type_location', 'Location type', 'Domain data with types of location management'), + ('man_valve', NULL, 'Additional information for valve management'), + ('man_varc', NULL, 'Additional information for virtual arc management'), + ('man_vconnec', NULL, 'Additional information for vconnec management'), + ('man_vlink', NULL, 'Additional information for vlink management'), + ('minsector', NULL, 'Table of minsectors'), + ('minsector_mincut', NULL, 'minsector_mincut'), + ('om_profile', NULL, 'Table to store profiles'), + ('om_typevalue', NULL, 'Value domain of om tables'), + ('om_visit', NULL, 'Table of all visits that took place'), + ('om_visit_cat', 'Visit Catalog', 'Catalog of visits'), + ('om_visit_x_link', NULL, 'om_visit_x_link'), + ('om_waterbalance_dma_graph', NULL, 'Table to manage graph for dma'), + ('omzone', NULL, 'omzone'), + ('plan_arc_x_pavement', NULL, 'Table to relate arcs to pavements'), + ('plan_price', 'Prices', 'Table of compound prices'), + ('plan_price_cat', NULL, 'Catalog of prices (imported using csv import file button)'), + ('plan_price_compost', 'Compost prices', 'Table to relate simple prices to compound prices'), + ('plan_psector_x_connec', NULL, 'Table of connecs related to plan sectors'), + ('plan_rec_result_arc', NULL, 'Contains reconstruction prices of arcs'), + ('plan_rec_result_node', NULL, 'Contains reconstruction prices of nodes'), + ('plan_reh_result_arc', NULL, 'Contains rehabilitation prices of arcs'), + ('plan_reh_result_node', NULL, 'Contains rehabilitation prices of nodes'), + ('plan_result_cat', NULL, 'Catalog of rehabilitation and reconstruction prices'), + ('plan_typevalue', NULL, 'Value domain of plan tables'), + ('polygon', NULL, 'Table of spatial objects representing polygons (always related to one node)'), + ('review_arc', NULL, 'Table for O&M to report about arcs'), + ('review_audit_arc', NULL, 'Table for O&M about audit arcs'), + ('review_audit_connec', NULL, 'Table for O&M about audit connecs'), + ('review_audit_node', NULL, 'Table for O&M about audit nodes'), + ('review_connec', NULL, 'Table for O&M to report about connecs'), + ('review_node', NULL, 'Table for O&M to report about nodes'), + ('rpt_cat_result', NULL, 'Contains the information about the results'), + ('rpt_inp_arc', NULL, 'Hydraulic model results for arc'), + ('rpt_inp_node', NULL, 'Hydraulic model results for node'), + ('samplepoint', NULL, 'Table of spatial objects representing sample points.'), + ('sector', NULL, 'Table of spatial objects representing sectors.'), + ('selector_audit', NULL, 'Selector of the audit functions'), + ('selector_date', NULL, 'Selector of dates'), + ('selector_expl', NULL, 'Selector of the exploitation'), + ('selector_hydrometer', NULL, 'Selector of hydrometers'), + ('selector_macroexpl', NULL, 'Selector for macroexploitations'), + ('selector_macrosector', NULL, 'Selector for macroexploitations'), + ('selector_municipality', NULL, 'Selector of municipalities'), + ('selector_network', NULL, 'Selector of the network'), + ('selector_plan_result', NULL, 'Catalog of selector result'), + ('selector_psector', NULL, 'Selector of the plan sector'), + ('selector_rpt_compare', NULL, 'Selector of an alternative result (to compare with other results)'), + ('selector_rpt_compare_tstep', NULL, 'Selector of an alternative result (to compare with other results)'), + ('selector_rpt_main_tstep', NULL, 'Selector of an alternative result (to compare with other results)'), + ('selector_sector', NULL, 'Sector''s selector. Contains the sectors of the selected network'), + ('selector_state', NULL, 'Selector of the state'), + ('selector_workcat', NULL, 'Selector of workcats'), + ('sys_addfields', NULL, 'Table to add new user specific features'), + ('sys_feature_cat', NULL, 'Table of all model GIS features'), + ('sys_feature_class', NULL, 'sys_feature_class'), + ('sys_feature_epa_type', NULL, 'epa types'), + ('sys_feature_type', NULL, 'Table of all types of GIS features'), + ('sys_foreignkey', NULL, 'id'), + ('sys_fprocess', NULL, 'Table of different processes'), + ('sys_function', NULL, 'Catalog of functions'), + ('sys_image', NULL, 'Saves images used by the API'), + ('sys_label', NULL, 'Specific table to keep labels indexed and ready to translate'), + ('sys_message', NULL, 'Catalog of errors'), + ('sys_param_user', NULL, 'Catalog of user parameters'), + ('sys_role', NULL, 'Table with the diferent roles of the system'), + ('sys_style', NULL, 'Table to store styles to be used on client passed by json response of bbdd'), + ('sys_table', NULL, 'Table with the information of tables and views of the project'), + ('sys_typevalue', NULL, 'System typevalues'), + ('sys_version', NULL, 'Table to control de version of the software used on the project.'), + ('temp_anlgraph', NULL, 'Temporal tabl to store the graphanalytics process'), + ('temp_arc', NULL, 'id'), + ('temp_csv', NULL, 'Temporary table to store import csv file'), + ('temp_data', NULL, 'Table for additional, uneditable fields related to feature'), + ('temp_go2epa', NULL, 'id'), + ('temp_node', NULL, 'id'), + ('temp_table', NULL, 'Temporary table of elements with results from temporal works'), + ('v_anl_arc', NULL, 'View with the results of the topology process of arcs (arc results)'), + ('v_anl_arc_point', NULL, 'View with the results of the topology process of arcs (point results)'), + ('v_anl_arc_x_node', NULL, 'View with the results of the topology process of arcs interacting against nodes (arc results)'), + ('v_anl_arc_x_node_point', NULL, 'View with the results of the topology process of arcs interacting against nodes (point results)'), + ('v_anl_connec', NULL, 'View with the results of the topology process of connecs'), + ('v_anl_node', NULL, 'View with the results of the topology process of nodes'), + ('v_arc', NULL, 'Shows the arc data.'), + ('v_connec', NULL, 'Auxiliar view for connecs'), + ('v_element_x_arc', NULL, 'Contains the elements related to arc'), + ('v_element_x_connec', NULL, 'Contains the elements related to connec'), + ('v_element_x_node', NULL, 'Contains the elements related to node'), + ('v_expl_connec', NULL, 'Filter view for connecs'), + ('v_ext_address', 'Address', 'Shows information about entrance numbers'), + ('v_ext_municipality', 'Municipality', 'View of town cities and villages based filtered by active exploitations'), + ('v_ext_plot', 'Plot', 'Shows information about urban properties and related to them connecs.'), + ('v_ext_raster_dem', 'DEM', 'Raster dem view'), + ('v_ext_streetaxis', 'Streetaxis', 'Shows information about streetaxis'), + ('v_hydrometer_x_connec', NULL, 'Shows the hydrometer receivers related to connecs.'), + ('v_link', NULL, 'Filtered view of links'), + ('v_link_connec', NULL, 'Filtered view of links type connec'), + ('v_node', NULL, 'Shows the node data.'), + ('v_om_visit', NULL, 'Shows all the executed visits."'), + ('v_plan_arc', 'Arc reposition value', 'View only with the most important information about the cost of the arc'), + ('v_plan_aux_arc_pavement', NULL, 'Layer to relate pavements against arc'), + ('v_plan_current_psector', 'Plan current psector', 'View to show current planified sector'), + ('v_plan_node', 'Node reposition value', 'View only with the most important information about the cost of the node'), + ('v_plan_psector_all', NULL, 'Unfiltered view that shows planified sectors'), + ('v_plan_psector_arc', 'Plan psector arc', 'View to show arcs related to psectors. Useful to show arcs which will be obsolete in psectors'), + ('v_plan_psector_budget', NULL, 'Shows the general budget of current psector'), + ('v_plan_psector_budget_arc', NULL, 'View to show budget of every arc related to a psector'), + ('v_plan_psector_budget_detail', NULL, 'Shows the detalied budget of current psector'), + ('v_plan_psector_budget_node', NULL, 'View to show budget of every node related to a psector'), + ('v_plan_psector_budget_other', NULL, 'View to show budget of other prices related to a psector'), + ('v_plan_psector_connec', 'Plan psector connec', 'View to show connecs related to psectors. Useful to show connecs which will be obsolete in psectors'), + ('v_plan_psector_link', 'Plan psector link', 'View to show links related to psectors. Useful to show links which will be obsolete in psectors'), + ('v_plan_psector_node', 'Plan psector node', 'View to show nodes related to psectors. Useful to show nodes which will be obsolete in psectors'), + ('v_polygon', NULL, 'Table to enable the info for polygons. Table need to be load on qgis project'), + ('v_price_compost', NULL, 'View for code'), + ('v_price_x_arc', NULL, 'Shows the datails of the arc price.'), + ('v_price_x_catarc', NULL, 'View for code'), + ('v_price_x_catnode', NULL, 'View for code'), + ('v_price_x_catpavement', NULL, 'View for code'), + ('v_price_x_catsoil', NULL, 'View for code'), + ('v_rpt_arc_all', 'Arc All Values', 'Shows the results of all arcs simulation'), + ('v_rpt_node_all', 'Node All Values', 'Shows the results of all nodes simulation'), + ('v_rtc_hydrometer', NULL, 'Shows the hydrometer receivers.'), + ('v_rtc_hydrometer_x_connec', NULL, 'Shows the hydrometer receivers related to connecs.'), + ('v_rtc_period_hydrometer', NULL, 'Shows the hydrometer periods.'), + ('v_state_arc', NULL, 'View that filter arcs for state and exploitation'), + ('v_state_connec', NULL, 'View that filter connecs for state and exploitation'), + ('v_state_dimensions', NULL, 'View that filter dimensions for state'), + ('v_state_element', NULL, 'View that filter elements for state'), + ('v_state_link', NULL, 'View that filters links by state and exploitation'), + ('v_state_link_connec', NULL, 'View that filters links related to connecs by state and exploitation'), + ('v_state_node', NULL, 'View that filter nodes for state'), + ('v_state_samplepoint', NULL, 'View that filter samplepoints for state'), + ('v_ui_arc_x_relations', NULL, 'Shows relations of arc (connec, gullys and nodes)'), + ('v_ui_cat_dscenario', NULL, 'Table to show dscenario un qgis ui'), + ('v_ui_doc', NULL, 'User interface view for docs'), + ('v_ui_doc_x_arc', NULL, 'Shows the information of document related to arcs. User Interface view.'), + ('v_ui_doc_x_connec', NULL, 'Shows the information of document related to connects. User Interface view.'), + ('v_ui_doc_x_element', NULL, 'v_ui_doc_x_element'), + ('v_ui_doc_x_link', NULL, 'v_ui_doc_x_link'), + ('v_ui_doc_x_node', NULL, 'Shows the information of document related to nodes. User Interface view.'), + ('v_ui_doc_x_psector', NULL, 'Shows documents related to psectors'), + ('v_ui_doc_x_visit', NULL, 'Shows the information of document related to visits. User Interface view.'), + ('v_ui_doc_x_workcat', NULL, 'Shows documents related to workcats. User Interface view."'), + ('v_ui_element', NULL, 'Shows elements'), + ('v_ui_element_x_arc', NULL, 'Contains the elements related to arc. User Interface view.'), + ('v_ui_element_x_connec', NULL, 'Contains the elements related to connec. User Interface view.'), + ('v_ui_element_x_link', NULL, 'v_ui_element_x_link'), + ('v_ui_element_x_node', NULL, 'Contains the elements related to node. User Interface view.'), + ('v_ui_event_x_arc', NULL, 'User interface view for arcs related to its events'), + ('v_ui_event_x_connec', NULL, 'User interface view for connecs related to its events'), + ('v_ui_event_x_node', NULL, 'User interface view for nodes related to its events'), + ('v_ui_hydrometer', NULL, 'Shows corporate customitzation of hydrometers data'), + ('v_ui_hydroval_x_connec', NULL, 'User interface view for connecs related to its hydrometer and data'), + ('v_ui_macroomzone', NULL, 'v_ui_macroomzone'), + ('v_ui_macrosector', NULL, 'v_ui_macrosector'), + ('v_ui_om_event', NULL, 'Shows all the executed events. User Interface view."'), + ('v_ui_om_visit', NULL, 'Shows visit information'), + ('v_ui_om_visit_x_arc', NULL, 'Shows the visits related to arc elements. User Interface view.'), + ('v_ui_om_visit_x_connec', NULL, 'Shows the visits related to connec elements. User Interface view.'), + ('v_ui_om_visit_x_doc', NULL, 'Shows documents related to visits. User Interface view."'), + ('v_ui_om_visit_x_link', NULL, 'v_ui_om_visit_x_link'), + ('v_ui_om_visit_x_node', NULL, 'Shows the visits related to node elements. User Interface view.'), + ('v_ui_om_visitman_x_arc', NULL, 'Shows the visits related to management of arc elements. User Interface view.'), + ('v_ui_om_visitman_x_connec', NULL, 'Shows the visits related to management of connec elements. User Interface view.'), + ('v_ui_om_visitman_x_node', NULL, 'Shows the visits related to management of node elements. User Interface view.'), + ('v_ui_omzone', NULL, 'v_ui_omzone'), + ('v_ui_plan_arc_cost', NULL, 'User interface view for nodes and its prices'), + ('v_ui_plan_node_cost', NULL, 'User interface view for nodes and its prices'), + ('v_ui_plan_psector', NULL, 'id'), + ('v_ui_rpt_cat_result', NULL, 'Shows the results of the epa model'), + ('v_ui_style', NULL, 'v_ui_sys_style'), + ('v_ui_sys_style', NULL, 'v_ui_sys_style'), + ('v_ui_visit_incid_node', NULL, 'v_ui_visit_incid_node'), + ('v_ui_visit_node_insp', NULL, 'v_ui_visit_node_insp'), + ('v_ui_workcat_x_feature', NULL, 'Shows the features created by workcat'), + ('v_ui_workcat_x_feature_end', NULL, 'Showa the features deprecated by workcat'), + ('v_ui_workspace', NULL, 'Shows saved workspaces'), + ('v_value_relation', 'Domain value', 'Domain value table'), + ('value_state', NULL, 'Domain data with value describing the state'), + ('value_state_type', NULL, 'Domain data with value describing the state type'), + ('vcv_dma', NULL, 'View dma for epatools'), + ('vcv_emitters', NULL, 'View emitters for epatools'), + ('vcv_times', NULL, 'View times for epatools'), + ('ve_arc', 'Arc', 'Shows editable information about arcs.'), + ('ve_arc_varc', NULL, 'Custom editable view for VARC'), + ('ve_cad_auxcircle', 'Cirle', 'Layer to store circle geometry when CAD tool is used'), + ('ve_cad_auxline', 'Line', 'Layer to store line geometry'), + ('ve_cad_auxpoint', 'Point', 'Layer to store point geometry when CAD tool is used'), + ('ve_cat_dscenario', 'Dscenario catalog', 'Table to manage dynamic scenarios'), + ('ve_cat_feature_arc', 'Arc features', 'Editable view for cat_feature_arc configuration'), + ('ve_cat_feature_connec', 'Connec features', 'Editable view for cat_feature_connec configuration'), + ('ve_cat_feature_element', 'Element features', 'Catalog for elements'), + ('ve_cat_feature_link', 'Link features', 'v_edit_cat_feature_link'), + ('ve_cat_feature_node', 'Node features', 'Editable view for cat_feature_node configuration'), + ('ve_config_addfields', NULL, 'View which shows existent addfields and its configuration'), + ('ve_config_sysfields', NULL, 'Shows '), + ('ve_connec', 'Connec', 'Shows editable information about connecs.'), + ('ve_connec_hydro_data', NULL, 'Shows editable information data from hydrometers related to connecs'), + ('ve_connec_vconnec', NULL, 'Custom editable view for VCONNEC'), + ('ve_dimensions', 'Dimensioning', 'Shows editable information about dimensions.'), + ('ve_dma', 'DMA', 'Shows editable information about dma.'), + ('ve_element_ecover', NULL, 'Custom editable view for ECOVER'), + ('ve_element_epump', NULL, 'Custom editable view for EPUMP'), + ('ve_element_estep', NULL, 'Custom editable view for ESTEP'), + ('ve_epa_frpump', NULL, 've_epa_frpump'), + ('ve_epa_junction', NULL, 'Editable view for epa junction'), + ('ve_exploitation', 'Exploitation', 'Shows editable information about exploitation'), + ('ve_frelem_epump', 'Epump', 'Custom editable view for EPUMP'), + ('ve_genelem', 'GenElement', 've_genelem'), + ('ve_genelem_ecover', 'Ecover', 'Custom editable view for ECOVER'), + ('ve_genelem_estep', 'Estep', 'Custom editable view for ESTEP'), + ('ve_inp_controls', 'Controls', 'View to edit control values, filteder by sector_id'), + ('ve_inp_curve', 'Curve catalog', 'View to edit curves, filteder by sector_id'), + ('ve_inp_curve_value', 'Curve values', 'View to edit curve values, filteder by sector_id'), + ('ve_inp_dscenario_controls', 'Controls Dscenario', '"Editable view to manage scenario for controls"'), + ('ve_inp_dscenario_frpump', 'FRpump Dscenario', 'v_edit_inp_dscenario_frpump'), + ('ve_inp_frpump', 'Inp flwreg pump', 've_inp_frpump'), + ('ve_inp_junction', 'Inp Junction', 'Shows editable information about node type junction'), + ('ve_inp_pump', 'Inp Pump', 'Shows editable information about node type pump'), + ('ve_link', 'Link', 'Shows editable information about links.'), + ('ve_link_servconnection', 'Servconnection', 'Custom editable view for SERVCONNECTION'), + ('ve_link_vlink', NULL, 'Custom editable view for VLINK'), + ('ve_macrodma', 'Macrodma', 'Shows editable information about macrodma.'), + ('ve_macroomzone', NULL, 'v_edit_macroomzone'), + ('ve_macrosector', 'Macrosector', 'Shows editable information about macrosector.'), + ('ve_node', 'Node', 'Shows editable information about nodes.'), + ('ve_node_junction', NULL, 'Custom editable view for JUNCTION'), + ('ve_node_netelement', NULL, 'Custom editable view for NETELEMENT'), + ('ve_node_register', NULL, 'Custom editable view for REGISTER'), + ('ve_om_visit', 'Visit', 'Shows editable information about visits.'), + ('ve_omzone', NULL, 'v_edit_omzone'), + ('ve_plan_psector_x_connec', NULL, 'Editable view to work with psector and connec'), + ('ve_plan_psector_x_other', NULL, 'Shows editable information about plan sector.'), + ('ve_pol_connec', 'Connec polygon', 'Editable view for polygons related to connec features'), + ('ve_pol_element', 'Element polygon', 'Editable view for element polygons'), + ('ve_pol_node', 'Node polygon', 'Editable view for polygons related to node features'), + ('ve_review_arc', NULL, 'Used to edit the review information'), + ('ve_review_audit_arc', NULL, 'Used to edit the review information'), + ('ve_review_audit_connec', NULL, 'Used to edit the review information'), + ('ve_review_audit_node', NULL, 'Used to edit the review information'), + ('ve_review_connec', NULL, 'Used to edit the review information'), + ('ve_review_node', NULL, 'Used to edit the review information'), + ('ve_rtc_hydro_data_x_connec', NULL, 'Shows editable information data from hydrometers related to connecs'), + ('ve_samplepoint', NULL, 'Shows editable information about samplepoints.'), + ('ve_sector', 'Sector', 'Shows editable information about sectors.'), + ('ve_visit_arc_singlevent', NULL, 'Editable view that saves visits to arcs and its event data'), + ('ve_visit_connec_singlevent', NULL, 'Editable view that saves visits to connecs and its event data'), + ('ve_visit_incid_node', NULL, 've_visit_incid_node'), + ('ve_visit_node_insp', NULL, 've_visit_node_insp'), + ('ve_visit_node_singlevent', NULL, 'Editable view that saves visits to nodes and its event data'), + ('vi_backdrop', NULL, 'Used to export to EPANET information about backdrop images and dimensions for the network EPANET map.'), + ('vi_controls', NULL, 'Used to export to EPANET information about controls that modify links based on a single condition.'), + ('vi_coordinates', NULL, 'Used to export to EPANET informations about coordinates'), + ('vi_curves', NULL, 'Used to export to EPANET the information about definition of the curve'), + ('vi_junctions', NULL, 'Used to export to EPANET the information about node type junction'), + ('vi_labels', NULL, 'Used to export to EPANET the information about coordinates of map labels on EPANET'), + ('vi_options', NULL, 'Used to export to EPANET the general information with the simulation options'), + ('vi_patterns', NULL, 'Used to export to EPANET information about time patterns.'), + ('vi_pumps', NULL, 'Used to export to EPANET the information about node type pump'), + ('vi_report', NULL, 'Used to export to EPANET the information about the output simulation report.'), + ('vi_vertices', NULL, 'Used to export to EPANET the information about the pipelines'' vertexes geometry'), + ('vu_arc', NULL, 'Unfiltered view with no state and no sector'), + ('vu_connec', NULL, 'Unfiltered view with no state and no sector'), + ('vu_exploitation', NULL, 'View of all exploitations related to user'), + ('vu_ext_municipality', NULL, 'View of all municipalities related to user'), + ('vu_link', NULL, 'View of links without filters'), + ('vu_macroexploitation', NULL, 'View of all macroexploitations related to user'), + ('vu_macrosector', NULL, 'View of all macrosectors related to user'), + ('vu_node', NULL, 'Unfiltered view with no state and no sector'), + ('vu_om_mincut', NULL, 'View of all mincuts related to user'), + ('arc', NULL, 'Table of spatial objects representing arcs'), + ('arc_add', NULL, 'Table for additional, uneditable fields related to feature'), + ('archived_rpt_arc', NULL, 'Contains the results of arc elements'), + ('archived_rpt_arc_stats', NULL, 'archived_rpt_arc_stats'), + ('archived_rpt_energy_usage', NULL, 'Contains the results of the table of energy usage'), + ('archived_rpt_hydraulic_status', NULL, 'Contains the information about the state of the results'), + ('archived_rpt_inp_pattern_value', NULL, 'id'), + ('archived_rpt_node', NULL, 'Contains the results of node elements'), + ('archived_rpt_node_stats', NULL, 'archived_rpt_node_stats'), + ('cat_arc', 'Arc catalog', 'Catalog of arcs'), + ('cat_arc_shape', 'Catalog of arc shapes', 'Catalog of arc shapes'), + ('cat_brand_model', 'Brand model catalog', 'Catalog of brand models'), + ('cat_dscenario', NULL, 'Catalog of demand scenarios'), + ('cat_element', 'Element catalog', 'Catalog of elements'), + ('cat_feature_arc', NULL, 'Contains the types of arcs'), + ('cat_mat_roughness', 'Roughness catalog', 'Catalog of material roughness'), + ('cat_node', 'Node catalog', 'Catalog of nodes'), + ('cat_owner', 'Owner catalog', 'Catalog of owners'), + ('cat_pavement', 'Pavement catalog', 'Catalog of pavements'), + ('cat_soil', 'Soil catalog', 'Catalog of soil types'), + ('cat_work', 'Work catalog', 'Catalog of construction works'), + ('config_form_tableview', NULL, 'Table to define diferent configuration parameters related to the custom forms'), + ('config_graph_checkvalve', NULL, 'Configuration table of flow direction in check valves.'), + ('config_graph_mincut', NULL, 'Table to configure the inlets of the network. Optionally, you can set if any of its arc is an inlet arc'), + ('config_param_system', NULL, 'Table to define diferent configuration parameters related to the system'), + ('config_param_user', NULL, 'Table to define diferent configuration parameters of default values'), + ('config_visit_parameter', 'Parameter Catalog', 'Catalog of parameters related to event types.'), + ('config_visit_parameter_action', NULL, 'Reverse table for parameters.'), + ('connec_add', NULL, 'Table for additional, uneditable fields related to feature'), + ('crm_zone', NULL, 'Table with polygonal geometry to relate connecs to a map zone about crm'), + ('crmzone', NULL, 'Table with polygonal geometry to relate connecs to a map zone about crm'), + ('dma', NULL, 'Table of spatial objects representing District Meter Area.'), + ('doc_x_arc', NULL, 'Contains the information of document related to arcs'), + ('doc_x_connec', NULL, 'Contains the information of document related to connects'), + ('doc_x_node', NULL, 'Contains the information of document related to nodes'), + ('doc_x_visit', NULL, 'Contains the information of document related to visits'), + ('dqa', NULL, 'Table of spatial objects representing District Quality Area'), + ('element_add', NULL, 'element_add'), + ('element_type', NULL, 'Contains the types of elements'), + ('element_x_arc', NULL, 'Contains the elements related to arc'), + ('ext_address', NULL, 'Table of entrance numbers'), + ('ext_cat_hydrometer', 'Hydrometer catalog', 'Catalog of hydrometers receivers'), + ('ext_cat_period', 'Period catalog', 'Catalog of time periods'), + ('ext_hydrometer_category', NULL, 'Catalog of hydrometer categories'), + ('ext_municipality', NULL, 'Table of town cities and villages'), + ('ext_plot', NULL, 'Table of urban properties'), + ('ext_rtc_hydrometer_x_data', NULL, 'Agregated data obtained from hydrometer receivers'), + ('ext_rtc_scada', NULL, 'Table to manage scada assets'), + ('ext_rtc_scada_x_data', NULL, 'Table to manage scada values (aggregated by period'), + ('ext_streetaxis', NULL, 'Table of streetaxis'), + ('ext_type_street', NULL, 'Catalog of street types'), + ('inp_connec', NULL, 'Table that relates connecs with its pattern and demand'), + ('inp_controls', NULL, 'Defines simple controls that modify links based on a single condition'), + ('inp_curve', NULL, 'Curve catalog'), + ('inp_curve_value', NULL, 'Defines data curves and their X,Y points'), + ('inp_dscenario_connec', NULL, 'Table to manage dscenario for connecs'), + ('inp_dscenario_demand', NULL, 'Replace to junction feature for defining multiple water demands at junction nodes. WARNING: If this junction values are used the value of junction is ignored'), + ('inp_dscenario_frshortpipe', NULL, 'Table to manage scenario for short pipes'), + ('inp_dscenario_frvalve', NULL, 'inp_dscenario_frvalve'), + ('inp_dscenario_inlet', NULL, 'Table to manage dscenario for inlets'), + ('inp_dscenario_junction', NULL, 'Table to manage dscenario for junctions'), + ('inp_dscenario_pipe', NULL, 'Table to manage scenario for pipes'), + ('inp_dscenario_pump', NULL, 'Table to manage scenario for pump'), + ('inp_dscenario_pump_additional', NULL, 'Table to manage dscenario for additional pumps'), + ('inp_dscenario_reservoir', NULL, 'Table to manage scenario for reservoir'), + ('inp_dscenario_rules', NULL, '"Table to manage scenario for rules"'), + ('inp_dscenario_shortpipe', NULL, 'Table to manage scenario for shortpipes'), + ('inp_dscenario_tank', NULL, 'Table to manage scenario for tank'), + ('inp_dscenario_valve', NULL, 'Table to manage scenario for valves'), + ('inp_dscenario_virtualvalve', NULL, 'Table to manage dscenario for virtualvalves'), + ('inp_energy', NULL, 'id'), + ('inp_frshortpipe', NULL, 'inp_frshortpipe'), + ('inp_frvalve', NULL, 'inp_frvalve'), + ('inp_inlet', NULL, 'id'), + ('inp_pattern', NULL, 'Defines time patterns'), + ('inp_pipe', NULL, 'Defines all pipe links contained in the network'), + ('inp_pump', NULL, 'Defines all pump links contained in the network'), + ('inp_pump_additional', 'Pump Additional', 'Defines all additional pump links contained in the network'), + ('inp_reservoir', NULL, 'Defines all reservoir nodes contained in the network'), + ('inp_rules', NULL, 'id'), + ('inp_shortpipe', NULL, 'Contains information about short pipes (nodes on GIS features, arc on model as shutoff valve, flowmeteror check valve'), + ('inp_tags', NULL, 'Associates category labels (tags) with specific nodes and links on EPANET user inferface.'), + ('inp_tank', NULL, 'Defines all tank nodes contained in the network.'), + ('inp_times', NULL, 'Values of simulation times of hydraulic model'), + ('inp_valve', NULL, 'Defines all control valve links contained in the network.'), + ('inp_virtualpump', NULL, 'Used to store virtual pump values'), + ('inp_virtualvalve', NULL, 'Used to store valves originally defined as arcs'), + ('macrocrmzone', NULL, 'macrocrmzone'), + ('macrodqa', NULL, 'Table of macrodqas'), + ('man_expansiontank', NULL, 'Additional information for expansiontank management'), + ('man_filter', NULL, 'Additional information for filter management'), + ('man_flexunion', NULL, 'Additional information for flexunion management'), + ('man_fountain', NULL, 'Additional information for fountain management'), + ('man_greentap', NULL, 'Additional information for greentap management'), + ('man_hydrant', NULL, 'Additional information for hydrant management'), + ('man_meter', NULL, 'Additional information for measure instrument management'), + ('man_netsamplepoint', NULL, 'Additional information for netsamplepoint management'), + ('man_netwjoin', NULL, 'Additional information for netwjoin management'), + ('man_pipe', NULL, 'Additional information for pipe management'), + ('man_pipelink', NULL, 'man_pipelink'), + ('man_pump', NULL, 'Additional information for pump management'), + ('man_reduction', NULL, 'Additional information for reduction management'), + ('man_register', NULL, 'Additional information for register management'), + ('man_source', NULL, 'Additional information for source management'), + ('man_tank', NULL, 'Additional information for tank management'), + ('man_tap', NULL, 'Additional information for water tap management'), + ('man_waterwell', NULL, 'Additional information for waterwell management'), + ('man_wjoin', NULL, 'Additional information for wjoin management'), + ('man_wtp', NULL, 'Additional information for wtp management'), + ('minsector_graph', NULL, 'id'), + ('minsector_mincut_valve', NULL, 'Table of minsector mincut valves'), + ('node', NULL, 'Table of spatial objects representing nodes'), + ('node_add', NULL, 'Table for additional, uneditable fields related to feature'), + ('om_mincut', NULL, 'Catalog of mincut results'), + ('om_mincut_arc', NULL, 'Table of minimum cut analysis related to arcs.'), + ('om_mincut_cat_type', NULL, 'Catalog of mincut types'), + ('om_mincut_conflict', NULL, 'Table of minimum cut analysis related to conflicts'), + ('om_mincut_connec', NULL, 'Table of minimum cut analysis related to connecs.'), + ('om_mincut_hydrometer', NULL, 'Table of minimum cut analysis related to hydrometers.'), + ('om_mincut_node', NULL, 'Table of minimum cut analysis related to nodes.'), + ('om_mincut_polygon', NULL, 'Table of minimum cut analysis related to polygons.'), + ('om_mincut_valve', NULL, 'Table of minimum cut analysis related to valve.'), + ('om_mincut_valve_unaccess', NULL, 'Table with the unaccessible valves for each mincut result_id'), + ('om_streetaxis', NULL, 'Segmented streetaxis table, used for hydrant analysis'), + ('om_visit_event', NULL, 'Table of events that took place during the visit.'), + ('om_visit_event_photo', NULL, 'Table of events that took place during the visit and the relative photos.'), + ('om_visit_x_arc', NULL, 'Table of visits related to arc.'), + ('om_visit_x_connec', NULL, 'Table of visits related to connec.'), + ('om_visit_x_node', NULL, 'Table of visits related to node.'), + ('om_waterbalance', NULL, 'Table to manage water balance values according IWA standards by period and DMA'), + ('plan_netscenario', NULL, 'Catalog of network scenarios'), + ('plan_netscenario_arc', NULL, 'Table to manage arcs related to each netscenarios'), + ('plan_netscenario_connec', NULL, 'Table to manage connecs related to each netscenarios'), + ('plan_netscenario_dma', NULL, 'Table of spatial objects representing planified District Meter Area.'), + ('plan_netscenario_node', NULL, 'Table to manage nodes related to each netscenarios'), + ('plan_netscenario_presszone', NULL, 'Table of spatial objects representing planified Pressure Zones'), + ('plan_netscenario_valve', NULL, 'Table of valve related to selected netscenario'), + ('plan_psector', NULL, 'Table of plan sector.'), + ('plan_psector_x_arc', NULL, 'Table of arcs related to plan sectors.'), + ('plan_psector_x_node', NULL, 'Table of nodes related to plan sectors.'), + ('plan_psector_x_other', NULL, 'Table of other objects related to plan sectors.'), + ('presszone', NULL, 'Catalog of pressure zones'), + ('rpt_arc_stats', NULL, 'Table to store result stats in order to gain performance showing results'), + ('rpt_inp_pattern_value', NULL, 'id'), + ('rpt_node_stats', NULL, 'Table to store result stats in order to gain performance showing results'), + ('selector_inp_dscenario', NULL, 'Selector of demand scenarios'), + ('selector_inp_result', NULL, 'Selector of results'), + ('selector_mincut_result', NULL, 'Table of minimum cut analysis related to selector.'), + ('selector_netscenario', NULL, 'Selector of network scenarios'), + ('selector_rpt_main', NULL, 'Result''s selector'), + ('supplyzone', NULL, 'supplyzone'), + ('temp_demand', NULL, 'Table with temporal demands when go2epa inp file is created'), + ('temp_mincut', NULL, 'Temporal table for mincut analysis'), + ('v_audit_check_project', NULL, 'Shows the result of audit check project data'), + ('v_inp_pjointpattern', NULL, 'View of patterns assigned to point where connec connects with network'), + ('v_om_mincut', NULL, 'Catalog of minimum cut analysis results.'), + ('v_om_mincut_arc', 'Mincut result arc', 'View with aggregated information of the results of mincut analysis (arc)'), + ('v_om_mincut_connec', 'Mincut result connec', 'View with aggregated information of the results of mincut analysis (connec)'), + ('v_om_mincut_current_arc', NULL, 'View for current mincuts'), + ('v_om_mincut_current_connec', NULL, 'View for current mincuts'), + ('v_om_mincut_current_hydrometer', NULL, 'View for current mincuts'), + ('v_om_mincut_current_initpoint', NULL, 'View for current mincuts'), + ('v_om_mincut_current_node', NULL, 'View for current mincuts'), + ('v_om_mincut_hydrometer', NULL, 'View with aggregated information of the results of mincut analysis (hydrometers)'), + ('v_om_mincut_initpoint', 'Mincut init point', 'Catalog of mincut results'), + ('v_om_mincut_node', 'Mincut result node', 'View with aggregated information of the results of mincut analysis (node)'), + ('v_om_mincut_planned_arc', NULL, 'Catalog of mincut results'), + ('v_om_mincut_planned_valve', NULL, 'Catalog of mincut results'), + ('v_om_mincut_polygon', NULL, 'View with aggregated information of the results of mincut analysis (polygon)'), + ('v_om_mincut_valve', 'Mincut result valve', 'View with aggregated information of the results of mincut analysis (valve)'), + ('v_om_waterbalance', NULL, 'View to show water balance values according IWA standards by period and DMA'), + ('v_om_waterbalance_report', NULL, 'View to show the general water balance report by period and DMA'), + ('v_plan_netscenario_arc', 'Netscenario arc', 'View to visualize arcs related to selected netscenario'), + ('v_plan_netscenario_connec', 'Netscenario connec', 'View to visualize connecs related to selected netscenario'), + ('v_plan_netscenario_node', 'Netscenario node', 'View to visualize nodes related to selected netscenario'), + ('v_plan_psector', 'Plan psector', 'View to show planified sectors'), + ('v_plan_result_arc', NULL, 'Shows the result of arc cost'), + ('v_plan_result_node', NULL, 'Shows the result of node cost'), + ('v_rpt_arc', 'Arc values', 'Shows the results of the arcs simulation'), + ('v_rpt_arc_hourly', 'Arc Hourly Values', 'Shows the result related to arc hourly information'), + ('v_rpt_arc_stats', 'Arc maximum values', 'v_rpt_arc_stats'), + ('v_rpt_comp_arc', 'Arc Maximum Values Compare', 'Shows the results of the alternative result (to compare on QGIS project) related to arc information'), + ('v_rpt_comp_arc_hourly', 'Arc Hourly Values Compare', 'Shows the results of the alternative result (to compare on QGIS project) related to arc hourly information'), + ('v_rpt_comp_energy_usage', NULL, 'Shows the results of the alternative result (to compare on QGIS project) related to energy usagee'), + ('v_rpt_comp_hydraulic_status', NULL, 'Shows the results of the alternative result (to compare on QGIS project) related to hydraulic stataus'), + ('v_rpt_comp_node', 'Node Maximum Values Compare', 'Shows the results of the alternative result (to compare on QGIS project) related to node'), + ('v_rpt_comp_node_hourly', 'Node Hourly Values Compare', 'Shows the results of the alternative result (to compare on QGIS project) related to node hourly information'), + ('v_rpt_energy_usage', NULL, 'Shows the results of the energy usage'), + ('v_rpt_hydraulic_status', NULL, 'Shows the results of hydraulic status'), + ('v_rpt_node', 'Node values', 'Shows the results of the nodes simulation'), + ('v_rpt_node_hourly', 'Node Hourly Values', 'Shows the result related to node hourly information'), + ('v_rpt_node_stats', 'Node maximum values', 'v_rpt_node_stats'), + ('v_ui_arc_x_node', NULL, 'View that joins arcs and nodes'), + ('v_ui_event_x_link', NULL, 'v_ui_event_x_link'), + ('v_ui_macrodma', NULL, 'v_ui_macrodma'), + ('v_ui_macrodqa', NULL, 'v_ui_macrodqa'), + ('v_ui_mincut', NULL, 'Shows the result of mincut'), + ('v_ui_mincut_connec', NULL, 'Shows the mincut results related to connecs'), + ('v_ui_mincut_hydrometer', NULL, 'Shows the mincut results related to hydrometers'), + ('v_ui_node_x_relations', NULL, 'Shows relations of nodes'), + ('v_ui_om_visitman_x_link', NULL, 'v_ui_om_visitman_x_link'), + ('v_ui_plan_netscenario', NULL, 'Table to show netscenario in qgis ui'), + ('v_ui_supplyzone', NULL, 'v_ui_supplyzone'), + ('v_ui_visit_arc_leak', NULL, 'v_ui_visit_arc_leak'), + ('v_ui_visit_connec_leak', NULL, 'v_ui_visit_connec_leak'), + ('v_ui_visit_link_leak', NULL, 'v_ui_visit_link_leak'), + ('v_value_cat_connec', NULL, 'Shows the diferent values of connec catalog'), + ('v_value_cat_node', NULL, 'Shows the diferent values of node catalog'), + ('vcp_pipes', NULL, 'View pipes for epatools'), + ('vcv_demands', NULL, 'View demands for epatools'), + ('vcv_dma_log', NULL, 'View dma for epatools'), + ('vcv_emitters_log', NULL, 'View emiters log for epatools'), + ('vcv_junction', NULL, 'View junction for epatools'), + ('vcv_patterns', NULL, 'View patterns for epatools'), + ('ve_anl_hydrant', 'Proposed Hydrants', 'Editable view for new hydrant location. Used on tool for hydrant influence analysis'), + ('ve_arc_pipe', NULL, 'Custom editable view for PIPE'), + ('ve_connec_fountain', NULL, 'Custom editable view for FOUNTAIN'), + ('ve_connec_greentap', NULL, 'Custom editable view for GREENTAP'), + ('ve_connec_tap', NULL, 'Custom editable view for TAP'), + ('ve_connec_wjoin', NULL, 'Custom editable view for WJOIN'), + ('ve_dqa', 'DQA', 'Shows editable information about dqa'), + ('ve_element', 'Element', 'Shows information about elements'), + ('ve_element_ehydrant_plate', NULL, 'Custom editable view for EHYDRANT_PLATE'), + ('ve_element_emanhole', NULL, 'Custom editable view for EMANHOLE'), + ('ve_element_emeter', NULL, 'Custom editable view for EMETER'), + ('ve_element_eprotect_band', NULL, 'Custom editable view for EPROTECT_BAND'), + ('ve_element_eregister', NULL, 'Custom editable view for EREGISTER'), + ('ve_element_evalve', NULL, 'Custom editable view for EVALVE'), + ('ve_epa_connec', NULL, 'Editable view for epa junction'), + ('ve_epa_frvalve', NULL, 've_epa_frvalve'), + ('ve_epa_inlet', NULL, 'Editable view for epa junction'), + ('ve_epa_pipe', NULL, 'Editable view for epa junction'), + ('ve_epa_pump', NULL, 'Editable view for epa junction'), + ('ve_epa_pump_additional', NULL, 'Editable view for epa junction'), + ('ve_epa_reservoir', NULL, 'Editable view for epa junction'), + ('ve_epa_shortpipe', NULL, 'Editable view for epa junction'), + ('ve_epa_tank', NULL, 'Editable view for epa junction'), + ('ve_epa_valve', NULL, 'Editable view for epa junction'), + ('ve_epa_virtualpump', NULL, 'Shows editable information about virtualpumps'), + ('ve_epa_virtualvalve', NULL, 'Editable view for epa junction'), + ('ve_frelem_evalve', 'Evalve', 'Custom editable view for EVALVE'), + ('ve_genelem_ehydrant_plate', 'Ehydrant_Plate', 'Custom editable view for EHYDRANT_PLATE'), + ('ve_genelem_emanhole', 'Emanhole', 'Custom editable view for EMANHOLE'), + ('ve_genelem_eprotect_band', 'Eprotect_Band', 'Custom editable view for EPROTECT_BAND'), + ('ve_genelem_eregister', 'Eregister', 'Custom editable view for EREGISTER'), + ('ve_inp_connec', 'Inp Connec', 'Shows editable information about connecs'), + ('ve_inp_dscenario_connec', 'Connec Dscenario', 'View to manage dscenario for connecs'), + ('ve_inp_dscenario_demand', 'Demand Dscenario', 'Shows editable information about the hydraulic model demand'), + ('ve_inp_dscenario_frvalve', 'FRvalve Dscenario', 'v_edit_inp_dscenario_frvalve'), + ('ve_inp_dscenario_inlet', 'Inlet Dscenario', 'View to manage dscenario for inlets'), + ('ve_inp_dscenario_junction', 'Junction Dscenario', 'View to manage dscenario for junctions'), + ('ve_inp_dscenario_pipe', 'Pipe Dscenario', 'View to manage scenario for pipes'), + ('ve_inp_dscenario_pump', 'Pump Dscenario', 'View to manage scenario for pump'), + ('ve_inp_dscenario_pump_additional', 'Pump Additional Dscenario', 'View to manage dscenario for additional pumps'), + ('ve_inp_dscenario_reservoir', 'Reservoir Dscenario', 'View to manage scenario for reservoir'), + ('ve_inp_dscenario_rules', 'Rules Dscenario', '"Editable view to manage scenario for rules"'), + ('ve_inp_dscenario_shortpipe', 'Shortpipe Dscenario', 'View to manage scenario for shortpipes'), + ('ve_inp_dscenario_tank', 'Tank Dscenario', 'View to manage scenario for tank'), + ('ve_inp_dscenario_valve', 'Valve Dscenario', 'View to manage scenario for valves'), + ('ve_inp_dscenario_virtualpump', 'Virtualpump Dscenario', 'Shows editable information about dscenario for virtualpumps'), + ('ve_inp_dscenario_virtualvalve', 'Virtual Valve Dscenario', 'View to manage dscenario for virtualvalves'), + ('ve_inp_frshortpipe', 'Inp flwreg shortpipe', 've_inp_frshortpipe'), + ('ve_inp_frvalve', 'Inp flwreg valve', 've_inp_frvalve'), + ('ve_inp_inlet', 'Inp Inlet', 'id'), + ('ve_inp_pattern', 'Patterns catalog', 'View to edit patterns, filteder by sector_id'), + ('ve_inp_pattern_value', 'Pattern values', 'View to edit curve values, filteder by sector_id'), + ('ve_inp_pipe', 'Inp Pipe', 'Shows editable information about arc type pipe'), + ('ve_inp_pump_additional', 'Pump additional', 'View to edit additional pumps'), + ('ve_inp_reservoir', 'Inp Reservoir', 'Shows editable information about node type reservoir'), + ('ve_inp_rules', 'Rules', 'View to edit rules values, filteder by sector_id'), + ('ve_inp_shortpipe', 'Inp Shortpipe', 'Shows editable information about editable features of shortpipe.'), + ('ve_inp_tank', 'Inp Tank', 'Shows editable information about node type tank'), + ('ve_inp_valve', 'Inp Valve', 'Shows editable information about node type valve'), + ('ve_inp_virtualpump', 'Inp Virtualpump', 'Shows editable information about virtualpumps'), + ('ve_inp_virtualvalve', 'Inp Virtualvalve', 'Shows editable information about virtualvalves'), + ('ve_link_pipelink', NULL, 'Custom editable view for PIPELINK'), + ('ve_macrodqa', NULL, 'Shows editable information about macrodqa.'), + ('ve_macroexploitation', NULL, 'v_edit_macroexploitation'), + ('ve_man_frelem', 'FRegulator', 'Specific view for flowregulator elements'), + ('ve_man_genelem', 'GenElement', 've_genelem'), + ('ve_minsector', 'Minsector', 'Shows editable information about misectors'), + ('ve_minsector_mincut', 'Minsector mincut', 'Shows editable information about mincut misectors'), + ('ve_node_adaptation', NULL, 'Custom editable view for ADAPTATION'), + ('ve_node_air_valve', NULL, 'Custom editable view for AIR_VALVE'), + ('ve_node_bypass_register', NULL, 'Custom editable view for BYPASS_REGISTER'), + ('ve_node_check_valve', NULL, 'Custom editable view for CHECK_VALVE'), + ('ve_node_clorinathor', NULL, 'Custom editable view for CLORINATHOR'), + ('ve_node_control_register', NULL, 'Custom editable view for CONTROL_REGISTER'), + ('ve_node_curve', NULL, 'Custom editable view for CURVE'), + ('ve_node_endline', NULL, 'Custom editable view for ENDLINE'), + ('ve_node_expantank', NULL, 'Custom editable view for EXPANTANK'), + ('ve_node_filter', NULL, 'Custom editable view for FILTER'), + ('ve_node_fl_contr_valve', NULL, 'Custom editable view for FL_CONTR_VALVE'), + ('ve_node_flexunion', NULL, 'Custom editable view for FLEXUNION'), + ('ve_node_flowmeter', NULL, 'Custom editable view for FLOWMETER'), + ('ve_node_gen_purp_valve', NULL, 'Custom editable view for GEN_PURP_VALVE'), + ('ve_node_green_valve', NULL, 'Custom editable view for GREEN_VALVE'), + ('ve_node_hydrant', NULL, 'Custom editable view for HYDRANT'), + ('ve_node_manhole', NULL, 'Custom editable view for MANHOLE'), + ('ve_node_netsamplepoint', NULL, 'Custom editable view for NETSAMPLEPOINT'), + ('ve_node_outfall_valve', NULL, 'Custom editable view for OUTFALL_VALVE'), + ('ve_node_pr_break_valve', NULL, 'Custom editable view for PR_BREAK_VALVE'), + ('ve_node_pr_reduc_valve', NULL, 'Custom editable view for PR_REDUC_VALVE'), + ('ve_node_pr_susta_valve', NULL, 'Custom editable view for PR_SUSTA_VALVE'), + ('ve_node_pressure_meter', NULL, 'Custom editable view for PRESSURE_METER'), + ('ve_node_pump', NULL, 'Custom editable view for PUMP'), + ('ve_node_reduction', NULL, 'Custom editable view for REDUCTION'), + ('ve_node_shutoff_valve', NULL, 'Custom editable view for SHUTOFF_VALVE'), + ('ve_node_source', NULL, 'Custom editable view for SOURCE'), + ('ve_node_t', NULL, 'Custom editable view for T'), + ('ve_node_tank', NULL, 'Custom editable view for TANK'), + ('ve_node_throttle_valve', NULL, 'Custom editable view for THROTTLE_VALVE'), + ('ve_node_valve_register', NULL, 'Custom editable view for VALVE_REGISTER'), + ('ve_node_water_connection', NULL, 'Custom editable view for WATER_CONNECTION'), + ('ve_node_waterwell', NULL, 'Custom editable view for WATERWELL'), + ('ve_node_wtp', NULL, 'Custom editable view for WTP'), + ('ve_node_x', NULL, 'Custom editable view for X'), + ('ve_plan_netscenario_dma', 'Netscenario DMA', 'Editable view to visualize dma related to selected netscenario'), + ('ve_plan_netscenario_presszone', 'Netscenario Presszone', 'Editable view to visualize presszone related to selected netscenario'), + ('ve_plan_netscenario_valve', 'Netscenario valve', 'Editable view to visualize valve related to selected netscenario'), + ('ve_plan_psector', NULL, 'Shows editable information about plan sector.'), + ('ve_pol_fountain', NULL, 'Editable view for fountain polygons'), + ('ve_pol_register', NULL, 'Editable view for register polygons'), + ('ve_pol_tank', NULL, 'Editable view for tank polygons'), + ('ve_presszone', 'Presszone', 'Shows editable information about presszones'), + ('ve_supplyzone', 'Supplyzone', 'Shows editable information about supplyzone.'), + ('ve_visit_arc_leak', NULL, 've_visit_arc_leak'), + ('ve_visit_connec_leak', NULL, 've_visit_connec_leak'), + ('ve_visit_link_leak', NULL, 've_visit_link_leak'), + ('vi_demands', NULL, 'Used to export to EPANET the information about node''s demand'), + ('vi_emitters', NULL, 'Used to export to EPANET the information about transmitters'), + ('vi_energy', NULL, 'Used to export to EPANET the information about global energy elements'), + ('vi_mixing', NULL, 'Used to export to EPANET the information about mixing type inside tanks'), + ('vi_parent_dma', NULL, 'Parent table of dmas'), + ('vi_pipes', NULL, 'Used to export to EPANET the information about arc type pipe.'), + ('vi_pjointpattern', NULL, 'id'), + ('vi_quality', NULL, 'Used to export to EPANET information about the output report produced from ma simulation.'), + ('vi_reactions', NULL, 'Used to export to EPANET information about parameters related to chemical reactions occurring in the network.'), + ('vi_reservoirs', NULL, 'Used to export to EPANET the information about node type reservoir'), + ('vi_rules', NULL, 'Used to export to EPANET the information about the control rules.'), + ('vi_sources', NULL, 'Used to export to EPANET the information about contamination sources'), + ('vi_status', NULL, 'Used to export to EPANET the information about the pipelines'' state'), + ('vi_tags', NULL, 'Used to export to EPANET information about tags with specific nodes and links on EPANET user inferface.'), + ('vi_tanks', NULL, 'Used to export to EPANET the information about node type tank'), + ('vi_times', NULL, 'Used to export to EPANET the information about weather parameters'), + ('vi_title', NULL, 'Used to export to EPANET information about the project.'), + ('vi_valves', NULL, 'Used to export to EPANET the information about the valves'), + ('vp_basic_arc', NULL, 'Auxiliar view for arcs with id and type'), + ('vp_basic_connec', NULL, 'Auxiliar view for connecs with id and type'), + ('vp_basic_node', NULL, 'Auxiliar view for nodes with id and type'), + ('vu_element_x_arc', NULL, 'vu_element_x_arc'), + ('vu_element_x_connec', NULL, 'vu_element_x_connec'), + ('vu_element_x_link', NULL, 'vu_element_x_link'), + ('vu_element_x_node', NULL, 'vu_element_x_node') +) AS v(id, alias, descript) +WHERE t.id = v.id; \ No newline at end of file diff --git a/dbmodel/schemas/addon/utils/final_pass/i18n/en_US/dbtypevalue.sql b/dbmodel/schemas/addon/utils/final_pass/i18n/en_US/dbtypevalue.sql new file mode 100644 index 0000000000..a1e219967a --- /dev/null +++ b/dbmodel/schemas/addon/utils/final_pass/i18n/en_US/dbtypevalue.sql @@ -0,0 +1,604 @@ +/* +This file is part of Giswater +The program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. +*/ + + +SET search_path = SCHEMA_NAME, public, pg_catalog; +UPDATE edit_typevalue AS t SET idval = v.idval, descript = v.descript FROM ( + VALUES + ('0', 'discharge_medium_typevalue', 'Undefined', NULL), + ('0', 'drainzone_type', 'NOT INFORMED', NULL), + ('0', 'dwfzone_type', 'NOT INFORMED', NULL), + ('0', 'edit_node_topelev_options', 'ELEV', NULL), + ('0', 'inlet_medium_typevalue', 'Undefined', NULL), + ('0', 'man_wwtp_treatmenttype', 'UNDEFINED', NULL), + ('0', 'man_wwtp_wwtptype', 'UNDEFINED', NULL), + ('0', 'outfall_medium_typevalue', 'Undefined', NULL), + ('0', 'value_dwf_drain_type', 'UNDEFINED', NULL), + ('1', 'cat_arc_visibility_vdef', 'NO VISITABLE', 'The arc is not visitable'), + ('1', 'chamber_param_1', 'combo1', NULL), + ('1', 'drainzone_type', 'STORMWATER', NULL), + ('1', 'dwfzone_type', 'STORMWATER', NULL), + ('1', 'edit_node_topelev_options', 'YMAX', NULL), + ('1', 'grate_param_1', 'combo1', NULL), + ('1', 'value_dwf_drain_type', 'TREATED', NULL), + ('2', 'cat_arc_visibility_vdef', 'SEMI VISITABLE', 'The arc is semi visitable, in some cases you can visit in others not'), + ('2', 'chamber_param_1', 'combo2', NULL), + ('2', 'dwfzone_type', 'DILUTE COMBINED', NULL), + ('2', 'grate_param_1', 'combo2', NULL), + ('2', 'value_dwf_drain_type', 'UNTREATED', NULL), + ('3', 'cat_arc_visibility_vdef', 'VISITABLE', 'The arc is visitable'), + ('3', 'chamber_param_1', 'combo3', NULL), + ('3', 'drainzone_type', 'SEWAGE', NULL), + ('3', 'dwfzone_type', 'SEWAGE', NULL), + ('3', 'grate_param_1', 'combo3', NULL), + ('3', 'value_dwf_drain_type', 'MIXED', NULL), + ('4', 'chamber_param_1', 'combo4', NULL), + ('4', 'drainzone_type', 'COMBINED', NULL), + ('4', 'dwfzone_type', 'COMBINED', NULL), + ('COLLECTION', 'sector_type', 'COLLECTION SYSTEMS', NULL), + ('COLLECTION SYSTEMS', 'dma_type', 'COLLECTION SYSTEMS', NULL), + ('COLLECTION SYSTEMS', 'sector_type', 'COLLECTION SYSTEMS', NULL), + ('LENGTH-SIDE', 'gully_units_placement', 'LENGTH-SIDE', NULL), + ('PSV', 'presszone_type', 'PSV', NULL), + ('TRUNK SEWERS', 'dma_type', 'TRUNK SEWERS', NULL), + ('TRUNK SEWERS', 'sector_type', 'TRUNK SEWERS', NULL), + ('WIDTH-SIDE', 'gully_units_placement', 'WIDTH-SIDE', NULL), + ('combo1', 'sewstorage_param_1', 'combo1', NULL), + ('combo2', 'sewstorage_param_1', 'combo2', NULL), + ('combo3', 'sewstorage_param_1', 'combo3', NULL), + ('combo4', 'sewstorage_param_1', 'combo4', NULL), + ('0', 'value_boolean', 'UNKNOWN', NULL), + ('0', 'value_datasource', 'UNKNOWN', NULL), + ('0', 'value_lock_level', 'ALLOW EVERYTHING', NULL), + ('0', 'value_review_status', 'No changes', 'There are no changes above or below the tolerance values'), + ('0', 'value_review_validation', 'Rejected', NULL), + ('0', 'value_verified', 'TO REVIEW', NULL), + ('1', 'value_boolean', 'MAYBE', NULL), + ('1', 'value_datasource', 'GMAO', NULL), + ('1', 'value_lock_level', 'BLOCK UPDATE', NULL), + ('1', 'value_review_status', 'new element', 'New element inserted in the review'), + ('1', 'value_review_validation', 'Accepted', NULL), + ('1', 'value_verified', 'VERIFIED', NULL), + ('2', 'value_boolean', 'TRUE', NULL), + ('2', 'value_datasource', 'CRM', NULL), + ('2', 'value_lock_level', 'BLOCK DELETE', NULL), + ('2', 'value_review_status', 'Geometry modified', 'Geometry modified in the review. Other data can also be modified'), + ('2', 'value_review_validation', 'To review', NULL), + ('2', 'value_verified', 'IGNORE CHECK', NULL), + ('3', 'value_boolean', 'FALSE', NULL), + ('3', 'value_datasource', 'DEM', NULL), + ('3', 'value_lock_level', 'BLOCK UPDATE AND DELETE', NULL), + ('3', 'value_review_status', 'Data modified', 'Changes in the data, not in the geometry'), + ('4', 'value_datasource', 'TOPO', NULL), + ('4', 'value_review_status', 'Only review observations', NULL), + ('AS_BUILT', 'doc_type', 'AS_BUILT', NULL), + ('AUDIT', 'message_type', 'AUDIT', NULL), + ('BL', 'label_quadrant', 'BL', NULL), + ('BR', 'label_quadrant', 'BR', NULL), + ('BUSTER', 'presszone_type', 'BUSTER', NULL), + ('CHECKVALVE', 'graphdelimiter_type', 'CHECKVALVE', NULL), + ('DEBUG', 'message_type', 'DEBUG', NULL), + ('DEM', 'raster_type', 'DEM', NULL), + ('DMA', 'graphdelimiter_type', 'DMA', NULL), + ('DQA', 'graphdelimiter_type', 'DQA', NULL), + ('INCIDENT', 'doc_type', 'INCIDENT', NULL), + ('MINSECTOR', 'graphdelimiter_type', 'MINSECTOR', NULL), + ('NONE', 'graphdelimiter_type', 'NONE', NULL), + ('OTHER', 'doc_type', 'OTHER', NULL), + ('PICTURE', 'doc_type', 'PICTURE', NULL), + ('PRESSZONE', 'graphdelimiter_type', 'PRESSZONE', NULL), + ('PRV', 'presszone_type', 'PRV', NULL), + ('PUMP', 'presszone_type', 'PUMP', NULL), + ('SECTOR', 'graphdelimiter_type', 'SECTOR', NULL), + ('Slope', 'raster_type', 'Slope', NULL), + ('TANK', 'presszone_type', 'TANK', NULL), + ('TL', 'label_quadrant', 'TL', NULL), + ('TR', 'label_quadrant', 'TR', NULL), + ('UI', 'message_type', 'UI', NULL), + ('UNDEFINED', 'dma_type', 'UNDEFINED', NULL), + ('UNDEFINED', 'omzone_type', 'UNDEFINED', NULL), + ('UNDEFINED', 'presszone_type', 'UNDEFINED', NULL), + ('UNDEFINED', 'sector_type', 'UNDEFINED', NULL), + ('WATERWELL', 'presszone_type', 'WATERWELL', NULL), + ('WORK RAPPORT', 'doc_type', 'WORK RAPPORT', NULL), + ('boolean', 'man_addfields_cat_datatype', 'boolean', NULL), + ('date', 'man_addfields_cat_datatype', 'date', NULL), + ('integer', 'man_addfields_cat_datatype', 'integer', NULL), + ('numeric', 'man_addfields_cat_datatype', 'numeric', NULL), + ('text', 'man_addfields_cat_datatype', 'text', NULL), + ('0', 'man_hydrant_hydranttype', 'UNKNOWN', NULL), + ('0', 'man_meter_metertype', 'UNKNOWN', NULL), + ('0', 'man_pump_engine_type', 'UNKNOWN', NULL), + ('0', 'man_pump_pump_type', 'UNKNOWN', NULL), + ('0', 'man_source_aquifertype', 'UNKNOWN', NULL), + ('0', 'man_source_basinid', 'UNKNOWN', NULL), + ('0', 'man_source_sourcetype', 'UNKNOWN', NULL), + ('0', 'man_source_subbasinid', 'UNKNOWN', NULL), + ('0', 'man_tank_shape', 'UNKNOWN', NULL), + ('0', 'man_valve_connectiontype', 'UNKNOWN', NULL), + ('0', 'valve_ordinarystatus', 'closed', NULL), + ('1', 'man_hydrant_hydranttype', 'SUCTION', NULL), + ('1', 'man_pump_engine_type', 'ELECTRIC', NULL), + ('1', 'man_pump_pump_type', 'SUBMERSIBLE', NULL), + ('1', 'man_source_aquifertype', 'CONFINED', NULL), + ('1', 'man_source_sourcetype', 'SPRING', NULL), + ('1', 'man_tank_shape', 'CIRCULAR', NULL), + ('1', 'man_valve_connectiontype', 'FLANGE', NULL), + ('1', 'pressmeter_param_1', 'combo1', NULL), + ('1', 'shtvalve_param_1', 'combo1', NULL), + ('1', 'value_fencetype', 'MESH', NULL), + ('1', 'valve_ordinarystatus', 'opened', NULL), + ('2', 'man_hydrant_hydranttype', 'HEAD', NULL), + ('2', 'man_pump_engine_type', 'COMBUSTION', NULL), + ('2', 'man_pump_pump_type', 'SURFACE', NULL), + ('2', 'man_source_aquifertype', 'FREE', NULL), + ('2', 'man_source_sourcetype', 'GROUNDWATER', NULL), + ('2', 'man_tank_shape', 'RECTANGULAR', NULL), + ('2', 'man_valve_connectiontype', 'THREADED', NULL), + ('2', 'pressmeter_param_1', 'combo2', NULL), + ('2', 'shtvalve_param_1', 'combo2', NULL), + ('2', 'value_fencetype', 'BRICK', NULL), + ('2', 'valve_ordinarystatus', 'maybe', NULL), + ('3', 'man_hydrant_hydranttype', 'OTHER', NULL), + ('3', 'man_pump_engine_type', 'COMBINED', NULL), + ('3', 'man_pump_pump_type', 'DRY WELL', NULL), + ('3', 'man_source_aquifertype', 'OTHER', NULL), + ('3', 'man_source_sourcetype', 'SURFACE WATER', NULL), + ('3', 'man_tank_shape', 'OTHER', NULL), + ('3', 'man_valve_connectiontype', 'OTHER', NULL), + ('3', 'pressmeter_param_1', 'combo3', NULL), + ('3', 'shtvalve_param_1', 'combo3', NULL), + ('3', 'value_fencetype', 'OTHER', NULL), + ('4', 'shtvalve_param_1', 'combo4', NULL), + ('DISTRIBUTION', 'dma_type', 'DISTRIBUTION', NULL), + ('DISTRIBUTION', 'sector_type', 'DISTRIBUTION', NULL), + ('DISTRIBUTION', 'supplyzone_type', 'DISTRIBUTION', NULL), + ('HYBRID', 'dma_type', 'HYBRID', NULL), + ('HYBRID', 'sector_type', 'HYBRID', NULL), + ('RECLORINATOR', 'dqa_type', 'RECLORINATOR', NULL), + ('SOURCE', 'supplyzone_type', 'SOURCE', NULL), + ('TANK', 'dqa_type', 'TANK', NULL), + ('TRANSMISSION', 'dma_type', 'TRANSMISSION', NULL), + ('TRANSMISSION', 'sector_type', 'TRANSMISSION', NULL), + ('UNDEFINED', 'dqa_type', 'INDEFINIDO', NULL), + ('UNDEFINED', 'supplyzone_type', 'UNDEFINED', NULL), + ('chlorine', 'dqa_type', 'chlorine', NULL), + ('combo1', 'hydrant_param_1', 'combo1', NULL), + ('combo2', 'hydrant_param_1', 'combo2', NULL), + ('combo3', 'hydrant_param_1', 'combo3', NULL), + ('combo4', 'hydrant_param_1', 'combo4', NULL), + ('other', 'dqa_type', 'other', NULL), + ('undefined', 'dqa_type', 'undefined', NULL) +) AS v(id, typevalue, idval, descript) +WHERE t.id = v.id AND t.typevalue = v.typevalue; + +UPDATE inp_typevalue AS t SET idval = v.idval, descript = v.descript FROM ( + VALUES + ('#/L', 'inp_value_pollutants', '#/L', NULL), + ('1', 'inp_options_networkmode', '1D SWMM', NULL), + ('2', 'inp_options_networkmode', '1D/2D SWMM-IBER', NULL), + ('3', 'inp_options_networkmode_', '1D/2D SWMM-IBER WET', NULL), + ('ABSOLUTE', 'inp_typevalue_timeseries', 'ABSOLUTE', NULL), + ('ADC IMPERVIOUS', 'inp_typevalue_temp', 'ADC IMPERVIOUS', NULL), + ('ADC PERVIOUS', 'inp_typevalue_temp', 'ADC PERVIUOS', NULL), + ('ALL', 'inp_value_allnone', 'ALL', NULL), + ('ARCH', 'inp_value_catarc', 'ARCH', NULL), + ('BASKETHANDLE', 'inp_value_catarc', 'BASKETHANDLE', NULL), + ('BC', 'inp_value_lidtype', 'BIO-RETENTION CELL', NULL), + ('BOTH', 'inp_value_options_nfl', 'BOTH', NULL), + ('BOTTOM', 'inp_typevalue_orifice', 'BOTTOM', NULL), + ('CFS', 'inp_value_options_fu', 'CFS', NULL), + ('CIRCULAR', 'inp_value_catarc', 'CIRCULAR', NULL), + ('CIRCULAR', 'inp_value_orifice', 'CIRCULAR', NULL), + ('CMS', 'inp_value_options_fu', 'CMS', NULL), + ('CONCEN', 'inp_value_inflows', 'CONCEN', NULL), + ('CONCEN', 'inp_value_treatment', 'CONCEN', NULL), + ('CONDUIT', 'inp_typevalue_dscenario', 'CONDUIT', NULL), + ('CONSTANT', 'inp_typevalue_evap', 'CONSTANT', NULL), + ('CONTROL', 'inp_value_curve', 'CONTROL', NULL), + ('CULVERT', '_inp_typevalue_inlet_type', 'CULVERT', NULL), + ('CUMULATIVE', 'inp_value_raingage', 'CUMULATIVE', NULL), + ('CURVE_NUMBER', 'inp_value_options_in', 'CURVE_NUMBER', NULL), + ('CUSTOM', 'inp_value_catarc', 'CUSTOM', NULL), + ('CUTOFF', 'inp_typevalue_divider', 'CUTOFF', NULL), + ('D-W', 'inp_value_options_fme', 'D-W', NULL), + ('DEGREES', 'inp_value_mapunits', 'DEGREES', NULL), + ('DEPTH', 'inp_value_options_lo', 'DEPTH', NULL), + ('DIVERSION', 'inp_value_curve', 'DIVERSION', NULL), + ('DRAIN', 'inp_value_lidlayer', 'DRAIN', NULL), + ('DRAINMAT', 'inp_value_lidlayer', 'DRAINMAT', NULL), + ('DRY_ONLY', 'inp_typevalue_evap', 'DRY_ONLY', NULL), + ('DUMMY', 'inp_value_catarc', 'DUMMY', NULL), + ('DYNWAVE', 'inp_value_options_fr', 'DYNWAVE', NULL), + ('EGG', 'inp_value_catarc', 'EGG', NULL), + ('ELEVATION', 'inp_value_options_lo', 'ELEVATION', NULL), + ('EMC', 'inp_value_washoff', 'EMC', NULL), + ('EXP', 'inp_value_buildup', 'EXP', NULL), + ('EXP', 'inp_value_washoff', 'EXP', NULL), + ('EXT', 'inp_value_buildup', 'EXT', NULL), + ('Evaporation', 'inp_value_timserid', 'Evaporation', NULL), + ('FEET', 'inp_value_mapunits', 'FEET', NULL), + ('FILE', 'inp_typevalue_evap', 'FILE', NULL), + ('FILE', 'inp_typevalue_raingage', 'FILE', NULL), + ('FILE', 'inp_typevalue_temp', 'FILE', NULL), + ('FILE', 'inp_typevalue_timeseries', 'FILE', NULL), + ('FILLED_CIRCULAR', 'inp_value_catarc', 'FILLED_CIRCULAR', NULL), + ('FIXED', 'inp_typevalue_outfall', 'FIXED', NULL), + ('FORCE_MAIN', 'inp_value_catarc', 'FORCE_MAIN', NULL), + ('FREE', 'inp_typevalue_outfall', 'FREE', NULL), + ('FRORIFICE', 'inp_typevalue_dscenario', 'FRORIFICE', NULL), + ('FROUDE', 'inp_value_options_nfl', 'FROUDE', NULL), + ('FROUTLET', 'inp_typevalue_dscenario', 'FROUTLET', NULL), + ('FRPUMP', 'inp_typevalue_dscenario', 'FRPUMP', NULL), + ('FRWEIR', 'inp_typevalue_dscenario', 'FRWEIR', NULL), + ('FULL', 'inp_value_options_id', 'FULL', NULL), + ('FUNCTIONAL', 'inp_typevalue_storage', 'FUNCTIONAL', NULL), + ('FUNCTIONAL/DEPTH', 'inp_typevalue_outlet', 'FUNCTIONAL/DEPTH', NULL), + ('FUNCTIONAL/HEAD', 'inp_typevalue_outlet', 'FUNCTIONAL/HEAD', NULL), + ('GPM', 'inp_value_options_fu', 'GPM', NULL), + ('GR', 'inp_value_lidtype', 'GREEN ROOF', NULL), + ('GRAVEL', 'inp_value_surface', 'GRAVEL', NULL), + ('GREEN_AMPT', 'inp_value_options_in', 'GREEN_AMPT', NULL), + ('GULLY', 'inp_pjoint_type', 'GULLY', NULL), + ('GULLY', 'inp_typevalue_inlet_type', 'GULLY', NULL), + ('H-W', 'inp_value_options_fme', 'H-W', NULL), + ('HORIZ_ELLIPSE', 'inp_value_catarc', 'HORIZ_ELLIPSE', NULL), + ('HORSESHOE', 'inp_value_catarc', 'HORSESHOE', NULL), + ('HORTON', 'inp_value_options_in', 'HORTON', NULL), + ('HOTSTART', 'inp_value_files_type', 'HOTSTART', NULL), + ('IMPERVIOUS', 'inp_value_routeto', 'IMPERVIOUS', NULL), + ('INFLOWS', 'inp_typevalue_dscenario', 'INFLOWS', NULL), + ('INFLOWS', 'inp_value_files_type', 'INFLOWS', NULL), + ('INTENSITY', 'inp_value_raingage', 'INTENSITY', NULL), + ('IRREGULAR', 'inp_value_catarc', 'IRREGULAR', NULL), + ('IT', 'inp_value_lidtype', 'INFILTRATION TRENCH', NULL), + ('Inflow_Hydrograph', 'inp_value_timserid', 'Inflow_Hydrograph', NULL), + ('Inflow_Pollutograph', 'inp_value_timserid', 'Inflow_Pollutograph', NULL), + ('KINWAVE', 'inp_value_options_fr', 'KINWAVE', NULL), + ('LIDS', 'inp_typevalue_dscenario', 'LIDS', NULL), + ('LPS', 'inp_value_options_fu', 'LPS', NULL), + ('MASS', 'inp_value_inflows', 'MASS', NULL), + ('METERS', 'inp_value_mapunits', 'METERS', NULL), + ('MG/L', 'inp_value_pollutants', 'MG/L', NULL), + ('MGD', 'inp_value_options_fu', 'MGD', NULL), + ('MLD', 'inp_value_options_fu', 'MLD', NULL), + ('MODBASKETHANDLE', 'inp_value_catarc', 'MODBASKETHANDLE', NULL), + ('MODIFIED_GREEN_AMPT', 'inp_value_options_in', 'MODIFIED_GREEN_AMPT', NULL), + ('MODIFIED_HORTON', 'inp_value_options_in', 'MODIFIED_HORTON', NULL), + ('MONTHLY', 'inp_typevalue_evap', 'MONTHLY', NULL), + ('NONE', 'inp_value_allnone', 'NONE', NULL), + ('NONE', 'inp_value_mapunits', 'NONE', NULL), + ('NONE', 'inp_value_options_id', 'NONE', NULL), + ('NORMAL', 'inp_typevalue_outfall', 'NORMAL', NULL), + ('OFF', 'inp_value_status', 'OFF', NULL), + ('ON', 'inp_value_status', 'ON', NULL), + ('OUTFALL', 'inp_typevalue_dscenario', 'OUTFALL', NULL), + ('OUTFLOWS', 'inp_value_files_type', 'OUTFLOWS', NULL), + ('OUTLET', 'inp_value_routeto', 'OUTLET', NULL), + ('OVERFLOW', 'inp_typevalue_divider', 'OVERFLOW', NULL), + ('Orifice', 'inp_value_timserid', 'Orifice', NULL), + ('Other', 'inp_value_timserid', 'Other', NULL), + ('PARABOLIC', 'inp_value_catarc', 'PARABOLIC', NULL), + ('PARTIAL', 'inp_value_options_id', 'PARTIAL', NULL), + ('PAVED', 'inp_value_surface', 'PAVED', NULL), + ('PAVEMENT', 'inp_value_lidlayer', 'PAVEMENT', NULL), + ('PERVIOUS', 'inp_value_routeto', 'PERVIOUS', NULL), + ('POLL', 'inp_typevalue_dscenario', 'POLL', NULL), + ('POW', 'inp_value_buildup', 'POW', NULL), + ('POWER', 'inp_value_catarc', 'POWER', NULL), + ('PP', 'inp_value_lidtype', 'PERMEABLE PAVEMENT', NULL), + ('PUMP1', 'inp_value_curve', 'PUMP1', NULL), + ('PUMP2', 'inp_value_curve', 'PUMP2', NULL), + ('PUMP3', 'inp_value_curve', 'PUMP3', NULL), + ('PUMP4', 'inp_value_curve', 'PUMP4', NULL), + ('RAINFALL', 'inp_value_files_type', 'RAINFALL', NULL), + ('RAINGAGE', 'inp_typevalue_dscenario', 'RAINGAGE', NULL), + ('RATE', 'inp_value_treatment', 'RATE', NULL), + ('RATING', 'inp_value_curve', 'RATING', NULL), + ('RB', 'inp_value_lidlayer', 'RAIN BARREL', NULL), + ('RB', 'inp_value_lidtype', 'RAIN BARREL', NULL), + ('RC', 'inp_value_washoff', 'RC', NULL), + ('RD', 'inp_value_lidtype', 'ROOFTOP DISCONNECTION', NULL), + ('RDII', 'inp_value_files_type', 'RDII', NULL), + ('RECOVERY', 'inp_typevalue_evap', 'RECOVERY', NULL), + ('RECT_CLOSED', 'inp_value_catarc', 'RECT_CLOSED', NULL), + ('RECT_CLOSED', 'inp_value_orifice', 'RECT_CLOSED', NULL), + ('RECT_OPEN', 'inp_value_catarc', 'RECT_OPEN', NULL), + ('RECT_ROUND', 'inp_value_catarc', 'RECT_ROUND', NULL), + ('RECT_TRIANGULAR', 'inp_value_catarc', 'RECT_TRIANGULAR', NULL), + ('RELATIVE', 'inp_typevalue_timeseries', 'RELATIVE', NULL), + ('REMOVAL', 'inp_value_treatment', 'REMOVAL', NULL), + ('RG', 'inp_value_lidtype', 'RAIN GARDEN', NULL), + ('ROADWAY', 'inp_typevalue_weir', 'ROADWAY', 'RECT_OPEN'), + ('RUNOFF', 'inp_value_files_type', 'RUNOFF', NULL), + ('Rainfall', 'inp_value_timserid', 'Rainfall', NULL), + ('SAT', 'inp_value_buildup', 'SAT', NULL), + ('SAVE', 'inp_value_files_actio', 'SAVE', NULL), + ('SEMICIRCULAR', 'inp_value_catarc', 'SEMICIRCULAR', NULL), + ('SEMIELLIPTICAL', 'inp_value_catarc', 'SEMIELLIPTICAL', NULL), + ('SHAPE', 'inp_value_curve', 'SHAPE', NULL), + ('SIDE', 'inp_typevalue_orifice', 'SIDE', NULL), + ('SIDEFLOW', 'inp_typevalue_weir', 'SIDEFLOW', 'RECT_OPEN'), + ('SLOPE', 'inp_value_options_nfl', 'SLOPE', NULL), + ('SNOWMELT', 'inp_typevalue_temp', 'SNOWMELT', NULL), + ('SOIL', 'inp_value_lidlayer', 'SOIL', NULL), + ('STEADY', 'inp_value_options_fr', 'STEADY', NULL), + ('STORAGE', 'inp_typevalue_dscenario', 'STORAGE', NULL), + ('STORAGE', 'inp_value_curve', 'STORAGE', NULL), + ('STORAGE', 'inp_value_lidlayer', 'STORAGE', NULL), + ('SURFACE', 'inp_value_lidlayer', 'SURFACE', NULL), + ('Sink', '_inp_typevalue_gully_type', 'Sink', NULL), + ('TABULAR', 'inp_typevalue_divider', 'TABULAR', NULL), + ('TABULAR', 'inp_typevalue_storage', 'TABULAR', NULL), + ('TABULAR/DEPTH', 'inp_typevalue_outlet', 'TABULAR/DEPTH', NULL), + ('TABULAR/HEAD', 'inp_typevalue_outlet', 'TABULAR/HEAD', NULL), + ('TEMPERATURE', 'inp_typevalue_evap', 'TEMPERATURE', NULL), + ('TIDAL', 'inp_typevalue_outfall', 'TIDAL', NULL), + ('TIDAL', 'inp_value_curve', 'TIDAL', NULL), + ('TIMESERIES', 'inp_typevalue_evap', 'TIMESERIES', NULL), + ('TIMESERIES', 'inp_typevalue_outfall', 'TIMESERIES', NULL), + ('TIMESERIES', 'inp_typevalue_raingage', 'TIMESERIES', NULL), + ('TIMESERIES', 'inp_typevalue_temp', 'TIMESERIES', NULL), + ('TRANSVERSE', 'inp_typevalue_weir', 'TRANSVERSE', 'RECT_OPEN'), + ('TRAPEZOIDAL', 'inp_typevalue_weir', 'TRAPEZOIDAL', 'TRAPEZOIDAL'), + ('TRAPEZOIDAL', 'inp_value_catarc', 'TRAPEZOIDAL', NULL), + ('TREATMENT', 'inp_typevalue_dscenario', 'TREATMENT', NULL), + ('TRIANGULAR', 'inp_value_catarc', 'TRIANGULAR', NULL), + ('Temperature', 'inp_value_timserid', 'Temperature', NULL), + ('To_network', 'inp_typevalue_gully_type', 'To_network', NULL), + ('UG/L', 'inp_value_pollutants', 'UG/L', NULL), + ('UPC', '_inp_typevalue_gully_method', 'UPC', NULL), + ('USE', 'inp_value_files_actio', 'USE', NULL), + ('V-NOTCH', 'inp_typevalue_weir', 'V-NOTCH', 'TRIANGULAR'), + ('VERT_ELLIPSE', 'inp_value_catarc', 'VERT_ELLIPSE', NULL), + ('VIRTUAL', 'inp_value_catarc', 'VIRTUAL', NULL), + ('VOLUME', 'inp_value_raingage', 'VOLUME', NULL), + ('VS', 'inp_value_lidtype', 'VEGETATIVE SWALE', NULL), + ('WEIR', 'inp_typevalue_divider', 'WEIR', NULL), + ('WINDSPEED FILE', 'inp_typevalue_temp', 'WINDSPEED FILE', NULL), + ('WINDSPEED MONTHLY', 'inp_typevalue_temp', 'WINDSPEED MONTHLY', NULL), + ('W_O', 'inp_typevalue_gully_method', 'W_O', NULL), + ('0', 'inp_result_status', 'DEPRECATED', NULL), + ('1', 'inp_result_status', 'PARTIAL', NULL), + ('2', 'inp_result_status', 'COMPLETED', NULL), + ('3', 'inp_result_status', 'ARCHIVED', NULL), + ('4', 'inp_result_status', 'RUN FAILED', NULL), + ('ARC', 'inp_pjoint_type', 'ARC', NULL), + ('CONNEC', 'inp_pjoint_type', 'CONNEC', NULL), + ('CONTROLS', 'inp_typevalue_dscenario', 'CONTROLS', NULL), + ('DAILY', 'inp_typevalue_pattern', 'DAILY', NULL), + ('HOURLY', 'inp_typevalue_pattern', 'HOURLY', NULL), + ('INLET', 'inp_typevalue_dscenario', 'INLET', NULL), + ('JOINED', 'inp_typevalue_dscenario', 'JOINED', NULL), + ('JUNCTION', 'inp_typevalue_dscenario', 'JUNCTION', NULL), + ('MONTHLY', 'inp_typevalue_pattern', 'MONTHLY', NULL), + ('NETWORK', 'inp_typevalue_dscenario', 'NETWORK', NULL), + ('NO', 'inp_value_yesno', 'NO', NULL), + ('NODE', 'inp_pjoint_type', 'NODE', NULL), + ('OTHER', 'inp_typevalue_dscenario', 'OTHER', NULL), + ('WEEKEND', 'inp_typevalue_pattern', 'WEEKEND', NULL), + ('YES', 'inp_value_yesno', 'YES', NULL), + ('0', 'inp_options_dscenario_priority', 'REMOVE ALL BASE DEMANDS & PAT.', NULL), + ('1', '_inp_options_networkmode', 'NODE (BASIC NODARCS)', NULL), + ('1', 'inp_iterative_function', 'NODES COUPLE CAPACITY', NULL), + ('1', 'inp_options_buildup_mode', 'SUPPLY', NULL), + ('1', 'inp_options_dscenario_priority', 'OVERWRITE BASE DEMANDS & PAT.', NULL), + ('1', 'inp_options_networkmode', 'TRANSMISSION NETWORK', NULL), + ('1', 'inp_value_demandtype', 'NODE ESTIMATED', NULL), + ('1', 'inp_value_opti_valvemode', 'EPA TABLES', NULL), + ('11', 'inp_value_patternmethod', 'GLOBAL PATTERN', NULL), + ('12', 'inp_value_patternmethod', 'SECTOR PATTERN', NULL), + ('13', 'inp_value_patternmethod', 'DMA PATTERN', NULL), + ('14', 'inp_value_patternmethod', 'KEEP NULL VALUES', NULL), + ('2', 'inp_options_buildup_mode', 'TRANSPORT', NULL), + ('2', 'inp_options_dscenario_priority', 'JOIN DEM&PATT (BASIC NETWORK)', NULL), + ('2', 'inp_options_networkmode', 'BASIC NETWORK', NULL), + ('2', 'inp_value_demandtype', 'CONNEC ESTIMATED', NULL), + ('2', 'inp_value_opti_valvemode', 'INVENTORY VALUES', NULL), + ('24', '_inp_value_patternmethod', 'PJOINT ESTIMATED (PJOINT)', NULL), + ('2COMP', 'inp_value_mixing', '2COMP', NULL), + ('3', '_inp_value_demandtype', 'SIMPLIFIED PERIOD', NULL), + ('3', 'inp_options_buildup_mode', 'TRANSIENT', NULL), + ('3', 'inp_options_networkmode', 'TRIMMED NETWORK', NULL), + ('3', 'inp_value_demandtype', 'HYDRANT', NULL), + ('3', 'inp_value_opti_valvemode', 'MINCUT RESULTS', NULL), + ('4', '_inp_value_demandtype', 'DMA-EFFICIENCY PERIOD', NULL), + ('4', 'inp_options_buildup_mode', 'LOSSES', NULL), + ('4', 'inp_options_networkmode', 'NETWORK & CONNECS', NULL), + ('5', '_inp_value_demandtype', 'DMA-PATTERN PERIOD', NULL), + ('5', 'inp_options_networkmode', 'NETWORK DMA', NULL), + ('ACTIVE', 'inp_value_status_valve', 'ACTIVE', NULL), + ('ADDITIONAL', 'inp_typevalue_dscenario', 'ADDITIONAL', NULL), + ('AFD', 'inp_value_opti_units', 'AFD', NULL), + ('AGE', 'inp_value_opti_qual', 'AGE', NULL), + ('ALL', 'inp_value_noneall', 'ALL', NULL), + ('AM', 'inp_value_ampm', 'AM', NULL), + ('AVERAGED', 'inp_value_times', 'AVERAGED', NULL), + ('AVG', 'inp_value_opti_rtc_coef', 'AVG', NULL), + ('BULK', 'inp_value_reactions', 'BULK', NULL), + ('C-M', 'inp_value_opti_headloss', 'C-M', NULL), + ('CHEMICAL mg/L', 'inp_value_opti_qual', 'CHEMICAL mg/L', NULL), + ('CHEMICAL ug/L', 'inp_value_opti_qual', 'CHEMICAL ug/L', NULL), + ('CLOSED', 'inp_value_status_pipe', 'CLOSED', NULL), + ('CLOSED', 'inp_value_status_pump', 'CLOSED', NULL), + ('CLOSED', 'inp_value_status_shortpipe_dscen', 'CLOSED', NULL), + ('CLOSED', 'inp_value_status_valve', 'CLOSED', NULL), + ('CMD', 'inp_value_opti_units', 'CMD', NULL), + ('CMH', 'inp_value_opti_units', 'CMH', NULL), + ('CONCEN', 'inp_typevalue_source', 'CONCEN', NULL), + ('CONNEC', 'inp_typevalue_dscenario', 'CONNEC', NULL), + ('CONTINUE', 'inp_value_opti_unbal', 'CONTINUE', NULL), + ('CV', 'inp_value_status_pipe', 'CV', NULL), + ('CV', 'inp_value_status_shortpipe_dscen', 'CV', NULL), + ('D-W', 'inp_value_opti_headloss', 'D-W', NULL), + ('DDA', 'inp_options_demand_model', 'DDA', NULL), + ('DEMAND', 'inp_typevalue_dscenario', 'DEMAND', NULL), + ('DEMAND CHARGE', 'inp_typevalue_energy', 'DEMAND CHARGE', NULL), + ('EFFICIENCY', 'inp_value_curve', 'EFFICIENCY', NULL), + ('FCV', 'inp_typevalue_valve', 'FCV', 'Flow Control Valve'), + ('FIFO', 'inp_value_mixing', 'FIFO', NULL), + ('FLOWPACED', 'inp_typevalue_source', 'FLOWPACED', NULL), + ('FULL', 'inp_value_yesnofull', 'FULL', NULL), + ('GLOBAL', 'inp_typevalue_energy', 'GLOBAL', NULL), + ('GPM', 'inp_value_opti_units', 'GPM', NULL), + ('GPV', 'inp_typevalue_valve', 'GPV', 'General Purpose Valve'), + ('H-W', 'inp_value_opti_headloss', 'H-W', NULL), + ('HEADLOSS', 'inp_value_curve', 'HEADLOSS', NULL), + ('HEADPUMP', 'inp_typevalue_pumptype', 'HEADPUMP', NULL), + ('IMGD', 'inp_value_opti_units', 'IMGD', NULL), + ('LIFO', 'inp_value_mixing', 'LIFO', NULL), + ('LPM', 'inp_value_opti_units', 'LPM', NULL), + ('LPS', 'inp_value_opti_units', 'LPS', NULL), + ('MASS', 'inp_typevalue_source', 'MASS', NULL), + ('MAX', 'inp_value_opti_rtc_coef', 'MAX', NULL), + ('MAXIMUM', 'inp_value_times', 'MAXIMUM', NULL), + ('MGD', 'inp_value_opti_units', 'MGD', NULL), + ('MIN', 'inp_value_opti_rtc_coef', 'MIN', NULL), + ('MINIMUM', 'inp_value_times', 'MINIMUM', NULL), + ('MIXED', 'inp_value_mixing', 'MIXED', NULL), + ('MLD', 'inp_value_opti_units', 'MLD', NULL), + ('NO', 'inp_value_yesnofull', 'NO', NULL), + ('NONE', 'inp_value_noneall', 'NONE', NULL), + ('NONE', 'inp_value_opti_qual', 'NONE', NULL), + ('NONE', 'inp_value_times', 'NONE', NULL), + ('OPEN', 'inp_value_status_pipe', 'OPEN', NULL), + ('OPEN', 'inp_value_status_pump', 'OPEN', NULL), + ('OPEN', 'inp_value_status_shortpipe_dscen', 'OPEN', NULL), + ('OPEN', 'inp_value_status_valve', 'OPEN', NULL), + ('PBV', 'inp_typevalue_valve', 'PBV', 'Pressure Break Valve'), + ('PDA', 'inp_options_demand_model', 'PDA', NULL), + ('PIPE', 'inp_typevalue_dscenario', 'PIPE', NULL), + ('PM', 'inp_value_ampm', 'PM', NULL), + ('POWERPUMP', 'inp_typevalue_pumptype', 'POWERPUMP', NULL), + ('PRV', 'inp_typevalue_valve', 'PRV', 'Pressure Reduction Valve'), + ('PSRV', 'inp_typevalue_valve', 'PSRV', 'Pressure sustain + reduction valve'), + ('PSV', 'inp_typevalue_valve', 'PSV', 'Pressure Sustain Valve'), + ('PUMP', 'inp_typevalue_dscenario', 'PUMP', NULL), + ('PUMP', 'inp_value_curve', 'PUMP', NULL), + ('RANGE', 'inp_value_times', 'RANGE', NULL), + ('RESERVOIR', 'inp_typevalue_dscenario', 'RESERVOIR', NULL), + ('RULES', 'inp_typevalue_dscenario', 'RULES', NULL), + ('SAVE', 'inp_value_opti_hyd', 'SAVE', NULL), + ('SETPOINT', 'inp_typevalue_source', 'SETPOINT', NULL), + ('SHORTPIPE', 'inp_typevalue_dscenario', 'SHORTPIPE', NULL), + ('STOP', 'inp_value_opti_unbal', 'STOP', NULL), + ('TANK', 'inp_typevalue_dscenario', 'TANK', NULL), + ('TANK', 'inp_value_reactions', 'TANK', NULL), + ('TCV', 'inp_typevalue_valve', 'TCV', 'Throttle Control Valve'), + ('TRACE', 'inp_value_opti_qual', 'TRACE', NULL), + ('USE', 'inp_value_opti_hyd', 'USE', NULL), + ('VALVE', 'inp_typevalue_dscenario', 'VALVE', NULL), + ('VIRTUALPUMP', 'inp_typevalue_dscenario', 'VIRTUALPUMP', NULL), + ('VIRTUALVALVE', 'inp_typevalue_dscenario', 'VIRTUALVALVE', NULL), + ('VOLUME', 'inp_value_curve', 'VOLUME', NULL), + ('WALL', 'inp_value_reactions', 'WALL', NULL), + ('YES', 'inp_value_yesnofull', 'YES', NULL) +) AS v(id, typevalue, idval, descript) +WHERE t.id = v.id AND t.typevalue = v.typevalue; + +UPDATE om_typevalue AS t SET idval = v.idval, descript = v.descript FROM ( + VALUES + ('0', 'fluid_type', 'NOT INFORMED', NULL), + ('0', 'treatment_type', 'NOT INFORMED', NULL), + ('1', 'fluid_type', 'STORMWATER', NULL), + ('1', 'treatment_type', 'TREATED', NULL), + ('2', 'fluid_type', 'COMBINED DILUTED', NULL), + ('2', 'treatment_type', 'PRETREATED', NULL), + ('3', 'fluid_type', 'SEWAGE', NULL), + ('3', 'treatment_type', 'NOT TREATED', NULL), + ('4', 'fluid_type', 'COMBINED', NULL), + ('6', 'incident_type', 'Minor leak', NULL), + ('7', 'incident_type', 'Full of leaves', NULL), + ('event_ud_link_standard', 'visit_form_type', 'event_ud_link_standard', NULL), + ('0', 'profile_papersize', 'CUSTOM', NULL), + ('1', 'incident_type', 'Broken cover', NULL), + ('1', 'network_type', 'WATER SUPPLY', NULL), + ('1', 'profile_papersize', 'DIN A5 - 210x148', NULL), + ('1', 'visit_cleaned', 'Yes', NULL), + ('1', 'visit_defect', 'Good state', NULL), + ('1', 'visit_param_action', 'Complementary events', NULL), + ('1', 'visit_parameter_criticity', 'Urgent', NULL), + ('1', 'visit_sediments', 'No sediments', NULL), + ('1', 'visit_status', 'Started', NULL), + ('1', 'visit_type', 'planned', NULL), + ('2', 'incident_type', 'Water on the street', NULL), + ('2', 'network_type', 'URBAN DRAINAGE', NULL), + ('2', 'profile_papersize', 'DIN A4 - 297x210', NULL), + ('2', 'visit_cleaned', 'No', NULL), + ('2', 'visit_defect', 'Some defects', NULL), + ('2', 'visit_param_action', 'Incompatible events', NULL), + ('2', 'visit_parameter_criticity', 'High', NULL), + ('2', 'visit_sediments', 'Presence of sediments', NULL), + ('2', 'visit_status', 'Stand-by', NULL), + ('2', 'visit_type', 'unexpected', NULL), + ('3', 'incident_type', 'Smells', NULL), + ('3', 'profile_papersize', 'DIN A3 - 420x297', NULL), + ('3', 'visit_cleaned', 'Half', NULL), + ('3', 'visit_defect', 'Bad state', NULL), + ('3', 'visit_param_action', 'Redundant events', NULL), + ('3', 'visit_parameter_criticity', 'Normal', NULL), + ('3', 'visit_status', 'Canceled', NULL), + ('4', 'incident_type', 'Noisy cover', NULL), + ('4', 'profile_papersize', 'DIN A2 - 594x420', NULL), + ('4', 'visit_parameter_criticity', 'Minor', NULL), + ('4', 'visit_status', 'Finished', NULL), + ('5', 'incident_type', 'Others', NULL), + ('5', 'profile_papersize', 'DIN A1 - 840x594', NULL), + ('INCIDENCE', 'visit_param_type', 'INCIDENCE', NULL), + ('INSPECTION', 'visit_param_type', 'INSPECTION', NULL), + ('OTHER', 'visit_param_type', 'OTHER', NULL), + ('RECONST', 'visit_param_type', 'RECONST', NULL), + ('REHABIT', 'visit_param_type', 'REHABIT', NULL), + ('event_standard', 'visit_form_type', 'event_standard', NULL), + ('event_ud_arc_rehabit', 'visit_form_type', 'event_ud_arc_rehabit', NULL), + ('event_ud_arc_standard', 'visit_form_type', 'event_ud_arc_standard', NULL), + ('0', 'mincut_state', 'Planified', NULL), + ('1', 'mincut_cause', 'Accidental', NULL), + ('1', 'mincut_class', 'Network mincut', NULL), + ('1', 'mincut_state', 'In Progress', NULL), + ('1', 'visit_leak', 'No leak', NULL), + ('2', 'mincut_cause', 'Planified', NULL), + ('2', 'mincut_class', 'Connec mincut', NULL), + ('2', 'mincut_state', 'Finished', NULL), + ('2', 'visit_leak', 'Minor leak', NULL), + ('3', 'mincut_class', 'Hydrometer mincut', NULL), + ('3', 'mincut_state', 'Canceled', NULL), + ('4', 'mincut_state', 'On planning', NULL), + ('4', 'visit_defect', 'No defects', NULL), + ('5', 'mincut_state', 'Conflict', NULL), + ('6', 'incident_type', 'Missing cover', NULL), + ('CDI', 'waterbalance_method', 'CUSTOM DATE INTERVAL', NULL), + ('CPW', 'waterbalance_method', 'CRM PERIOD WINDOW', NULL), + ('DCW', 'waterbalance_method', 'DMA CENTROID PERIOD WINDOW', NULL), + ('DCW', 'waterbalance_method_', 'DMA CENTROID PERIOD WINDOW', NULL) +) AS v(id, typevalue, idval, descript) +WHERE t.id = v.id AND t.typevalue = v.typevalue; + +UPDATE plan_typevalue AS t SET idval = v.idval, descript = v.descript FROM ( + VALUES + ('0', 'psector_status', 'EXECUTED (Save Trace)', 'Psector executed. Its elements are copied to traceability tables'), + ('1', 'psector_status', 'PLANNING IN PROGRESS', 'The Psector is being planned.'), + ('1', 'psector_type', 'PLANIFIED', NULL), + ('1', 'value_priority', 'HIGH_PRIORITY', NULL), + ('2', 'psector_status', 'PLANNED', 'The Psector is planned and ready to work with.'), + ('2', 'value_priority', 'NORMAL_PRIORITY', NULL), + ('3', 'psector_status', 'EXECUTION IN PROGRESS', 'The Psector is being executed on the network.'), + ('3', 'value_priority', 'LOW_PRIORITY', NULL), + ('4', 'psector_status', 'EXECUTED', 'The Psector has been executed.'), + ('5', 'psector_status', 'MADE OPERATIONAL (ARCHIVED)', 'The Psector has been executed, and the objects defined during the planning phase (additions and removals) have been automatically implemented.'), + ('6', 'psector_status', 'COMISSIONED (ARCHIVED)', 'The Psector has been executed and is now archived.'), + ('7', 'psector_status', 'CANCELED (ARCHIVED)', 'The Psector has been cancelled because it was not executed and archived at the same time.'), + ('8', 'psector_status', 'RESTORED', 'The Psector was archived but has been restored.'), + ('kg', 'price_units', 'kg', NULL), + ('m', 'price_units', 'm', NULL), + ('m2', 'price_units', 'm2', NULL), + ('m3', 'price_units', 'm3', NULL), + ('pa', 'price_units', 'pa', NULL), + ('t', 'price_units', 't', NULL), + ('u', 'price_units', 'u', NULL), + ('DMA', 'netscenario_type', 'DMA', NULL), + ('PRESSZONE', 'netscenario_type', 'PRESSZONE', NULL) +) AS v(id, typevalue, idval, descript) +WHERE t.id = v.id AND t.typevalue = v.typevalue; \ No newline at end of file diff --git a/dbmodel/schemas/main/common/base/fct/gw_fct_getconfig.sql b/dbmodel/schemas/main/common/base/fct/gw_fct_getconfig.sql index 3847170855..2e4c06b7b6 100644 --- a/dbmodel/schemas/main/common/base/fct/gw_fct_getconfig.sql +++ b/dbmodel/schemas/main/common/base/fct/gw_fct_getconfig.sql @@ -69,6 +69,12 @@ v_querystring text; v_debug_vars json; v_debug json; v_msgerr json; +v_ui_lang text; +v_ml_pref jsonb; +v_ml_project_type text; +v_i18n_lb text; +v_i18n_tt text; +v_schema text; BEGIN @@ -315,6 +321,53 @@ BEGIN END LOOP; + -- Apply multilang UI translations for sys_param_user + v_schema := 'SCHEMA_NAME'; + v_ui_lang := NULL; + v_ml_project_type := NULL; + IF to_regnamespace('multilang') IS NOT NULL THEN + v_ml_pref := multilang.gw_fct_get_multilang_language('SCHEMA_NAME'); + IF v_ml_pref IS NOT NULL THEN + v_ui_lang := v_ml_pref->>'lang'; + v_ml_project_type := v_ml_pref->>'project_type'; + END IF; + END IF; + IF v_ui_lang IS NOT NULL THEN + FOR aux_json IN SELECT * FROM json_array_elements(array_to_json(fields_array)) + LOOP + SELECT i.lb, i.tt INTO v_i18n_lb, v_i18n_tt + FROM multilang.sys_param_user i + WHERE i.project_type = v_ml_project_type + AND i.context = 'sys_param_user' + AND i.source = aux_json->>'widgetname' + AND i.lang = v_ui_lang + LIMIT 1; + IF v_i18n_lb IS NOT NULL THEN + fields_array[(aux_json->>'orderby')::INT] := gw_fct_json_object_set_key( + fields_array[(aux_json->>'orderby')::INT], 'label', v_i18n_lb); + END IF; + IF v_i18n_tt IS NOT NULL THEN + fields_array[(aux_json->>'orderby')::INT] := gw_fct_json_object_set_key( + fields_array[(aux_json->>'orderby')::INT], 'tooltip', v_i18n_tt); + END IF; + END LOOP; + + SELECT i.lb, i.tt INTO v_i18n_lb, v_i18n_tt + FROM multilang.config_form_tabs i + WHERE i.project_type = v_ml_project_type + AND i.formname = 'config' + AND i.source = rec_tab.tabname + AND i.context = 'config_form_tabs' + AND i.lang = v_ui_lang + LIMIT 1; + IF v_i18n_lb IS NOT NULL THEN + rec_tab.label := v_i18n_lb; + END IF; + IF v_i18n_tt IS NOT NULL THEN + rec_tab.tooltip := v_i18n_tt; + END IF; + END IF; + -- Convert to json fields := array_to_json(fields_array); fields := COALESCE(fields, '[]'); @@ -367,6 +420,53 @@ BEGIN EXECUTE v_querystring INTO fields_array; END IF; + -- Apply multilang UI translations for config_param_system + v_schema := 'SCHEMA_NAME'; + v_ui_lang := NULL; + v_ml_project_type := NULL; + IF to_regnamespace('multilang') IS NOT NULL THEN + v_ml_pref := multilang.gw_fct_get_multilang_language('SCHEMA_NAME'); + IF v_ml_pref IS NOT NULL THEN + v_ui_lang := v_ml_pref->>'lang'; + v_ml_project_type := v_ml_pref->>'project_type'; + END IF; + END IF; + IF v_ui_lang IS NOT NULL AND fields_array IS NOT NULL THEN + FOR aux_json IN SELECT * FROM json_array_elements(array_to_json(fields_array)) + LOOP + SELECT i.lb, i.tt INTO v_i18n_lb, v_i18n_tt + FROM multilang.config_param_system i + WHERE i.project_type = v_ml_project_type + AND i.context = 'config_param_system' + AND i.source = aux_json->>'widgetname' + AND i.lang = v_ui_lang + LIMIT 1; + IF v_i18n_lb IS NOT NULL THEN + fields_array[(aux_json->>'orderby')::INT] := gw_fct_json_object_set_key( + fields_array[(aux_json->>'orderby')::INT], 'label', v_i18n_lb); + END IF; + IF v_i18n_tt IS NOT NULL THEN + fields_array[(aux_json->>'orderby')::INT] := gw_fct_json_object_set_key( + fields_array[(aux_json->>'orderby')::INT], 'tooltip', v_i18n_tt); + END IF; + END LOOP; + + SELECT i.lb, i.tt INTO v_i18n_lb, v_i18n_tt + FROM multilang.config_form_tabs i + WHERE i.project_type = v_ml_project_type + AND i.formname = 'config' + AND i.source = rec_tab.tabname + AND i.context = 'config_form_tabs' + AND i.lang = v_ui_lang + LIMIT 1; + IF v_i18n_lb IS NOT NULL THEN + rec_tab.label := v_i18n_lb; + END IF; + IF v_i18n_tt IS NOT NULL THEN + rec_tab.tooltip := v_i18n_tt; + END IF; + END IF; + -- Convert to json fields := array_to_json(fields_array); fields := COALESCE(fields, '[]'); diff --git a/dbmodel/schemas/main/common/base/fct/gw_fct_getfeatureinfo.sql b/dbmodel/schemas/main/common/base/fct/gw_fct_getfeatureinfo.sql index b7e484cba1..d812670c33 100644 --- a/dbmodel/schemas/main/common/base/fct/gw_fct_getfeatureinfo.sql +++ b/dbmodel/schemas/main/common/base/fct/gw_fct_getfeatureinfo.sql @@ -55,6 +55,12 @@ v_tabname text = 'tab_data'; v_errcontext text; v_querystring text; v_msgerr json; +v_ui_lang text; +v_ml_pref jsonb; +v_ml_project_type text; +v_i18n_lb text; +v_i18n_tt text; +v_i18n_widgetcontrols jsonb; vdefault_querytext text; @@ -102,6 +108,7 @@ BEGIN v_querystring = concat('SELECT array_agg(row_to_json(a)) FROM (SELECT a.attname as label, concat(',quote_literal(v_tabname),',''_'',a.attname) AS widgetname, + ',quote_literal(v_tabname),' AS tabname, a.attname AS columnname, (case when a.atttypid=16 then ''check'' else ''text'' end ) as widgettype, (case when a.atttypid=16 then ''boolean'' else ''string'' end ) as "datatype", @@ -178,6 +185,81 @@ BEGIN END IF; + -- Apply multilang UI translations for info dialog fields + v_ui_lang := NULL; + v_ml_project_type := NULL; + IF to_regnamespace('multilang') IS NOT NULL THEN + v_ml_pref := multilang.gw_fct_get_multilang_language('SCHEMA_NAME'); + IF v_ml_pref IS NOT NULL THEN + v_ui_lang := v_ml_pref->>'lang'; + v_ml_project_type := v_ml_pref->>'project_type'; + END IF; + END IF; + IF v_ui_lang IS NOT NULL AND fields_array IS NOT NULL THEN + FOR aux_json IN SELECT * FROM json_array_elements(array_to_json(fields_array)) + LOOP + SELECT i.lb, i.tt INTO v_i18n_lb, v_i18n_tt + FROM multilang.config_form_fields i + WHERE i.project_type = v_ml_project_type + AND ( + i.formname = v_table_id + OR i.formname = replace(v_idname, '_id', '') + OR v_table_id LIKE i.formname + ) + AND i.formtype = 'form_feature' + AND i.tabname = COALESCE(aux_json->>'tabname', v_tabname) + AND i.source = aux_json->>'columnname' + AND i.context = 'config_form_fields' + AND i.lang = v_ui_lang + ORDER BY CASE + WHEN i.formname = v_table_id THEN 0 + WHEN i.formname = replace(v_idname, '_id', '') THEN 1 + ELSE 2 + END + LIMIT 1; + IF v_i18n_lb IS NOT NULL THEN + fields_array[(aux_json->>'orderby')::INT] := gw_fct_json_object_set_key( + fields_array[(aux_json->>'orderby')::INT], 'label', v_i18n_lb); + END IF; + IF v_i18n_tt IS NOT NULL THEN + fields_array[(aux_json->>'orderby')::INT] := gw_fct_json_object_set_key( + fields_array[(aux_json->>'orderby')::INT], 'tooltip', v_i18n_tt); + END IF; + + SELECT i."text" INTO v_i18n_widgetcontrols + FROM multilang.config_form_fields_json i + WHERE i.project_type = v_ml_project_type + AND ( + i.formname = v_table_id + OR i.formname = replace(v_idname, '_id', '') + OR v_table_id LIKE i.formname + ) + AND i.formtype = 'form_feature' + AND i.tabname = COALESCE(aux_json->>'tabname', v_tabname) + AND i.source = aux_json->>'columnname' + AND i.context = 'config_form_fields' + AND i.hint = 'widgetcontrols' + AND i.lang = v_ui_lang + ORDER BY CASE + WHEN i.formname = v_table_id THEN 0 + WHEN i.formname = replace(v_idname, '_id', '') THEN 1 + ELSE 2 + END + LIMIT 1; + IF v_i18n_widgetcontrols IS NOT NULL THEN + fields_array[(aux_json->>'orderby')::INT] := gw_fct_json_object_set_key( + fields_array[(aux_json->>'orderby')::INT], + 'widgetcontrols', + (COALESCE((fields_array[(aux_json->>'orderby')::INT]->'widgetcontrols')::jsonb, '{}'::jsonb) + || v_i18n_widgetcontrols)::json); + IF v_i18n_widgetcontrols ? 'text' THEN + fields_array[(aux_json->>'orderby')::INT] := gw_fct_json_object_set_key( + fields_array[(aux_json->>'orderby')::INT], 'value', v_i18n_widgetcontrols->>'text'); + END IF; + END IF; + END LOOP; + END IF; + -- Convert to json fields := array_to_json(fields_array); diff --git a/dbmodel/schemas/main/common/base/fct/gw_fct_getfeatureupsert.sql b/dbmodel/schemas/main/common/base/fct/gw_fct_getfeatureupsert.sql index 379acb2247..ea99a1f451 100644 --- a/dbmodel/schemas/main/common/base/fct/gw_fct_getfeatureupsert.sql +++ b/dbmodel/schemas/main/common/base/fct/gw_fct_getfeatureupsert.sql @@ -141,6 +141,12 @@ v_selected_idval text; v_errcontext text; v_querystring text; v_msgerr json; +v_ui_lang text; +v_ml_pref jsonb; +v_ml_project_type text; +v_i18n_lb text; +v_i18n_tt text; +v_i18n_widgetcontrols jsonb; v_elevation numeric(12,4); v_staticpressure numeric(12,3); label_value text; @@ -760,6 +766,7 @@ BEGIN v_querystring = concat('SELECT array_agg(row_to_json(a)) FROM (SELECT a.attname as label, a.attname as columnname, concat(',quote_literal(v_tabname),',''_'',a.attname) AS widgetname, + ',quote_literal(v_tabname),' AS tabname, (case when a.atttypid=16 then ''check'' else ''text'' end ) as widgettype, (case when a.atttypid=16 then ''boolean'' else ''string'' end ) as "datatype", ''::TEXT AS tooltip, @@ -1229,6 +1236,81 @@ BEGIN v_status = TRUE; END IF; + -- Apply multilang UI translations for info dialog fields + v_ui_lang := NULL; + v_ml_project_type := NULL; + IF to_regnamespace('multilang') IS NOT NULL THEN + v_ml_pref := multilang.gw_fct_get_multilang_language('SCHEMA_NAME'); + IF v_ml_pref IS NOT NULL THEN + v_ui_lang := v_ml_pref->>'lang'; + v_ml_project_type := v_ml_pref->>'project_type'; + END IF; + END IF; + IF v_ui_lang IS NOT NULL AND v_fields_array IS NOT NULL THEN + FOR aux_json IN SELECT * FROM json_array_elements(array_to_json(v_fields_array)) + LOOP + SELECT i.lb, i.tt INTO v_i18n_lb, v_i18n_tt + FROM multilang.config_form_fields i + WHERE i.project_type = v_ml_project_type + AND ( + i.formname = v_formname + OR i.formname = replace(v_idname, '_id', '') + OR v_formname LIKE i.formname + ) + AND i.formtype = 'form_feature' + AND i.tabname = COALESCE(aux_json->>'tabname', v_tabname) + AND i.source = aux_json->>'columnname' + AND i.context = 'config_form_fields' + AND i.lang = v_ui_lang + ORDER BY CASE + WHEN i.formname = v_formname THEN 0 + WHEN i.formname = replace(v_idname, '_id', '') THEN 1 + ELSE 2 + END + LIMIT 1; + IF v_i18n_lb IS NOT NULL THEN + v_fields_array[(aux_json->>'orderby')::INT] := gw_fct_json_object_set_key( + v_fields_array[(aux_json->>'orderby')::INT], 'label', v_i18n_lb); + END IF; + IF v_i18n_tt IS NOT NULL THEN + v_fields_array[(aux_json->>'orderby')::INT] := gw_fct_json_object_set_key( + v_fields_array[(aux_json->>'orderby')::INT], 'tooltip', v_i18n_tt); + END IF; + + SELECT i."text" INTO v_i18n_widgetcontrols + FROM multilang.config_form_fields_json i + WHERE i.project_type = v_ml_project_type + AND ( + i.formname = v_formname + OR i.formname = replace(v_idname, '_id', '') + OR v_formname LIKE i.formname + ) + AND i.formtype = 'form_feature' + AND i.tabname = COALESCE(aux_json->>'tabname', v_tabname) + AND i.source = aux_json->>'columnname' + AND i.context = 'config_form_fields' + AND i.hint = 'widgetcontrols' + AND i.lang = v_ui_lang + ORDER BY CASE + WHEN i.formname = v_formname THEN 0 + WHEN i.formname = replace(v_idname, '_id', '') THEN 1 + ELSE 2 + END + LIMIT 1; + IF v_i18n_widgetcontrols IS NOT NULL THEN + v_fields_array[(aux_json->>'orderby')::INT] := gw_fct_json_object_set_key( + v_fields_array[(aux_json->>'orderby')::INT], + 'widgetcontrols', + (COALESCE((v_fields_array[(aux_json->>'orderby')::INT]->'widgetcontrols')::jsonb, '{}'::jsonb) + || v_i18n_widgetcontrols)::json); + IF v_i18n_widgetcontrols ? 'text' THEN + v_fields_array[(aux_json->>'orderby')::INT] := gw_fct_json_object_set_key( + v_fields_array[(aux_json->>'orderby')::INT], 'value', v_i18n_widgetcontrols->>'text'); + END IF; + END IF; + END LOOP; + END IF; + -- Convert to json v_fields := array_to_json(v_fields_array); diff --git a/dbmodel/schemas/main/common/base/fct/gw_fct_getformfields.sql b/dbmodel/schemas/main/common/base/fct/gw_fct_getformfields.sql index c5a121c450..b12bd44c68 100644 --- a/dbmodel/schemas/main/common/base/fct/gw_fct_getformfields.sql +++ b/dbmodel/schemas/main/common/base/fct/gw_fct_getformfields.sql @@ -77,6 +77,13 @@ v_currency text; v_filter_widgets text = ''; v_user_roles TEXT[]; v_min_role TEXT; +v_ui_lang text; +v_ml_pref jsonb; +v_ml_project_type text; +v_i18n_lb text; +v_i18n_tt text; +v_i18n_widgetcontrols jsonb; +v_schema text; BEGIN @@ -532,6 +539,82 @@ BEGIN -- Convert to json fields := array_to_json(fields_array); + -- Apply multilang UI translations for form fields + v_schema := 'SCHEMA_NAME'; + v_ui_lang := NULL; + v_ml_project_type := NULL; + IF to_regnamespace('multilang') IS NOT NULL THEN + v_ml_pref := multilang.gw_fct_get_multilang_language('SCHEMA_NAME'); + IF v_ml_pref IS NOT NULL THEN + v_ui_lang := v_ml_pref->>'lang'; + v_ml_project_type := v_ml_pref->>'project_type'; + END IF; + END IF; + IF v_ui_lang IS NOT NULL AND fields_array IS NOT NULL THEN + FOR aux_json IN SELECT * FROM json_array_elements(array_to_json(fields_array)) + LOOP + SELECT i.lb, i.tt INTO v_i18n_lb, v_i18n_tt + FROM multilang.config_form_fields i + WHERE i.project_type = v_ml_project_type + AND ( + i.formname = p_formname + OR i.formname = replace(p_idname, '_id', '') + OR p_formname LIKE i.formname + ) + AND i.formtype = p_formtype + AND i.tabname = aux_json->>'tabname' + AND i.source = aux_json->>'columnname' + AND i.context = 'config_form_fields' + AND i.lang = v_ui_lang + ORDER BY CASE + WHEN i.formname = p_formname THEN 0 + WHEN i.formname = replace(p_idname, '_id', '') THEN 1 + ELSE 2 + END + LIMIT 1; + IF v_i18n_lb IS NOT NULL THEN + fields_array[(aux_json->>'orderby')::INT] := gw_fct_json_object_set_key( + fields_array[(aux_json->>'orderby')::INT], 'label', v_i18n_lb); + END IF; + IF v_i18n_tt IS NOT NULL THEN + fields_array[(aux_json->>'orderby')::INT] := gw_fct_json_object_set_key( + fields_array[(aux_json->>'orderby')::INT], 'tooltip', v_i18n_tt); + END IF; + + SELECT i."text" INTO v_i18n_widgetcontrols + FROM multilang.config_form_fields_json i + WHERE i.project_type = v_ml_project_type + AND ( + i.formname = p_formname + OR i.formname = replace(p_idname, '_id', '') + OR p_formname LIKE i.formname + ) + AND i.formtype = p_formtype + AND i.tabname = aux_json->>'tabname' + AND i.source = aux_json->>'columnname' + AND i.context = 'config_form_fields' + AND i.hint = 'widgetcontrols' + AND i.lang = v_ui_lang + ORDER BY CASE + WHEN i.formname = p_formname THEN 0 + WHEN i.formname = replace(p_idname, '_id', '') THEN 1 + ELSE 2 + END + LIMIT 1; + IF v_i18n_widgetcontrols IS NOT NULL THEN + fields_array[(aux_json->>'orderby')::INT] := gw_fct_json_object_set_key( + fields_array[(aux_json->>'orderby')::INT], + 'widgetcontrols', + (COALESCE((fields_array[(aux_json->>'orderby')::INT]->'widgetcontrols')::jsonb, '{}'::jsonb) + || v_i18n_widgetcontrols)::json); + IF v_i18n_widgetcontrols ? 'text' THEN + fields_array[(aux_json->>'orderby')::INT] := gw_fct_json_object_set_key( + fields_array[(aux_json->>'orderby')::INT], 'value', v_i18n_widgetcontrols->>'text'); + END IF; + END IF; + END LOOP; + END IF; + PERFORM gw_fct_debug(concat('{"data":{"msg":"<---- OUTPUT FOR gw_fct_getformfields: ", "variables":""}}')::json); -- Return diff --git a/dbmodel/schemas/main/common/base/fct/gw_fct_getmessage.sql b/dbmodel/schemas/main/common/base/fct/gw_fct_getmessage.sql index 5c71a2cf25..f6a977ba49 100644 --- a/dbmodel/schemas/main/common/base/fct/gw_fct_getmessage.sql +++ b/dbmodel/schemas/main/common/base/fct/gw_fct_getmessage.sql @@ -67,6 +67,13 @@ v_fcount integer; v_table_id text; v_column_id text; v_cur_user text; +v_ui_lang text; +v_ml_pref jsonb; +v_ml_project_type text; +v_i18n_ms text; +v_i18n_ht text; +v_i18n_ds text; +v_schema text; BEGIN @@ -184,6 +191,33 @@ BEGIN RETURN json_build_object('status', 'Failed', 'message', json_build_object('level', 1, 'text', 'The process has returned an error code, but this error code is not present on the sys_message table. Please contact with your system administrator in order to update your sys_message table'))::json; END IF; + -- Apply multilang UI translations for sys_message + v_schema := 'SCHEMA_NAME'; + v_ui_lang := NULL; + v_ml_project_type := NULL; + IF to_regnamespace('multilang') IS NOT NULL THEN + v_ml_pref := multilang.gw_fct_get_multilang_language('SCHEMA_NAME'); + IF v_ml_pref IS NOT NULL THEN + v_ui_lang := v_ml_pref->>'lang'; + v_ml_project_type := v_ml_pref->>'project_type'; + END IF; + END IF; + IF v_ui_lang IS NOT NULL THEN + SELECT i.ms, i.ht INTO v_i18n_ms, v_i18n_ht + FROM multilang.sys_message i + WHERE i.project_type = v_ml_project_type + AND i.context = 'sys_message' + AND i.source = v_message_id::text + AND i.lang = v_ui_lang + LIMIT 1; + IF v_i18n_ms IS NOT NULL THEN + rec_cat_error.error_message = v_i18n_ms; + END IF; + IF v_i18n_ht IS NOT NULL THEN + rec_cat_error.hint_message = v_i18n_ht; + END IF; + END IF; + IF rec_cat_error.message_type != 'UI' OR rec_cat_error.message_type IS NULL THEN SELECT * INTO rec_function FROM sys_function WHERE sys_function.id=v_function_id; @@ -191,6 +225,19 @@ BEGIN IF rec_function IS NULL THEN RETURN json_build_object('status', 'Failed', 'message', json_build_object('level', 1, 'text', 'Function does not exist'))::json; END IF; + + IF v_ui_lang IS NOT NULL THEN + SELECT i.ds INTO v_i18n_ds + FROM multilang.sys_function i + WHERE i.project_type = v_ml_project_type + AND i.context = 'sys_function' + AND i.source = v_function_id::text + AND i.lang = v_ui_lang + LIMIT 1; + IF v_i18n_ds IS NOT NULL THEN + rec_function.descript = v_i18n_ds; + END IF; + END IF; END IF; -- compare parameters in message with parameters recieved diff --git a/dbmodel/schemas/main/common/base/fct/gw_fct_infofromid.sql b/dbmodel/schemas/main/common/base/fct/gw_fct_infofromid.sql index d49892d56a..84faa1cd72 100644 --- a/dbmodel/schemas/main/common/base/fct/gw_fct_infofromid.sql +++ b/dbmodel/schemas/main/common/base/fct/gw_fct_infofromid.sql @@ -163,6 +163,12 @@ v_order_id integer; v_flwreg_type text; v_arc_searchnodes double precision; v_talblenameorigin text; +v_ui_lang text; +v_ml_pref jsonb; +v_ml_project_type text; +v_i18n_lb text; +v_i18n_tt text; +v_tab_idx integer; BEGIN @@ -637,6 +643,37 @@ BEGIN EXECUTE v_querystring INTO form_tabs; + -- Apply multilang UI translations for config_form_tabs + v_ui_lang := NULL; + v_ml_project_type := NULL; + IF to_regnamespace('multilang') IS NOT NULL THEN + v_ml_pref := multilang.gw_fct_get_multilang_language('SCHEMA_NAME'); + IF v_ml_pref IS NOT NULL THEN + v_ui_lang := v_ml_pref->>'lang'; + v_ml_project_type := v_ml_pref->>'project_type'; + END IF; + END IF; + IF v_ui_lang IS NOT NULL AND form_tabs IS NOT NULL THEN + FOR v_tab_idx IN 1..array_length(form_tabs, 1) LOOP + SELECT i.lb, i.tt INTO v_i18n_lb, v_i18n_tt + FROM multilang.config_form_tabs i + WHERE i.project_type = v_ml_project_type + AND i.formname = form_tabs[v_tab_idx]->>'formname' + AND i.source = form_tabs[v_tab_idx]->>'tabName' + AND i.context = 'config_form_tabs' + AND i.lang = v_ui_lang + LIMIT 1; + IF v_i18n_lb IS NOT NULL THEN + form_tabs[v_tab_idx] := gw_fct_json_object_set_key( + form_tabs[v_tab_idx], 'tabLabel', v_i18n_lb); + END IF; + IF v_i18n_tt IS NOT NULL THEN + form_tabs[v_tab_idx] := gw_fct_json_object_set_key( + form_tabs[v_tab_idx], 'tooltip', v_i18n_tt); + END IF; + END LOOP; + END IF; + if v_tablename_aux is not null then v_tablename = v_tablename_aux; end if; @@ -769,6 +806,14 @@ BEGIN -- TODO: revise this code IF v_id IS NULL AND v_isepa IS true THEN v_id = ''; + ELSIF v_id IS NULL AND v_tablename in ('ve_dma', 've_dqa', 've_sector', 've_drainzone', 've_supplyzone', 've_macrodma', 've_macrodqa', 've_macrosector', 've_dwfzone', 've_omzone', 've_macroomzone', 've_presszone') THEN + v_zone = replace(v_tablename,'ve_',''); + v_querystring = format('SELECT max(%I_id::integer)+1 FROM %I WHERE %I_id::text ~ ''^[0-9]+$''', v_zone, v_zone, v_zone); + EXECUTE v_querystring INTO v_id; + ELSIF v_id IS NULL AND v_tablename IN ('plan_netscenario_dma', 'plan_netscenario_presszone') THEN + v_zone = replace(v_tablename, 'plan_netscenario_', ''); + v_querystring = format('SELECT coalesce(max(%I_id::integer)+1, 1) FROM %I WHERE %I_id::text ~ ''^[0-9]+$''', v_zone, v_tablename, v_zone); + EXECUTE v_querystring INTO v_id; ELSIF v_id IS NULL AND v_featuretype = 'flwreg' THEN -- WARNING: this code is also in gw_fct_getfeatureupsert. If it needs to be changed here, it will most likely have to be changed there too. -- Get node id from initial clicked point diff --git a/dbmodel/schemas/main/common/functions/fct/gw_fct_getconfig.sql b/dbmodel/schemas/main/common/functions/fct/gw_fct_getconfig.sql index 3847170855..61880eeecc 100644 --- a/dbmodel/schemas/main/common/functions/fct/gw_fct_getconfig.sql +++ b/dbmodel/schemas/main/common/functions/fct/gw_fct_getconfig.sql @@ -69,6 +69,12 @@ v_querystring text; v_debug_vars json; v_debug json; v_msgerr json; +v_ui_lang text; +v_ml_pref jsonb; +v_ml_project_type text; +v_i18n_lb text; +v_i18n_tt text; +v_schema text; BEGIN @@ -315,6 +321,50 @@ BEGIN END LOOP; + -- Apply multilang UI translations for sys_param_user + v_schema := 'SCHEMA_NAME'; + v_ui_lang := NULL; + v_ml_project_type := NULL; + IF to_regnamespace('multilang') IS NOT NULL THEN + v_ml_pref := multilang.gw_fct_get_multilang_language('SCHEMA_NAME'); + IF v_ml_pref IS NOT NULL THEN + v_ui_lang := v_ml_pref->>'lang'; + v_ml_project_type := v_ml_pref->>'project_type'; + END IF; + END IF; + IF v_ui_lang IS NOT NULL THEN + FOR aux_json IN SELECT * FROM json_array_elements(array_to_json(fields_array)) + LOOP + SELECT i.lb, i.tt INTO v_i18n_lb, v_i18n_tt + FROM multilang.sys_param_user i + WHERE i.project_type = v_ml_project_type + AND i.context = 'sys_param_user' + AND i.source = aux_json->>'widgetname' + AND i.lang = v_ui_lang + LIMIT 1; + IF v_i18n_lb IS NOT NULL THEN + fields_array[(aux_json->>'orderby')::INT] := gw_fct_json_object_set_key( + fields_array[(aux_json->>'orderby')::INT], 'label', v_i18n_lb); + END IF; + IF v_i18n_tt IS NOT NULL THEN + fields_array[(aux_json->>'orderby')::INT] := gw_fct_json_object_set_key( + fields_array[(aux_json->>'orderby')::INT], 'tooltip', v_i18n_tt); + END IF; + END LOOP; + + SELECT i.lb, i.tt INTO v_i18n_lb, v_i18n_tt + FROM multilang.config_form_tabs i + WHERE i.project_type = v_ml_project_type + AND i.formname = 'config' + AND i.source = rec_tab.tabname + AND i.context = 'config_form_tabs' + AND i.lang = v_ui_lang + LIMIT 1; + IF v_i18n_lb IS NOT NULL THEN + rec_tab.label := v_i18n_lb; + END IF; + END IF; + -- Convert to json fields := array_to_json(fields_array); fields := COALESCE(fields, '[]'); @@ -367,6 +417,50 @@ BEGIN EXECUTE v_querystring INTO fields_array; END IF; + -- Apply multilang UI translations for config_param_system + v_schema := 'SCHEMA_NAME'; + v_ui_lang := NULL; + v_ml_project_type := NULL; + IF to_regnamespace('multilang') IS NOT NULL THEN + v_ml_pref := multilang.gw_fct_get_multilang_language('SCHEMA_NAME'); + IF v_ml_pref IS NOT NULL THEN + v_ui_lang := v_ml_pref->>'lang'; + v_ml_project_type := v_ml_pref->>'project_type'; + END IF; + END IF; + IF v_ui_lang IS NOT NULL AND fields_array IS NOT NULL THEN + FOR aux_json IN SELECT * FROM json_array_elements(array_to_json(fields_array)) + LOOP + SELECT i.lb, i.tt INTO v_i18n_lb, v_i18n_tt + FROM multilang.config_param_system i + WHERE i.project_type = v_ml_project_type + AND i.context = 'config_param_system' + AND i.source = aux_json->>'widgetname' + AND i.lang = v_ui_lang + LIMIT 1; + IF v_i18n_lb IS NOT NULL THEN + fields_array[(aux_json->>'orderby')::INT] := gw_fct_json_object_set_key( + fields_array[(aux_json->>'orderby')::INT], 'label', v_i18n_lb); + END IF; + IF v_i18n_tt IS NOT NULL THEN + fields_array[(aux_json->>'orderby')::INT] := gw_fct_json_object_set_key( + fields_array[(aux_json->>'orderby')::INT], 'tooltip', v_i18n_tt); + END IF; + END LOOP; + + SELECT i.lb, i.tt INTO v_i18n_lb, v_i18n_tt + FROM multilang.config_form_tabs i + WHERE i.project_type = v_ml_project_type + AND i.formname = 'config' + AND i.source = rec_tab.tabname + AND i.context = 'config_form_tabs' + AND i.lang = v_ui_lang + LIMIT 1; + IF v_i18n_lb IS NOT NULL THEN + rec_tab.label := v_i18n_lb; + END IF; + END IF; + -- Convert to json fields := array_to_json(fields_array); fields := COALESCE(fields, '[]'); diff --git a/dbmodel/schemas/main/common/functions/fct/gw_fct_getfeatureinfo.sql b/dbmodel/schemas/main/common/functions/fct/gw_fct_getfeatureinfo.sql index b7e484cba1..d812670c33 100644 --- a/dbmodel/schemas/main/common/functions/fct/gw_fct_getfeatureinfo.sql +++ b/dbmodel/schemas/main/common/functions/fct/gw_fct_getfeatureinfo.sql @@ -55,6 +55,12 @@ v_tabname text = 'tab_data'; v_errcontext text; v_querystring text; v_msgerr json; +v_ui_lang text; +v_ml_pref jsonb; +v_ml_project_type text; +v_i18n_lb text; +v_i18n_tt text; +v_i18n_widgetcontrols jsonb; vdefault_querytext text; @@ -102,6 +108,7 @@ BEGIN v_querystring = concat('SELECT array_agg(row_to_json(a)) FROM (SELECT a.attname as label, concat(',quote_literal(v_tabname),',''_'',a.attname) AS widgetname, + ',quote_literal(v_tabname),' AS tabname, a.attname AS columnname, (case when a.atttypid=16 then ''check'' else ''text'' end ) as widgettype, (case when a.atttypid=16 then ''boolean'' else ''string'' end ) as "datatype", @@ -178,6 +185,81 @@ BEGIN END IF; + -- Apply multilang UI translations for info dialog fields + v_ui_lang := NULL; + v_ml_project_type := NULL; + IF to_regnamespace('multilang') IS NOT NULL THEN + v_ml_pref := multilang.gw_fct_get_multilang_language('SCHEMA_NAME'); + IF v_ml_pref IS NOT NULL THEN + v_ui_lang := v_ml_pref->>'lang'; + v_ml_project_type := v_ml_pref->>'project_type'; + END IF; + END IF; + IF v_ui_lang IS NOT NULL AND fields_array IS NOT NULL THEN + FOR aux_json IN SELECT * FROM json_array_elements(array_to_json(fields_array)) + LOOP + SELECT i.lb, i.tt INTO v_i18n_lb, v_i18n_tt + FROM multilang.config_form_fields i + WHERE i.project_type = v_ml_project_type + AND ( + i.formname = v_table_id + OR i.formname = replace(v_idname, '_id', '') + OR v_table_id LIKE i.formname + ) + AND i.formtype = 'form_feature' + AND i.tabname = COALESCE(aux_json->>'tabname', v_tabname) + AND i.source = aux_json->>'columnname' + AND i.context = 'config_form_fields' + AND i.lang = v_ui_lang + ORDER BY CASE + WHEN i.formname = v_table_id THEN 0 + WHEN i.formname = replace(v_idname, '_id', '') THEN 1 + ELSE 2 + END + LIMIT 1; + IF v_i18n_lb IS NOT NULL THEN + fields_array[(aux_json->>'orderby')::INT] := gw_fct_json_object_set_key( + fields_array[(aux_json->>'orderby')::INT], 'label', v_i18n_lb); + END IF; + IF v_i18n_tt IS NOT NULL THEN + fields_array[(aux_json->>'orderby')::INT] := gw_fct_json_object_set_key( + fields_array[(aux_json->>'orderby')::INT], 'tooltip', v_i18n_tt); + END IF; + + SELECT i."text" INTO v_i18n_widgetcontrols + FROM multilang.config_form_fields_json i + WHERE i.project_type = v_ml_project_type + AND ( + i.formname = v_table_id + OR i.formname = replace(v_idname, '_id', '') + OR v_table_id LIKE i.formname + ) + AND i.formtype = 'form_feature' + AND i.tabname = COALESCE(aux_json->>'tabname', v_tabname) + AND i.source = aux_json->>'columnname' + AND i.context = 'config_form_fields' + AND i.hint = 'widgetcontrols' + AND i.lang = v_ui_lang + ORDER BY CASE + WHEN i.formname = v_table_id THEN 0 + WHEN i.formname = replace(v_idname, '_id', '') THEN 1 + ELSE 2 + END + LIMIT 1; + IF v_i18n_widgetcontrols IS NOT NULL THEN + fields_array[(aux_json->>'orderby')::INT] := gw_fct_json_object_set_key( + fields_array[(aux_json->>'orderby')::INT], + 'widgetcontrols', + (COALESCE((fields_array[(aux_json->>'orderby')::INT]->'widgetcontrols')::jsonb, '{}'::jsonb) + || v_i18n_widgetcontrols)::json); + IF v_i18n_widgetcontrols ? 'text' THEN + fields_array[(aux_json->>'orderby')::INT] := gw_fct_json_object_set_key( + fields_array[(aux_json->>'orderby')::INT], 'value', v_i18n_widgetcontrols->>'text'); + END IF; + END IF; + END LOOP; + END IF; + -- Convert to json fields := array_to_json(fields_array); diff --git a/dbmodel/schemas/main/common/functions/fct/gw_fct_getfeatureupsert.sql b/dbmodel/schemas/main/common/functions/fct/gw_fct_getfeatureupsert.sql index 379acb2247..ea99a1f451 100644 --- a/dbmodel/schemas/main/common/functions/fct/gw_fct_getfeatureupsert.sql +++ b/dbmodel/schemas/main/common/functions/fct/gw_fct_getfeatureupsert.sql @@ -141,6 +141,12 @@ v_selected_idval text; v_errcontext text; v_querystring text; v_msgerr json; +v_ui_lang text; +v_ml_pref jsonb; +v_ml_project_type text; +v_i18n_lb text; +v_i18n_tt text; +v_i18n_widgetcontrols jsonb; v_elevation numeric(12,4); v_staticpressure numeric(12,3); label_value text; @@ -760,6 +766,7 @@ BEGIN v_querystring = concat('SELECT array_agg(row_to_json(a)) FROM (SELECT a.attname as label, a.attname as columnname, concat(',quote_literal(v_tabname),',''_'',a.attname) AS widgetname, + ',quote_literal(v_tabname),' AS tabname, (case when a.atttypid=16 then ''check'' else ''text'' end ) as widgettype, (case when a.atttypid=16 then ''boolean'' else ''string'' end ) as "datatype", ''::TEXT AS tooltip, @@ -1229,6 +1236,81 @@ BEGIN v_status = TRUE; END IF; + -- Apply multilang UI translations for info dialog fields + v_ui_lang := NULL; + v_ml_project_type := NULL; + IF to_regnamespace('multilang') IS NOT NULL THEN + v_ml_pref := multilang.gw_fct_get_multilang_language('SCHEMA_NAME'); + IF v_ml_pref IS NOT NULL THEN + v_ui_lang := v_ml_pref->>'lang'; + v_ml_project_type := v_ml_pref->>'project_type'; + END IF; + END IF; + IF v_ui_lang IS NOT NULL AND v_fields_array IS NOT NULL THEN + FOR aux_json IN SELECT * FROM json_array_elements(array_to_json(v_fields_array)) + LOOP + SELECT i.lb, i.tt INTO v_i18n_lb, v_i18n_tt + FROM multilang.config_form_fields i + WHERE i.project_type = v_ml_project_type + AND ( + i.formname = v_formname + OR i.formname = replace(v_idname, '_id', '') + OR v_formname LIKE i.formname + ) + AND i.formtype = 'form_feature' + AND i.tabname = COALESCE(aux_json->>'tabname', v_tabname) + AND i.source = aux_json->>'columnname' + AND i.context = 'config_form_fields' + AND i.lang = v_ui_lang + ORDER BY CASE + WHEN i.formname = v_formname THEN 0 + WHEN i.formname = replace(v_idname, '_id', '') THEN 1 + ELSE 2 + END + LIMIT 1; + IF v_i18n_lb IS NOT NULL THEN + v_fields_array[(aux_json->>'orderby')::INT] := gw_fct_json_object_set_key( + v_fields_array[(aux_json->>'orderby')::INT], 'label', v_i18n_lb); + END IF; + IF v_i18n_tt IS NOT NULL THEN + v_fields_array[(aux_json->>'orderby')::INT] := gw_fct_json_object_set_key( + v_fields_array[(aux_json->>'orderby')::INT], 'tooltip', v_i18n_tt); + END IF; + + SELECT i."text" INTO v_i18n_widgetcontrols + FROM multilang.config_form_fields_json i + WHERE i.project_type = v_ml_project_type + AND ( + i.formname = v_formname + OR i.formname = replace(v_idname, '_id', '') + OR v_formname LIKE i.formname + ) + AND i.formtype = 'form_feature' + AND i.tabname = COALESCE(aux_json->>'tabname', v_tabname) + AND i.source = aux_json->>'columnname' + AND i.context = 'config_form_fields' + AND i.hint = 'widgetcontrols' + AND i.lang = v_ui_lang + ORDER BY CASE + WHEN i.formname = v_formname THEN 0 + WHEN i.formname = replace(v_idname, '_id', '') THEN 1 + ELSE 2 + END + LIMIT 1; + IF v_i18n_widgetcontrols IS NOT NULL THEN + v_fields_array[(aux_json->>'orderby')::INT] := gw_fct_json_object_set_key( + v_fields_array[(aux_json->>'orderby')::INT], + 'widgetcontrols', + (COALESCE((v_fields_array[(aux_json->>'orderby')::INT]->'widgetcontrols')::jsonb, '{}'::jsonb) + || v_i18n_widgetcontrols)::json); + IF v_i18n_widgetcontrols ? 'text' THEN + v_fields_array[(aux_json->>'orderby')::INT] := gw_fct_json_object_set_key( + v_fields_array[(aux_json->>'orderby')::INT], 'value', v_i18n_widgetcontrols->>'text'); + END IF; + END IF; + END LOOP; + END IF; + -- Convert to json v_fields := array_to_json(v_fields_array); diff --git a/dbmodel/schemas/main/common/functions/fct/gw_fct_getformfields.sql b/dbmodel/schemas/main/common/functions/fct/gw_fct_getformfields.sql index c5a121c450..b12bd44c68 100644 --- a/dbmodel/schemas/main/common/functions/fct/gw_fct_getformfields.sql +++ b/dbmodel/schemas/main/common/functions/fct/gw_fct_getformfields.sql @@ -77,6 +77,13 @@ v_currency text; v_filter_widgets text = ''; v_user_roles TEXT[]; v_min_role TEXT; +v_ui_lang text; +v_ml_pref jsonb; +v_ml_project_type text; +v_i18n_lb text; +v_i18n_tt text; +v_i18n_widgetcontrols jsonb; +v_schema text; BEGIN @@ -532,6 +539,82 @@ BEGIN -- Convert to json fields := array_to_json(fields_array); + -- Apply multilang UI translations for form fields + v_schema := 'SCHEMA_NAME'; + v_ui_lang := NULL; + v_ml_project_type := NULL; + IF to_regnamespace('multilang') IS NOT NULL THEN + v_ml_pref := multilang.gw_fct_get_multilang_language('SCHEMA_NAME'); + IF v_ml_pref IS NOT NULL THEN + v_ui_lang := v_ml_pref->>'lang'; + v_ml_project_type := v_ml_pref->>'project_type'; + END IF; + END IF; + IF v_ui_lang IS NOT NULL AND fields_array IS NOT NULL THEN + FOR aux_json IN SELECT * FROM json_array_elements(array_to_json(fields_array)) + LOOP + SELECT i.lb, i.tt INTO v_i18n_lb, v_i18n_tt + FROM multilang.config_form_fields i + WHERE i.project_type = v_ml_project_type + AND ( + i.formname = p_formname + OR i.formname = replace(p_idname, '_id', '') + OR p_formname LIKE i.formname + ) + AND i.formtype = p_formtype + AND i.tabname = aux_json->>'tabname' + AND i.source = aux_json->>'columnname' + AND i.context = 'config_form_fields' + AND i.lang = v_ui_lang + ORDER BY CASE + WHEN i.formname = p_formname THEN 0 + WHEN i.formname = replace(p_idname, '_id', '') THEN 1 + ELSE 2 + END + LIMIT 1; + IF v_i18n_lb IS NOT NULL THEN + fields_array[(aux_json->>'orderby')::INT] := gw_fct_json_object_set_key( + fields_array[(aux_json->>'orderby')::INT], 'label', v_i18n_lb); + END IF; + IF v_i18n_tt IS NOT NULL THEN + fields_array[(aux_json->>'orderby')::INT] := gw_fct_json_object_set_key( + fields_array[(aux_json->>'orderby')::INT], 'tooltip', v_i18n_tt); + END IF; + + SELECT i."text" INTO v_i18n_widgetcontrols + FROM multilang.config_form_fields_json i + WHERE i.project_type = v_ml_project_type + AND ( + i.formname = p_formname + OR i.formname = replace(p_idname, '_id', '') + OR p_formname LIKE i.formname + ) + AND i.formtype = p_formtype + AND i.tabname = aux_json->>'tabname' + AND i.source = aux_json->>'columnname' + AND i.context = 'config_form_fields' + AND i.hint = 'widgetcontrols' + AND i.lang = v_ui_lang + ORDER BY CASE + WHEN i.formname = p_formname THEN 0 + WHEN i.formname = replace(p_idname, '_id', '') THEN 1 + ELSE 2 + END + LIMIT 1; + IF v_i18n_widgetcontrols IS NOT NULL THEN + fields_array[(aux_json->>'orderby')::INT] := gw_fct_json_object_set_key( + fields_array[(aux_json->>'orderby')::INT], + 'widgetcontrols', + (COALESCE((fields_array[(aux_json->>'orderby')::INT]->'widgetcontrols')::jsonb, '{}'::jsonb) + || v_i18n_widgetcontrols)::json); + IF v_i18n_widgetcontrols ? 'text' THEN + fields_array[(aux_json->>'orderby')::INT] := gw_fct_json_object_set_key( + fields_array[(aux_json->>'orderby')::INT], 'value', v_i18n_widgetcontrols->>'text'); + END IF; + END IF; + END LOOP; + END IF; + PERFORM gw_fct_debug(concat('{"data":{"msg":"<---- OUTPUT FOR gw_fct_getformfields: ", "variables":""}}')::json); -- Return diff --git a/dbmodel/schemas/main/common/functions/fct/gw_fct_getmessage.sql b/dbmodel/schemas/main/common/functions/fct/gw_fct_getmessage.sql index 5c71a2cf25..f6a977ba49 100644 --- a/dbmodel/schemas/main/common/functions/fct/gw_fct_getmessage.sql +++ b/dbmodel/schemas/main/common/functions/fct/gw_fct_getmessage.sql @@ -67,6 +67,13 @@ v_fcount integer; v_table_id text; v_column_id text; v_cur_user text; +v_ui_lang text; +v_ml_pref jsonb; +v_ml_project_type text; +v_i18n_ms text; +v_i18n_ht text; +v_i18n_ds text; +v_schema text; BEGIN @@ -184,6 +191,33 @@ BEGIN RETURN json_build_object('status', 'Failed', 'message', json_build_object('level', 1, 'text', 'The process has returned an error code, but this error code is not present on the sys_message table. Please contact with your system administrator in order to update your sys_message table'))::json; END IF; + -- Apply multilang UI translations for sys_message + v_schema := 'SCHEMA_NAME'; + v_ui_lang := NULL; + v_ml_project_type := NULL; + IF to_regnamespace('multilang') IS NOT NULL THEN + v_ml_pref := multilang.gw_fct_get_multilang_language('SCHEMA_NAME'); + IF v_ml_pref IS NOT NULL THEN + v_ui_lang := v_ml_pref->>'lang'; + v_ml_project_type := v_ml_pref->>'project_type'; + END IF; + END IF; + IF v_ui_lang IS NOT NULL THEN + SELECT i.ms, i.ht INTO v_i18n_ms, v_i18n_ht + FROM multilang.sys_message i + WHERE i.project_type = v_ml_project_type + AND i.context = 'sys_message' + AND i.source = v_message_id::text + AND i.lang = v_ui_lang + LIMIT 1; + IF v_i18n_ms IS NOT NULL THEN + rec_cat_error.error_message = v_i18n_ms; + END IF; + IF v_i18n_ht IS NOT NULL THEN + rec_cat_error.hint_message = v_i18n_ht; + END IF; + END IF; + IF rec_cat_error.message_type != 'UI' OR rec_cat_error.message_type IS NULL THEN SELECT * INTO rec_function FROM sys_function WHERE sys_function.id=v_function_id; @@ -191,6 +225,19 @@ BEGIN IF rec_function IS NULL THEN RETURN json_build_object('status', 'Failed', 'message', json_build_object('level', 1, 'text', 'Function does not exist'))::json; END IF; + + IF v_ui_lang IS NOT NULL THEN + SELECT i.ds INTO v_i18n_ds + FROM multilang.sys_function i + WHERE i.project_type = v_ml_project_type + AND i.context = 'sys_function' + AND i.source = v_function_id::text + AND i.lang = v_ui_lang + LIMIT 1; + IF v_i18n_ds IS NOT NULL THEN + rec_function.descript = v_i18n_ds; + END IF; + END IF; END IF; -- compare parameters in message with parameters recieved diff --git a/dbmodel/schemas/main/common/functions/fct/gw_fct_infofromid.sql b/dbmodel/schemas/main/common/functions/fct/gw_fct_infofromid.sql index 94eb7ceb57..84faa1cd72 100644 --- a/dbmodel/schemas/main/common/functions/fct/gw_fct_infofromid.sql +++ b/dbmodel/schemas/main/common/functions/fct/gw_fct_infofromid.sql @@ -163,6 +163,12 @@ v_order_id integer; v_flwreg_type text; v_arc_searchnodes double precision; v_talblenameorigin text; +v_ui_lang text; +v_ml_pref jsonb; +v_ml_project_type text; +v_i18n_lb text; +v_i18n_tt text; +v_tab_idx integer; BEGIN @@ -637,6 +643,37 @@ BEGIN EXECUTE v_querystring INTO form_tabs; + -- Apply multilang UI translations for config_form_tabs + v_ui_lang := NULL; + v_ml_project_type := NULL; + IF to_regnamespace('multilang') IS NOT NULL THEN + v_ml_pref := multilang.gw_fct_get_multilang_language('SCHEMA_NAME'); + IF v_ml_pref IS NOT NULL THEN + v_ui_lang := v_ml_pref->>'lang'; + v_ml_project_type := v_ml_pref->>'project_type'; + END IF; + END IF; + IF v_ui_lang IS NOT NULL AND form_tabs IS NOT NULL THEN + FOR v_tab_idx IN 1..array_length(form_tabs, 1) LOOP + SELECT i.lb, i.tt INTO v_i18n_lb, v_i18n_tt + FROM multilang.config_form_tabs i + WHERE i.project_type = v_ml_project_type + AND i.formname = form_tabs[v_tab_idx]->>'formname' + AND i.source = form_tabs[v_tab_idx]->>'tabName' + AND i.context = 'config_form_tabs' + AND i.lang = v_ui_lang + LIMIT 1; + IF v_i18n_lb IS NOT NULL THEN + form_tabs[v_tab_idx] := gw_fct_json_object_set_key( + form_tabs[v_tab_idx], 'tabLabel', v_i18n_lb); + END IF; + IF v_i18n_tt IS NOT NULL THEN + form_tabs[v_tab_idx] := gw_fct_json_object_set_key( + form_tabs[v_tab_idx], 'tooltip', v_i18n_tt); + END IF; + END LOOP; + END IF; + if v_tablename_aux is not null then v_tablename = v_tablename_aux; end if; diff --git a/dbmodel/schemas/main/common/updates/4/15/0/patch.sql b/dbmodel/schemas/main/common/updates/4/15/0/patch.sql index f36424881f..5c2a94af69 100644 --- a/dbmodel/schemas/main/common/updates/4/15/0/patch.sql +++ b/dbmodel/schemas/main/common/updates/4/15/0/patch.sql @@ -177,7 +177,18 @@ INSERT INTO sys_param_user (id, formname, descript, sys_role, idval, "label", dv VALUES ('utils_language_ui', 'hidden', 'UI language for database messages when multilang schema is enabled', 'role_basic', NULL, 'UI language', NULL, NULL, false, NULL, 'utils', false, NULL, NULL, NULL, false, 'json', 'linetext', false, NULL, '{"lang":"en_US"}', NULL, false, NULL, NULL, NULL, NULL, 'core') ON CONFLICT (id) DO NOTHING; -DO $patch$ +INSERT INTO config_param_user (parameter, value, cur_user) +VALUES ('utils_language_ui', '{"status":true, "lang":"en_US"}', current_user) +ON CONFLICT (parameter, cur_user) DO NOTHING; + +DO $patch$ +BEGIN + IF to_regprocedure('gw_fct_get_utils_language_ui()') IS NOT NULL THEN + ALTER FUNCTION gw_fct_get_utils_language_ui() VOLATILE; + END IF; +END $patch$; + +DO $patch$ DECLARE v_utils boolean; BEGIN @@ -288,4 +299,4 @@ SET value = ( FROM json_each(value::json) AS e(key, val) ), descript = 'Auto-fill sys_code on insert per feature type: uuid (random UUID), code (copy from code), none (disabled). Legacy true/false values are still supported.' -WHERE parameter = 'edit_sys_code_autofill'; \ No newline at end of file +WHERE parameter = 'edit_sys_code_autofill'; diff --git a/i18n/giswater_en_US.qm b/i18n/giswater_en_US.qm index 0f886b4c42..883fa7a9ed 100644 Binary files a/i18n/giswater_en_US.qm and b/i18n/giswater_en_US.qm differ diff --git a/i18n/giswater_en_US.ts b/i18n/giswater_en_US.ts index 66adc18d91..313ebf18ab 100644 --- a/i18n/giswater_en_US.ts +++ b/i18n/giswater_en_US.ts @@ -1,25148 +1,25148 @@ - - - - - - giswater - - 18_text - Commercial connection - - - 19_text - Topo tools - - - 24_text - Go2EPA express - - - 301_text - Annual planner - - - 302_text - Monthly planner - - - 303_text - Prices generator - - - 304_text - Add visit - - - 305_text - Unit Planner - - - 309_text - Incident manager - - - 36_text - Giswater - - - 38_text - New network cost - - - 47_text - Psector selector - - - 74_text - Add new lot - - - 75_text - Lot manager - - - 76_text - Lot filter - - - 81_text - New psector - - - 82_text - Psector manager - - - 98_text - Config editor - - - Actions - Actions - - - Add drain GPKG project - Add drain GPKG project - - - Additional demand check - Additional demand check - - - Advanced - Advanced - - - AmBreakage - Administrative tool - - - AmPriority - Priority selection and Calculation - - - Analytics - Analytics - - - ARC - Arc - - - Breakdown Assignation - Breakdown Assignation - - - Calibration - Calibration - - - Closest arcs - Closest arcs - - - CONNEC - Connec - - - DRAG-DROP - Drag-Drop - - - Dscenario - Dscenario - - - DWF scenario - DWF scenario - - - Emitter calibration - Emitter calibration - - - EPA multi calls - EPA multi calls - - - Export - Export - - - Fast print - Fast print - - - Forced arcs - Forced arcs - - - Forced arcs (selecting only arcs) - Forced arcs (selecting only arcs) - - - Get help - Get help - - - Go2IBER - Go2IBER - - - GULLY - Gully - - - GwAddCampaignButton - Add Campaign - - - GwAddChildLayerButton - Load Giswater layer - - - GwAddLotButton - Add Lot - - - GwAmBreakageButton - Administrative tool - - - GwAmPriorityButton - Priority Calculation by Selection - - - GwArcAddButton - Insert arc - - - GwArcDivideButton - Arc divide - - - GwArcFusionButton - Arc fusion - - - GwAuxCircleAddButton - Create circle - - - GwAuxPointAddButton - Create point - - - GwConfigButton - Config - - - GwConnectLinkButton - Connect to network - - - GwCSVButton - Import CSV - - - GwDateSelectorButton - Date selector - - - GwDimensioningButton - Dimensioning - - - GwDocumentButton - Add document - - - GwDocumentManagerButton - Document manager - - - GwDscenarioManagerButton - Dscenario manager - - - GwElementButton - Add element - - - GwElementManagerButton - Element manager - - - GwEpaTools - EPA tools - - - GwFeatureDeleteButton - Delete feature - - - GwFeatureEndButton - End feature - - - GwFeatureReplaceButton - Replace feature - - - GwFeatureTypeChangeButton - Change object type - - - GwFlowExitButton - Flow exit - - - GwFlowTraceButton - Flow trace - - - GwGo2EpaButton - Go2EPA - - - GwGo2EpaManagerButton - EPA result manager - - - GwGo2EpaSelectorButton - EPA result selector - - - GwInfoButton - Info Giswater - - - GwLayerStyleChangeButton - Giswater styles - - - GwLotResourceManagementButton - Lot resource management - - - GwManageCampaignLotButton - Manage campaign lot - - - GwMincutButton - New mincut - - - GwMincutManagerButton - Mincut management - - - GwNetscenarioManagerButton - Netscenario manager - - - GwNonVisualManagerButton - Non-Visual objects manager - - - GwPointAddButton - Insert point - - - GwPriceManagerButton - Network cost manager - - - GwPrintButton - Print - - - GwProfileButton - Profile tool - - - GwProjectCheckButton - Check project - - - GwPsectorButton - New psector - - - GwPsectorManagerButton - Psector manager - - - GwResultManagerButton - Result manager - - - GwResultSelectorButton - Result selector - - - GwSearchButton - Search plus - - - GwSelectorButton - Selectors - - - GwSnapshotViewButton - Snapshot view - - - GwToolBoxButton - Toolbox - - - GwUtilsManagerButton - Utils manager - - - GwVisitButton - Add visit - - - GwVisitManagerButton - Visit manager - - - GwWorkspaceManagerButton - Workspace manager - - - Hydrology scenario - Hydrology scenario - - - Import - Import - - - Import CSV - Import CSV - - - Import INP file - Import INP file - - - Manage Campaign - Manage Campaign - - - Manage Campaign - Manage Campaign - - - Manage Lot - Manage Lot - - - Manage Lot - Manage Lot - - - Manage Workorder - Manage Workorder - - - Mapzones manager - Mapzones manager - - - Massive composer - Massive composer - - - menu_name - Giswater - - - Multi psector print - Multi psector print - - - NODE - Node - - - Open plugin folder - Open plugin folder - - - Open user folder - Open user folder - - - Priority Calculation (Global) - Priority Calculation (Global) - - - Quantized demands - Quantized demands - - - Reset dialogs - Reset dialogs - - - Reset plugin - Reset plugin - - - ResultManager - Result manager - - - ResultSelector - Result selector - - - Review - Review - - - SELECT - Select - - - Show current selectors - Show current selectors - - - Static calibration - Static calibration - - - Style manager - Style manager - - - Toggle Log DB - Toggle Log DB - - - toolbar_am_name - Giswater - Asset Manager - - - toolbar_basic_name - Giswater - Basic - - - toolbar_cm_name - Giswater - Campaign Manager - - - toolbar_custom_name - Giswater - Custom - - - toolbar_edit_name - Giswater - Edit - - - toolbar_epa_name - Giswater - Epa - - - toolbar_om_name - Giswater - O&M - - - toolbar_plan_name - Giswater - Masterplan - - - toolbar_utilities_name - Giswater - Utilities - - - Valve operation check - Valve operation check - - - Visit - Visit - - - Workcat manager - Workcat manager - - - - - giswater - - - - - - - - - - } - } - - - {0} - {0} - - - {0} --> {1} - {0} --> {1} - - - {0}: {1} - {0}: {1} - - - {0} --> {1} --> {2} - {0} --> {1} --> {2} - - - {0} ({1}) - {2} - Updating {3}... - {0} ({1}) - {2} - Updating {3}... - - - {0}: {1} Python function: tools_gw.set_widgets. WHERE columname='{2}' AND widgetname='{3}' AND widgettype='{4}' - {0}: {1} Python function: tools_gw.set_widgets. WHERE columname='{2}' AND widgetname='{3}' AND widgettype='{4}' - - - {0} ({1}) - python - Updating python files... - {0} ({1}) - python - Updating python files... - - - {0}: {1}. widgetname='{2}' AND widgettype='{3}' - {0}: {1}. widgetname='{2}' AND widgettype='{3}' - - - {0} campaign(s) deleted. - {0} campaign(s) deleted. - - - {0} campaign(s) deleted. - {0} campaign(s) deleted. - - - {0}: Config file is not set - {0}: Config file is not set - - - "{0}" does not exist. Please select a valid config file. - "{0}" does not exist. Please select a valid config file. - - - "{0}" does not exist. Please select a valid folder. - "{0}" does not exist. Please select a valid folder. - - - {0} error {1} - {0} error {1} - - - {0} error: {1} - {0} error: {1} - - - {0} exception: {1} - {0} exception: {1} - - - {0} Exception: {1} - {0} Exception: {1} - - - {0} exception [{1}]: {2} - {0} exception [{1}]: {2} - - - {0} folder not found - {0} folder not found - - - {0} folder not found, executing en_US folder - {0} folder not found, executing en_US folder - - - {0} id: - {0} id: - - - {0} is not a table name or {1} - {0} is not a table name or {1} - - - {0} is not defined in table cat_feature - {0} is not defined in table cat_feature - - - {0} lot(s) deleted. - {0} lot(s) deleted. - - - {0} lot(s) deleted. - {0} lot(s) deleted. - - - {0}: project type '{1}' not supported - {0}: project type '{1}' not supported - - - {0}: Reference {1} = '{2}' it is not managed - {0}: Reference {1} = '{2}' it is not managed - - - {0} successfully saved. - {0} successfully saved. - - - {0} task is already active! - {0} task is already active! - - - {0}: widget not found - {0}: widget not found - - - {0} workorder(s) deleted. - {0} workorder(s) deleted. - - - {0} workorder(s) deleted. - {0} workorder(s) deleted. - - - {1} - {1} - - - {2} - {2} - - - Action has no function!! - Action has no function!! - - - Activate water netowrk snapshot - Activate water netowrk snapshot - - - Add document - Add document - - - Added elevation data from raster to all nodes - Added elevation data from raster to all nodes - - - Added grade attributes to all edges - Added grade attributes to all edges - - - Added length attributes to graph edges - Added length attributes to graph edges - - - Add layers to schema - Add layers to schema - - - ADDRESS - ADDRESS - - - Add translator - Add translator - - - Add translator ({0}) - Add translator ({0}) - - - A diameter value is considered invalid if it is zero, negative, NULL or greater than the maximum diameter in the configuration table. As a result, these pipes will NOT be assigned a priority value. - A diameter value is considered invalid if it is zero, negative, NULL or greater than the maximum diameter in the configuration table. As a result, these pipes will NOT be assigned a priority value. - - - Administrative tools - Administrative tools - - - Adress configuration. Field not found - Adress configuration. Field not found - - - Advanced Menu - Advanced Menu - - - Alert - Alert - - - All dialogs updated correctly - All dialogs updated correctly - - - All edges must have 'length' and 'speed_kph' attributes. - All edges must have 'length' and 'speed_kph' attributes. - - - All layers have been successfully refreshed. - All layers have been successfully refreshed. - - - All messages updated correctly - All messages updated correctly - - - All the values in the column 'atlas_id' from the table 'plan_psector' have to be INTEGER. This is not the case for your table, please fix this before continuing. - All the values in the column 'atlas_id' from the table 'plan_psector' have to be INTEGER. This is not the case for your table, please fix this before continuing. - - - A material is considered invalid if it is not listed in the material configuration table. - A material is considered invalid if it is not listed in the material configuration table. - - - ANALYTICS - ANALYTICS - - - An arccat_id is considered invalid if it is not listed in the catalog configuration table. As a result, these pipes will NOT be assigned a priority value. - An arccat_id is considered invalid if it is not listed in the catalog configuration table. As a result, these pipes will NOT be assigned a priority value. - - - An error occurred saving the workorder. - An error occurred saving the workorder. - - - An error occurred while adding the style for layer '{0}': - An error occurred while adding the style for layer '{0}': - - - An error occurred while adding the style for layer '{0}':\n{1} - An error occurred while adding the style for layer '{0}':\n{1} - - - A new style has been added to '{0}' for the layer '{1}' using the 'GwBasic' style information. - A new style has been added to '{0}' for the layer '{1}' using the 'GwBasic' style information. - - - A new style has been added to '{0}' for the layer '{1}' using the 'GwBasic' style information.\nYou can change it and use 'Update Style' to create a personalized version. - A new style has been added to '{0}' for the layer '{1}' using the 'GwBasic' style information.\nYou can change it and use 'Update Style' to create a personalized version. - - - Any connec_id found with this customer_code - Any connec_id found with this customer_code - - - Any document selected - Any document selected - - - Any of the snapped features belong to selected layer - Any of the snapped features belong to selected layer - - - Any record found - Any record found - - - Any record found for current user in table - Any record found for current user in table - - - Any record found in table 'cat_node' related with selected 'node_type.type' - Any record found in table 'cat_node' related with selected 'node_type.type' - - - Any record found in table 'node_type' related with selected 'node_type.type' - Any record found in table 'node_type' related with selected 'node_type.type' - - - Any record selected - Any record selected - - - Any table has been selected - Any table has been selected - - - Applied styles for context - Applied styles for context - - - Arc - Arc - - - ARC - ARC - - - Arc fusion - Arc fusion - - - Are you sure to execute vacuum on selected schema? - Are you sure to execute vacuum on selected schema? - - - Are you sure to save this feature? - Are you sure to save this feature? - - - Are you sure to update the project schema to last version? - Are you sure to update the project schema to last version? - - - Are you sure you want delete schema '{0}'? - Are you sure you want delete schema '{0}'? - - - Are you sure you want to assign team '{0}' to {1} selected user(s)? - Are you sure you want to assign team '{0}' to {1} selected user(s)? - - - Are you sure you want to cancel these mincuts? - Are you sure you want to cancel these mincuts? - - - Are you sure you want to continue? - Are you sure you want to continue? - - - Are you sure you want to delete {0} campaign(s)? - Are you sure you want to delete {0} campaign(s)? - - - Are you sure you want to delete {0} campaign(s)? - Are you sure you want to delete {0} campaign(s)? - - - Are you sure you want to delete {0} lot(s)? - Are you sure you want to delete {0} lot(s)? - - - Are you sure you want to delete {0} lot(s)? - Are you sure you want to delete {0} lot(s)? - - - Are you sure you want to delete {0} workorder(s)? - Are you sure you want to delete {0} workorder(s)? - - - Are you sure you want to delete {0} workorder(s)? - Are you sure you want to delete {0} workorder(s)? - - - Are you sure you want to delete the selected styles? - Are you sure you want to delete the selected styles? - - - Are you sure you want to delete these mincuts? - Are you sure you want to delete these mincuts? - - - Are you sure you want to delete these profile? - Are you sure you want to delete these profile? - - - Are you sure you want to delete these records: - Are you sure you want to delete these records: - - - Are you sure you want to delete these records: - Are you sure you want to delete these records: - - - Are you sure you want to delete these records? - Are you sure you want to delete these records? - - - Are you sure you want to delete these records?\nSome events have documents - Are you sure you want to delete these records?\Some events have documents - - - Are you sure you want to delete the style group '{0}'? - Are you sure you want to delete the style group '{0}'? - - - Are you sure you want to delete the style group '{0}'?\n\nThis will also delete all related entries in the sys_style table.Confirm Cascade Delete - Are you sure you want to delete the style group '{0}'?\n\nThis will also delete all related entries in the sys_style table.Confirm Cascade Delete - - - Are you sure you want to disconnect this elements? - Are you sure you want to disconnect this elements? - - - Are you sure you want to override the configuration of this workspace? - Are you sure you want to override the configuration of this workspace? - - - Are you sure you want to overwrite this file? - Are you sure you want to overwrite this file? - - - Are you sure you want to overwrite this folder? - Are you sure you want to overwrite this folder? - - - ARE YOU SURE YOU WANT TO PROCEED? - ARE YOU SURE YOU WANT TO PROCEED? - - - Are you sure you want to remove team assignment from {0} selected user(s)? - Are you sure you want to remove team assignment from {0} selected user(s)? - - - Are you sure you want to replace selected feature with a new one? - Are you sure you want to replace selected feature with a new one? - - - Are you sure you want to replace selected feature with a new one?\n If you have different addfields in your feature, they will be deleted. - Are you sure you want to replace selected feature with a new one?\n If you have different addfields in your feature, they will be deleted. - - - Are you sure you want to update the data? - Are you sure you want to update the data? - - - Are you sure you want to update the style of {0} ({1}) with the symbology of the layer in the project? - Are you sure you want to update the style of {0} ({1}) with the symbology of the layer in the project? - - - Are you sure you want to update the style of {0} ({1}) with the symbology of the layer in the project? \nYou are going to lose previous information! - Are you sure you want to update the style of {0} ({1}) with the symbology of the layer in the project? \nYou are going to lose previous information! - - - A rollback on schema will be done. - A rollback on schema will be done. - - - As a result, the material of these pipes will be treated as the configured unknown material, {0}. - As a result, the material of these pipes will be treated as the configured unknown material, {0}. - - - As a result, the material of these pipes will be treated as the configured unknown material, {unknown_material}. - As a result, the material of these pipes will be treated as the configured unknown material, {unknown_material}. - - - Assigning leaks to pipes - Assigning leaks to pipes - - - Assign Team - Assign Team - - - A style already exists for the layer '{0}' in the selected style group. - A style already exists for the layer '{0}' in the selected style group. - - - Atlas ID must be an integer. - Atlas ID must be an integer. - - - author = {Boeing, Geoff}, - author = {Boeing, Geoff}, - - - AUXILIAR - AUXILIAR - - - BASEMAP - BASEMAP - - - Begin plotting the graph... - Begin plotting the graph... - - - Begin topologically simplifying the graph... - Begin topologically simplifying the graph... - - - Boeing, G. (2024). Modeling and Analyzing Urban Networks and Amenities with OSMnx. Working paper. https://geoffboeing.com/publications/osmnx-paper/ - Boeing, G. (2024). Modeling and Analyzing Urban Networks and Amenities with OSMnx. Working paper. https://geoffboeing.com/publications/osmnx-paper/ - - - Boundaries must be a Polygon or MultiPolygon. If you requested `features_from_place`, ensure your query geocodes to a Polygon or MultiPolygon. See the documentation for details. - Boundaries must be a Polygon or MultiPolygon. If you requested `features_from_place`, ensure your query geocodes to a Polygon or MultiPolygon. See the documentation for details. - - - Calculate Priority - Calculate Priority - - - Calculating values - Calculating values - - - Campaign ID is missing. - Campaign ID is missing. - - - Campaign ID not found. - Campaign ID not found. - - - Campaign saved successfully. - Campaign saved successfully. - - - Campaign saved successfully. - Campaign saved successfully. - - - Canceling task... - Canceling task... - - - Cancel mincut - Cancel mincut - - - Cancel mincuts - Cancel mincuts - - - Cannot create file - Cannot create file, check if its open - - - Cannot create file, check if its open - Cannot create file, check if its open - - - Cannot create file, check if selected composer is the correct composer - Cannot create file, check if selected composer is the correct composer - - - Cannot create file, check if selected giswater_advancedtools is the correct giswater_advancedtools - Cannot create file, check if selected giswater_advancedtools is the correct giswater_advancedtools - - - Cannot get current Java version from windows registry - Cannot get current Java version from Windows registry - - - Cannot get giswater build version from windows registry - Cannot get giswater build version from Windows registry - - - Cannot get giswater folder from windows registry - Cannot get giswater folder from windows registry - - - Cannot get giswater major version from windows registry - Cannot get giswater major version from windows registry - - - Cannot get giswater minor version from windows registry - Cannot get giswater minor version from windows registry - - - Cannot get Java folder from windows registry - Cannot get Java folder from Windows registry - - - Cannot set inactive a current scenario. Please update current first. - Cannot set inactive a current scenario. Please update current first. - - - Cannot set the current {0} scenario of an inactive scenario. Please activate it first. - Cannot set the current {0} scenario of an inactive scenario. Please activate it first. - - - Cannot set the current netscenario of an inactive scenario. Please activate it first. - Cannot set the current netscenario of an inactive scenario. Please activate it first. - - - Cannot set the current psector of an inactive scenario. Please activate it first. - Cannot set the current psector of an inactive scenario. Please activate it first. - - - Can't create curve with only one value if flow is 0. Add more values or change the flow value. - Can't create curve with only one value if flow is 0. Add more values or change the flow value. - - - CATALOGS - CATALOGS - - - Category name already exists - Category name already exists - - - Category name cannot be empty. - Category name cannot be empty. - - - Category updated successfully! - Category updated successfully! - - - CAUTION! Deleting a dscenario will delete data from features related to the dscenario. - CAUTION! Deleting a dscenario will delete data from features related to the dscenario. - - - CAUTION! Deleting a dscenario will delete data from features related to the dscenario.\nAre you sure you want to delete these records? - CAUTION! Deleting a dscenario will delete data from features related to the dscenario.\nAre you sure you want to delete these records? - - - CAUTION! Deleting a netscenario will delete data from features related to the netscenario. - CAUTION! Deleting a netscenario will delete data from features related to the netscenario. - - - CAUTION! Deleting a netscenario will delete data from features related to the netscenario.\nAre you sure you want to delete these records? - CAUTION! Deleting a netscenario will delete data from features related to the netscenario.\nAre you sure you want to delete these records? - - - Change epa_type - Change epa_type - - - Changes applied to "{0}" successfully. - Changes applied to "{0}" successfully. - - - Changes on this page are dangerous and can break Giswater plugin in various ways. - Changes on this page are dangerous and can break Giswater plugin in various ways. - - - Changes on this page are dangerous and can break Giswater plugin in various ways. \nYou will need to restart QGIS or reload Giswater plugin to apply changes. Do you want continue? - Changes on this page are dangerous and can break Giswater plugin in various ways. \nYou will need to restart QGIS or reload Giswater plugin to apply changes. Do you want continue? - - - Check fields from table or view - Check fields from table or view - - - Checking any item will not uncheck any other item. - Checking any item will not uncheck any other item. - - - Checking any item will uncheck all other items. - Checking any item will uncheck all other items. - - - Checking any item will uncheck all other items unless Shift is pressed. - Checking any item will uncheck all other items unless Shift is pressed. - - - Choose dscenario - Choose dscenario - - - Clicking an item will check/uncheck it. - Clicking an item will check/uncheck it. - - - Click on 2 places on the map - Click on 2 places on the map, creating a line, then set the location of a point - - - Click on 2 places on the map, creating a line, then set a location of a point - Click on 2 places on the map, creating a line, then set a location of a point - - - Click on 2 places on the map, creating a line, then set the location of a point - Click on 2 places on the map, creating a line, then set the location of a point - - - Click on a feature to set mincut location and start the process - Click on a feature to set mincut location and start the process - - - Click on arcs to select them. Use Alt+click to unselect selected arcs. - Click on arcs to select them. Use Alt+click to unselect selected arcs. - - - Click on disconnected node - Click on disconnected node, move the pointer to the desired location on pipe to break it - - - Click on disconnected node, move the pointer to the desired location on pipe to break it - Click on disconnected node, move the pointer to the desired location on pipe to break it - - - Click on feature or any place on the map and set a radius of a circle - Click on feature or any place on the map and set a radius of a circle - - - Click on feature or any place on the map and set radius of a circle - Click on feature or any place on the map and set radius of a circle - - - Click on feature to replace it with a new one. You can select other layer to snapp diferent feature type. - Click on feature to replace it with a new one. You can select other layer to snap to a different feature type. - - - Click on node - Click on node, that joins two pipes, in order to remove it and merge pipes - - - Click on node, that joins two pipes, in order to remove it - Click on node, that joins two pipes, in order to remove it - - - Click on node, that joins two pipes, in order to remove it and merge pipes - Click on node, that joins two pipes, in order to remove it and merge pipes - - - Click on node to change it's type - Click on node to change it's type - - - Click on node to computed its downstream network - Click on node to computed its downstream network - - - Click on node to computed its upstream network - Click on node to computed its upstream network - - - Click on the object to change its class - Click on the object to change its class - - - Close - Close - - - Column name already exists. - Column name already exists. - - - Column name and Label fields are mandatory. Please set correct value. - Column name and Label fields are mandatory. Please set correct value. - - - Column not found - Column not found - - - _compare failed in ControlBase because - _compare failed in ControlBase because - - - Completed with no exception and no result - Completed with no exception and no result - - - Compliance Grade - Compliance Grade - - - Compliance value must be between 0 and 10 inclusive. - Compliance value must be between 0 and 10 inclusive. - - - Composer template not found. Name should be - Composer template not found. Name should be - - - Composer 'ud_profile' created - Composer 'ud_profile' created - - - Conexión - Connec - - - Config database file not found - Config database file not found - - - Config file not found at - Config file not found at - - - ConfigLayerFields task is already active! - ConfigLayerFields task is already active! - - - Configuration file couldn't be imported: - Configuration file couldn't be imported: - - - Configuration file couldn't be imported:\n{0} - Configuration file couldn't be imported:\n{0} - - - Configuration file not found, please make sure it is located in the correct directory and try again - Configuration file not found, please make sure it is located in the correct directory and try again - - - Configuration loaded successfully - Configuration loaded successfully - - - Configuration saved to {0} - Configuration saved to {0} - - - Confirm Deletion - Confirm Deletion - - - CONNEC - CONNEC - - - Connected to {0} - Connected to {0} - - - Connection '{0}' not found in the file '{1}' - Connection '{0}' not found in the file '{1}' - - - Connection '{0}' not found in the file '{1}'. Trying in '{2}'... - Connection '{0}' not found in the file '{1}'. Trying in '{2}'... - - - Connection Failed. Please - Connection Failed. Please, check connection parameters - - - Connection Failed. Please, check connection parameters - Connection Failed. Please, check connection parameters - - - Connect link task is already active! - Connect link task is already active! - - - Constructed place geometry polygon(s) to query Overpass - Constructed place geometry polygon(s) to query Overpass - - - Context - Context - - - Converted MultiDiGraph to DiGraph - Converted MultiDiGraph to DiGraph - - - Converted MultiDiGraph to undirected MultiGraph - Converted MultiDiGraph to undirected MultiGraph - - - Converting node, edge, and graph-level attribute data types - Converting node, edge, and graph-level attribute data types - - - Could not determine a valid role for team '{0}'. - Could not determine a valid role for team '{0}'. - - - Could not determine event point coordinates - Could not determine event point coordinates - - - Could not find an ID for the style group '{0}'. - Could not find an ID for the style group '{0}'. - - - Could not find config_style ID for idval '{0}'. - Could not find config_style ID for idval '{0}'. - - - Could not find the corresponding ID for the selected style {0}. - Could not find the corresponding ID for the selected style {0}. - - - Could not find the original user to update. - Could not find the original user to update. - - - Could not get feature ID from snapped point - Could not get feature ID from snapped point - - - Could not load EPA Results layers - Could not load EPA Results layers - - - Could not retrieve feature from layer - Could not retrieve feature from layer - - - Couldn't add group. - Couldn't add group. - - - Couldn't draw profile. You may need to select another exploitation. - Couldn't draw profile. You may need to select another exploitation. - - - Couldn't find layer to zoom to - Couldn't find layer to zoom to - - - Couldn't import scipy/numpy so the graph can't be shown. Please install it manually or try with another QGIS version - Couldn't import scipy/numpy so the graph can't be shown. Please install it manually or try with another QGIS version - - - Couldn't import swmm_api package. Try to reload the Giswater plugin. If the issue persists restart QGIS. - Couldn't import swmm_api package. Try to reload the Giswater plugin. If the issue persists restart QGIS. - - - Counted undirected street segments incident on each node - Counted undirected street segments incident on each node - - - Create {0} schema - Create {0} schema - - - Create base schema - Create base schema - - - Created edges GeoDataFrame from graph - Created edges GeoDataFrame from graph - - - Created graph from node/edge GeoDataFrames - Created graph from node/edge GeoDataFrames - - - Created nodes GeoDataFrame from graph - Created nodes GeoDataFrame from graph - - - Create example - Create example - - - Create parent schema - Create parent schema - - - Create {project} schema - Create {project} schema - - - Create schema of type '{0}': '{1}' - Create schema of type '{0}': '{1}' - - - Creating GIS file... {0} - Creating GIS file... {0} - - - Creating parser for file: {0} - Creating parser for file: {0} - - - Creating user config folder - Creating user config folder - - - Creating user config folder: {0} - Creating user config folder: {0} - - - Credentials will be stored in GIS project file - Credentials will be stored in GIS project file - - - Credentials will be stored in GIS project file. Do you want to continue? - Credentials will be stored in GIS project file. Do you want to continue? - - - Credentials will be stored in the GIS project file as plain text, and will apply to both existing and future layers. Do you want to proceed? - Credentials will be stored in the GIS project file as plain text, and will apply to both existing and future layers. Do you want to proceed? - - - CRITICAL ERROR in update_expl_sector_combos - CRITICAL ERROR in update_expl_sector_combos - - - CSV not generated. Check fields from table or view - CSV not generated. Check fields from table or view - - - Current feature has state '{0}'. Therefore it is not fusionable - Current feature has state '{0}'. Therefore it is not fusionable - - - Current feature has state '{0}'. Therefore it is not replaceable - Current feature has state '{0}'. Therefore it is not replaceable - - - Current feature is planified. You should activate plan mode to work with it. - Current feature is planified. You should activate plan mode to work with it. - - - Current layer not valid - Current layer not valid - - - Current node is not located over an arc. Please - Current node is not located over an arc. Please, select option 'DRAG-DROP' - - - Current node is not located over an arc. Please, select option 'DRAG-DROP' - Current node is not located over an arc. Please, select option 'DRAG-DROP' - - - Current psector - Current psector - - - Current psector: {1} - Current psector: {1} - - - Current user does not have 'plan_psector_current'. Value of current psector will be inserted. - Current user does not have 'plan_psector_current'. Value of current psector will be inserted. - - - Custom mincut executed successfully - Custom mincut executed successfully - - - Database connection error: {0} - Database connection error: {0} - - - Database connection error ({0 }): {1} - Database connection error ({0 }): {1} - - - Database connection error (PgDao). Please open plugin log file to get more details - Database connection error (PgDao). Please open plugin log file to get more details - - - Database connection error. Please check your connection parameters. - Database connection error. Please check your connection parameters. - - - Database connection error. Please open plugin log file to get more details - Database connection error. Please open plugin log file to get more details - - - Database connection error (psycopg2). Please open plugin log file to get more details - Database connection error (psycopg2). Please open plugin log file to get more details - - - Database connection error (QSqlDatabase). Please open plugin log file to get more details - Database connection error (QSqlDatabase). Please open plugin log file to get more details - - - Database connection reset, please try again - Database connection reset, please try again - - - Database connection was closed and reconnected - Database connection was closed and reconnected - - - Database error - Database error - - - Database Error - Database Error - - - Database execution failed - Database execution failed - - - Database name contains special characters that are not supported - Database name contains special characters that are not supported - - - Database returned null. Check postgres function '{0}' - Database returned null. Check postgres function '{0}' - - - Database translation canceled. - Database translation canceled. - - - Database translation failed. - Database translation failed. - - - Database translation successful to - Database translation successful to - - - Data insertion completed: {0} successful, {1} errors. - Data insertion completed: {0} successful, {1} errors. - - - Data is ok. You can try to generate the INP file - Data is ok. You can try to generate the INP file - - - Data retrieved and displayed successfully. - Data retrieved and displayed successfully. - - - Date - Date - - - Date from: - Date from: - - - Date interval not valid! - Date interval not valid! - - - Date of creation - Date of creation - - - Date of creation: {project_date_create} - Date of creation: {project_date_create} - - - Date of last update - Date of last update - - - Date of last update: {project_date_update} - Date of last update: {project_date_update} - - - Date to: - Date to: - - - Decode error reading inp file - Decode error reading inp file - - - Default Built Date - Default Built Date - - - Delete Lot(s) - Delete Lot(s) - - - Delete mincut - Delete mincut - - - Delete profile - Delete profile - - - Delete records - Delete records - - - Delete records - Delete records - - - Delete Workorder(s) - Delete Workorder(s) - - - Description - Description - - - Detail - Detail - - - Diameter - Diameter - - - Did not save to cache because HTTP status code is not OK - Did not save to cache because HTTP status code is not OK - - - Discarding the `gdf_nodes` 'geometry' column, though its values differ from the coordinates in the 'x' and 'y' columns. - Discarding the `gdf_nodes` 'geometry' column, though its values differ from the coordinates in the 'x' and 'y' columns. - - - Disconnect elements - Disconnect elements - - - `dist_type` must be 'bbox' or 'network'. - `dist_type` must be 'bbox' or 'network'. - - - Document already exist - Document already exist - - - Document already exists - Document already exists - - - Document deleted - Document deleted - - - Document inserted successfully - Document inserted successfully - - - Document name not found - Document name not found - - - Document PDF created in - Document PDF created in - - - Documents deleted successfully - Documents deleted successfully - - - DOWNGRADE NODE - DOWNGRADE NODE - - - Do you want change it and continue? - Do you want change it and continue? - - - Do you want to continue? - Do you want to continue? - - - Do you want to copy its values to the current node? - Do you want to copy its values to the current node? - - - Do you want to insert {0} selected features? (First 50: {1} ...) - Do you want to insert {0} selected features? (First 50: {1} ...) - - - Do you want to insert the selected features? - Do you want to insert the selected features? - - - Do you want to insert the selected features? {0} - Do you want to insert the selected features? {0} - - - Do you want to open GIS project? - Do you want to open GIS project? - - - Do you want to overwrite custom values? - Do you want to overwrite custom values? - - - Do you want to overwrite file? - Do you want to overwrite file? - - - Do you want to proceed? - Do you want to proceed? - - - Do you want to save changes to dscenario - Do you want to save changes to dscenario - - - Do you want to set this psector as current? - Do you want to set this psector as current? - - - DRAIN plugin not found - DRAIN plugin not found - - - Draw a pipe connected to two nodes - Draw a pipe connected to two nodes - - - Draw a point on the map inside created map zones - Draw a point on the map inside created map zones - - - Draw Profile - Draw Profile - - - Dscenario manager - Dscenario manager - - - During task '{0}, function {1} returned False - During task '{0}, function {1} returned False - - - DWF scenario manager - DWF scenario manager - - - Each query must be a dict or a string. - Each query must be a dict or a string. - - - Edge 'length' and 'speed_kph' values must be non-null. - Edge 'length' and 'speed_kph' values must be non-null. - - - Either `node_size` or `edge_linewidth` must be > 0 to plot something. - Either `node_size` or `edge_linewidth` must be > 0 to plot something. - - - Element - Element - - - ELEMENT - ELEMENT - - - Element does not exist - Element does not exist - - - Elevation API did not return a dict of results. - Elevation API did not return a dict of results. - - - Empty coordinate list - Empty coordinate list - - - Empty data - Empty data - - - Empty value detected in 'Diameter' tab. Please enter a value for diameter. - Empty value detected in 'Diameter' tab. Please enter a value for diameter. - - - Encode error reading inp file - Encode error reading inp file - - - End date - End date - - - English locale not found - English locale not found - - - Epa2data execution failed. See logs for more details... - Epa2data execution failed. See logs for more details... - - - Epa2data execution successful. - Epa2data execution successful. - - - EPA model finished. - EPA model finished. - - - Epatools Plugin - Epatools Plugin - - - EPSG: {self.project_epsg} - EPSG: {self.project_epsg} - - - (Error {}) - (Error {}) - - - Error - Error - - - Error - Error - - - Error: '{0}' or '{1}' field is missing in the result. - Error: '{0}' or '{1}' field is missing in the result. - - - Error assigning team: {0} - Error assigning team: {0} - - - Error connecting to database (layer) - Error connecting to database (layer) - - - Error connecting to database (settings) - Error connecting to database (settings) - - - Error connecting to i18n dataabse - Error connecting to i18n dataabse - - - Error connecting to i18n database - Error connecting to i18n database - - - Error connecting to origin database - Error connecting to origin database - - - Error: Could not extract message from line: {0} - Error: Could not extract message from line: {0} - - - Error creating auxiliary connection for vacuum - Error creating auxiliary connection for vacuum - - - Error creating composer - Error creating composer - - - Error creating dynamic dialog: {0} - Error creating dynamic dialog: {0} - - - Error creating or updating organization - Error creating or updating organization - - - Error creating or updating team - Error creating or updating team - - - Error creating or updating team - Error creating or updating team - - - Error creating or updating user in cat_user table. - Error creating or updating user in cat_user table. - - - Error creating Workcat. - Error creating Workcat. - - - Error. Database returned null. Check postgres function '{0}' - Error. Database returned null. Check postgres function '{0}' - - - Error deleting data - Error deleting data - - - Error deleting profile - Error deleting profile - - - Error deleting records - Error deleting records - - - Error deleting row - Error deleting row - - - Error deleting row: {0} - Query: {1} - Error deleting row: {0} - Query: {1} - - - Error during point selection: {0} - Error during point selection: {0} - - - Error executing gw_fct_create_dscenario_empty - Error executing gw_fct_create_dscenario_empty - - - Error executing gw_fct_import_swmm_flwreg - Error executing gw_fct_import_swmm_flwreg - - - Error executing vacuum: {0} - Error executing vacuum: {0} - - - Error fetching existing primary keys - Error fetching existing primary keys - - - Error fetching existing primary keys: {0} - Error fetching existing primary keys: {0} - - - Error finding string - Error finding string - - - Error fusing arcs - Error fusing arcs - - - Error getting current psector - Error getting current psector - - - Error getting database parameters - Error getting database parameters - - - Error getting default connection (settings) - Error getting default connection (settings) - - - Error getting exploitation - Error getting exploitation - - - Error getting locale from schema: {0} - Error getting locale from schema: {0} - - - Error getting pgRouting version - Error getting pgRouting version - - - Error getting table name from selected layer - Error getting table name from selected layer - - - Error getting table values: {0} - Error getting table values: {0} - - - Error importing IBERGIS project - Error importing IBERGIS project - - - Error inserting element in table, you need to review data - Error inserting element in table, you need to review data - - - Error inserting node - Error inserting node - - - Error inserting profile table, you need to review data - Error inserting profile table, you need to review data - - - Error inserting row: {0} - Error inserting row: {0} - - - Error logging - Error logging - - - Error near line - Error near line - - - Error near line {0} -> {1} - Error near line {0} -> {1} - - - Error on create auto mincut - Error on create auto mincut, you need to review data - - - Error on create auto mincut, you need to review data - Error on create auto mincut, you need to review data - - - Error parsing file: {0} - Error parsing file: {0} - - - Error processing muni_id {0}: {1} - Error processing muni_id {0}: {1} - - - Error reading configuration file: {0} - Error reading configuration file: {0} - - - Error reading file - Error reading file - - - Error reading file '{0}': {1} - Error reading file '{0}': {1} - - - Error reading file {0}: {1} - Error reading file {0}: {1} - - - Error removing team assignment: {0} - Error removing team assignment: {0} - - - Error replacing feature - Error replacing feature - - - Error replacing feature. Chose a valid catalog. - Error replacing feature. Chose a valid catalog. - - - Error saving lot. - Error saving lot. - - - Error saving lot. - Error saving lot. - - - Error saving the configuration - Error saving the configuration - - - Error setting node - Error setting node - - - Error toggling state: {0} - Error toggling state: {0} - - - Error translating: {0} - Error translating: {0} - - - Error type - Error type - - - Error updating: {0}. - Error updating: {0}. - - - Error updating: {0}.\n - Error updating: {0}.\n - - - Error updating element in table - Error updating element in table, you need to review data - - - Error updating element in table, you need to review data - Error updating element in table, you need to review data - - - Error updating expl_id: {0} - Error updating expl_id: {0} - - - Error updating message - Error updating message - - - Error updating messages - Error updating messages - - - Error updating table - Error updating table - - - Event deleted - Event deleted - - - EXCEPTION - EXCEPTION - - - Exception: {0} - Exception: {0} - - - Exception: {0}. - Exception: {0}. - - - EXCEPTION: {0}, {1} - EXCEPTION: {0}, {1} - - - Exception error: {0} - Exception error: {0} - - - Exception in {0} - Exception in {0} - - - Exception in {0} (executing {1} from {2}): {3} - Exception in {0} (executing {1} from {2}): {3} - - - Exception in info - Exception in info - - - Exception in info (def _get_id) - Exception in info (def _get_id) - - - Exception in unload when {0} - Exception in unload when {0} - - - Exception in unload when deleting {0} - Exception in unload when deleting {0} - - - Exception in unload when disconnecting {0} signal - Exception in unload when disconnecting {0} signal - - - Exception in unload when reset values for {0} - Exception in unload when reset values for {0} - - - Exception in unload when unset signals - Exception in unload when unset signals - - - Exception message not shown to user - Exception message not shown to user - - - Exception when replacing inp strings - Exception when replacing inp strings - - - Exception while moving/deleting old user config files - Exception while moving/deleting old user config files - - - Execute '{0}' - Execute '{0}' - - - Execute epa model - Execute epa model - - - Execute EPA software - Execute EPA software - - - Execute failed. - Execute failed. - - - Execute function '{0}' - Execute function '{0}' - - - Executing - Executing - - - Executing vacuum - Executing vacuum - - - Execution of {0} failed. - Execution of {0} failed. - - - Export done succesfully - Export done succesfully - - - Export INP file into PostgreSQL - Export INP file into PostgreSQL - - - Export INP finished. - Export INP finished. - - - Expression Error - Expression Error - - - FAIL {0} - FAIL {0} - - - Failed to add feature - Failed to add feature - - - Failed to configure layer '{0}'. Skipping... - Failed to configure layer '{0}'. Skipping... - - - Failed to create database user '{0}'. The user might already exist in the database. - Failed to create database user '{0}'. The user might already exist in the database. - - - Failed to delete records from {0}. - Failed to delete records from {0}. - - - Failed to delete style group - Failed to delete style group - - - Failed to delete styles - Failed to delete styles - - - Failed to drop database user '{0}'. It may need to be removed manually. - Failed to drop database user '{0}'. It may need to be removed manually. - - - Failed to execute the mapzones analysis. - Failed to execute the mapzones analysis. - - - Failed to fetch dialog configuration - Failed to fetch dialog configuration - - - Failed to fetch dialog configuration - Failed to fetch dialog configuration - - - Failed to get a valid response from gw_fct_config_mapzones. - Failed to get a valid response from gw_fct_config_mapzones. - - - Failed to load campaign form. - Failed to load campaign form. - - - Failed to load campaign form. - Failed to load campaign form. - - - Failed to load layers - Failed to load layers - - - Failed to load layers. - Failed to load layers. - - - Failed to load lot form. - Failed to load lot form. - - - Failed to load lot form. - Failed to load lot form. - - - Failed to load team creation dialog configuration. Please check database configuration. - Failed to load team creation dialog configuration. Please check database configuration. - - - Failed to load workorder form. - Failed to load workorder form. - - - Failed to load workorder form. - Failed to load workorder form. - - - Failed to rename user from '{0}' to '{1}'. The new name might already be in use in the database. - Failed to rename user from '{0}' to '{1}'. The new name might already be in use in the database. - - - Failed to retrieve GeoJSON data. - Failed to retrieve GeoJSON data. - - - Failed to retrieve graph configuration. - Failed to retrieve graph configuration. - - - Failed to retrieve mapzone styles. - Failed to retrieve mapzone styles. - - - Failed to retrieve sector features. - Failed to retrieve sector features. - - - Failed to retrieve the temporal layer - Failed to retrieve the temporal layer - - - Failed to save campaign - Failed to save campaign - - - Failed to save campaign - Failed to save campaign - - - Failed to set {0} scenario - Failed to set {0} scenario - - - Failed to set netscenario - Failed to set netscenario - - - Failed to set psector - Failed to set psector - - - Failed to set ValueRelation for field '{0}': {1} - Failed to set ValueRelation for field '{0}': {1} - - - Failed to update category - Failed to update category - - - Failed to update category: - Failed to update category: - - - Failed to update password for user '{0}'. - Failed to update password for user '{0}'. - - - Failed to update styles - Failed to update styles - - - Failing data: {0} - Failing data: {0} - - - Feature added successfully! - Feature added successfully! - - - Feature already in the list - Feature already in the list - - - Feature has not been updated because no catalog has been selected - Feature has not been updated because no catalog has been selected - - - Feature ID and Idval cannot be empty. - Feature ID and Idval cannot be empty. - - - Feature_id is mandatory. - Feature_id is mandatory. - - - Feature not upserted - Feature not upserted - - - Feature replaced successfully - Feature replaced successfully - - - Feature upserted - Feature upserted - - - Field catalog_id required! - Field catalog_id required! - - - Field child_layer of id: - Field child_layer of id: - - - File '{0}' not found in: {1} - File '{0}' not found in: {1} - - - File cannot be created. Check if it is already opened - File cannot be created. Check if it is already opened - - - File created successfully - File created successfully - - - File extension not valid - File extension not valid - - - File INP not found - File INP not found - - - File name - File name - - - File name is required - File name is required - - - File not found - File not found - - - File not found: {0} - File not found: {0} - - - File path doesn't exist - File path doesn't exist - - - File path doesn't exist or you dont have permission or file is opened - File path doesn't exist or you dont have permission or file is opened - - - File path not found - File path not found - - - File RPT not found - File RPT not found - - - Files defined in environment variables '{0}' and '{1}' not found. - Files defined in environment variables '{0}' and '{1}' not found. - - - Fill table - Fill table - - - Filter - Filter - - - Filter by code - Filter by code - - - Filter by ext_code - Filter by ext_code - - - Finished plotting the graph - Finished plotting the graph - - - First iteration - First iteration - - - First node already selected with id: {0}. Select second one. - First node already selected with id: {0}. Select second one. - - - Flood analysis will start from node ID - Flood analysis will start from node ID - - - FLOW REGULATORS - FLOW REGULATORS - - - FLOWTRACE - FLOWTRACE - - - Folder not found - Folder not found - - - Folder path - Folder path - - - Force commit - Force commit - - - For select on canvas is mandatory to load v_asset_arc_input layer - For select on canvas is mandatory to load v_asset_arc_input layer - - - Found no graph nodes within the requested polygon. - Found no graph nodes within the requested polygon. - - - Fragility curve - Fragility curve - - - From {0}, updating {1}... - From {0}, updating {1}... - - - Full Example - Full Example - - - Function {0} error: {1} from last function is invalid - Function {0} error: {1} from last function is invalid - - - Function {0} error: {1} returned null - Function {0} error: {1} returned null - - - Function {0} error: missing key {1} - Function {0} error: missing key {1} - - - Function {0} failed - Function {0} failed - - - Function {0} finished successfully - Function {0} finished successfully - - - Function {0} returned {1} - Function {0} returned {1} - - - Function '{0}' returned False - Function '{0}' returned False - - - Function {0} returned False - Function {0} returned False - - - Function error: {0} - Function error: {0} - - - Function failed finished - Function failed finished - - - Function gw_fct_create_dscenario_empty returned no dscenario_id - Function gw_fct_create_dscenario_empty returned no dscenario_id - - - Function gw_fct_duplicate_psector executed with no result - Function gw_fct_duplicate_psector executed with no result - - - Function gw_fct_psector_duplicate executed with no result - Function gw_fct_psector_duplicate executed with no result - - - Function gw_fct_setfeaturedelete executed with no result - Function gw_fct_setfeaturedelete executed with no result - - - Function name - Function name - - - Function not found - Function not found - - - Function not found in database - Function not found in database - - - Function not found in database: {0} - Function not found in database: {0} - - - G. Boeing, - G. Boeing, - - - `gdf_edges` must be multi-indexed by `(u, v, key)`. - `gdf_edges` must be multi-indexed by `(u, v, key)`. - - - `gdf` must have a valid CRS and cannot be empty. - `gdf` must have a valid CRS and cannot be empty. - - - `gdf_nodes` and `gdf_edges` must each be uniquely indexed. - `gdf_nodes` and `gdf_edges` must each be uniquely indexed. - - - `gdf_nodes` must contain 'x' and 'y' columns. - `gdf_nodes` must contain 'x' and 'y' columns. - - - Generating markdown for {0}. - Generating markdown for {0}. - - - Generating markdown from {0}... - Generating markdown from {0}... - - - Generating result stats - Generating result stats - - - Generation of atlas uses v_edit_plan_psector as coverage layer ordered by atlas_id column. Please update the atlas' coverage layer before continuing. - Generation of atlas uses v_edit_plan_psector as coverage layer ordered by atlas_id column. Please update the atlas' coverage layer before continuing. - - - Generation of atlas uses ve_plan_psector as coverage layer ordered by atlas_id column. Please update the atlas' coverage layer before continuing. - Generation of atlas uses ve_plan_psector as coverage layer ordered by atlas_id column. Please update the atlas' coverage layer before continuing. - - - Geometry has been added! - Geometry has been added! - - - Geometry must be a shapely Polygon or MultiPolygon. - Geometry must be a shapely Polygon or MultiPolygon. - - - Geometry must be a shapely Polygon or MultiPolygon. If you requested graph from place name, make sure your query resolves to a Polygon or MultiPolygon, and not some other geometry, like a Point. See OSMnx documentation for details. - Geometry must be a shapely Polygon or MultiPolygon. If you requested graph from place name, make sure your query resolves to a Polygon or MultiPolygon, and not some other geometry, like a Point. See OSMnx documentation for details. - - - Geometry set correctly. - Geometry set correctly. - - - Geometry type ({0}) not found in layer: {1} - Geometry type ({0}) not found in layer: {1} - - - `geom` must be a LineString. - `geom` must be a LineString. - - - Getting {0} from .{1} file - Getting {0} from .{1} file - - - Getting auxiliary data from DB - Getting auxiliary data from DB - - - Getting leak data from DB - Getting leak data from DB - - - Getting pipe data from DB - Getting pipe data from DB - - - `G` is a MultiDiGraph, so edge bearings will be directional (one per edge). If you want bidirectional edge bearings (two reciprocal bearings per edge), pass a MultiGraph instead. Use `convert.to_undirected`. - `G` is a MultiDiGraph, so edge bearings will be directional (one per edge). If you want bidirectional edge bearings (two reciprocal bearings per edge), pass a MultiGraph instead. Use `convert.to_undirected`. - - - GIS file generated successfully - GIS file generated successfully - - - GIS file name not set - GIS file name not set - - - GIS folder not set - GIS folder not set - - - Giswater executable file not found - Giswater executable file not found - - - Giswater folder not found - Giswater folder not found - - - Giswater plugin cannot be loaded - Giswater plugin cannot be loaded - - - GitHub Issues - GitHub Issues - - - GLOBAL - GLOBAL - - - Go2Epa - Go2Epa - - - Go2Epa task is already active! - Go2Epa task is already active! - - - Go2Iber task is already active! - Go2Iber task is already active! - - - Graph contains no edges. - Graph contains no edges. - - - Graph contains no nodes. - Graph contains no nodes. - - - Graph must be unprojected to add edge bearings. - Graph must be unprojected to add edge bearings. - - - Graph must be unprojected to analyze edge bearings. - Graph must be unprojected to analyze edge bearings. - - - Graph must be unsimplified to save as OSM XML. - Graph must be unsimplified to save as OSM XML. - - - Graph nodes changed since `street_count`s were calculated - Graph nodes changed since `street_count`s were calculated - - - Graph should be unprojected to save as OSM XML: the existing projected x-y coordinates will be saved as lat-lon node attributes. Project your graph back to lat-lon to avoid this. - Graph should be unprojected to save as OSM XML: the existing projected x-y coordinates will be saved as lat-lon node attributes. Project your graph back to lat-lon to avoid this. - - - Group '{0}' not found in layer tree. - Group '{0}' not found in layer tree. - - - `G` should be undirected to avoid oversampling bidirectional edges. - `G` should be undirected to avoid oversampling bidirectional edges. - - - GSW file not found - GSW file not found - - - Gully - Gully - - - GULLY - GULLY - - - `Gu` must be undirected. - `Gu` must be undirected. - - - gw_fct_setlinktonetwork (Check log messages) - gw_fct_setlinktonetwork (Check log messages) - - - gw_fct_set_rpt_archived execution failed. See logs for more details... - gw_fct_set_rpt_archived execution failed. See logs for more details... - - - Gw Selectors: - Gw Selectors: - - - Hemisphere of the node has been updated. Value is - Hemisphere of the node has been updated. Value is - - - Here you can choose how the pumps and valves will be imported, either left as arcs (virual arcs) or converted to nodes. - Here you can choose how the pumps and valves will be imported, either left as arcs (virual arcs) or converted to nodes. - - - Here you can choose how the pumps, weirs, orifices, and outlets will be imported, either left as arcs (virual arcs) or converted to flwreg. - Here you can choose how the pumps, weirs, orifices, and outlets will be imported, either left as arcs (virual arcs) or converted to flwreg. - - - {hostname!r} responded {response.status_code} {response.reason}: we'll retry in {error_pause} secs - {hostname!r} responded {response.status_code} {response.reason}: we'll retry in {error_pause} secs - - - {hostname!r} responded {response.status_code} {response.reason}: we'll retry in {this_pause} secs - {hostname!r} responded {response.status_code} {response.reason}: we'll retry in {this_pause} secs - - - Hydrology scenario manager - Hydrology scenario manager - - - IBERGIS plugin not found - IBERGIS plugin not found - - - IBERGIS project imported successfully - IBERGIS project imported successfully - - - Id already selected - Id already selected - - - Identify all - Identify all - - - Identifying all nodes that lie outside the polygon... - Identifying all nodes that lie outside the polygon... - - - If not, you can ignore the tab. - If not, you can ignore the tab. - - - If you chose to import the flow regulators as flwreg objects, the sixth tab is where you can select the catalog for each flow regulator (pumps, weirs, orifices, outlets) on the network. - If you chose to import the flow regulators as flwreg objects, the sixth tab is where you can select the catalog for each flow regulator (pumps, weirs, orifices, outlets) on the network. - - - If you have any questions, please contact the Giswater team via - If you have any questions, please contact the Giswater team via - - - If you have different addfields in your feature, they will be deleted. - If you have different addfields in your feature, they will be deleted. - - - Ignoring cache file {str(cache_filepath)!r} because it contains a remark: {response_json['remark']!r} - Ignoring cache file {str(cache_filepath)!r} because it contains a remark: {response_json['remark']!r} - - - Import failed - Import failed - - - IMPORT INP - IMPORT INP - - - Import INP is only available on Python 3.10 or higher. Please update your QGIS's Python version. - Import INP is only available on Python 3.10 or higher. Please update your QGIS's Python version. - - - Import INP is still in developement. It may not work as intended yet. Please report any unexpected behaviour to the Giswater team. - Import INP is still in developement. It may not work as intended yet. Please report any unexpected behaviour to the Giswater team. - - - Import OSM Streetaxis is only available on Python 3.10 or higher. - Import OSM Streetaxis is only available on Python 3.10 or higher. - - - Import OSM Streetaxis its only for WS projects - Import OSM Streetaxis its only for WS projects - - - Import RPT file - Import RPT file - - - Import rpt file........: {0} - Import rpt file........: {0} - - - Import RPT file finished. - Import RPT file finished. - - - Incompatible version of PostgreSQL - Incompatible version of PostgreSQL - - - Incorrect languages, make sure to have the giswater project in english - Incorrect languages, make sure to have the giswater project in english - - - Incorrect user or password - Incorrect user or password - - - Info - Info - - - Info - Info - - - Info Message - Info Message - - - Information about exception - Information about exception - - - Initialize plugin - Initialize plugin - - - In order to create a qgis project you have to create a schema first . - In order to create a qgis project you have to create a schema first . - - - In order to create a qgis project you have to create a schema first. - In order to create a qgis project you have to create a schema first. - - - INP file couldn't be imported: - INP file couldn't be imported: - - - INP file couldn't be imported:\n{0} - INP file couldn't be imported:\n{0} - - - INP file not found - INP file not found - - - Inp Options - Inp Options - - - In schema - In schema - - - Interpolate tool. - Interpolate tool. - - - Interpolate tool.\nTo modify columns (top_elev, ymax, elev among others) to be interpolated set variable edit_node_interpolate on table config_param_user - Interpolate tool.\nTo modify columns (top_elev, ymax, elev among others) to be interpolated set variable edit_node_interpolate on table config_param_user - - - Interrupted because `settings.cache_only_mode=True`. - Interrupted because `settings.cache_only_mode=True`. - - - Invalid {0} '{1}' provided. No configuration performed. - Invalid {0} '{1}' provided. No configuration performed. - - - Invalid arccat_ids: {0}. - Invalid arccat_ids: {0}. - - - Invalid arccat_ids: {1}. - Invalid arccat_ids: {1}. - - - Invalid arccat_ids: {list}. - Invalid arccat_ids: {list}. - - - Invalid buffer value. Please enter an integer less than 1000. - Invalid buffer value. Please enter an integer less than 1000. - - - Invalid buffer value. Please enter an valid integer. - Invalid buffer value. Please enter an valid integer. - - - Invalid campaign ID. - Invalid campaign ID. - - - Invalid campaign ID. - Invalid campaign ID. - - - Invalid campaign mode - Invalid campaign mode - - - Invalid compliance value for diameter - Invalid compliance value for diameter - - - Invalid compliance value for material - Invalid compliance value for material - - - Invalid diameters: {1}. - Invalid diameters: {1}. - - - Invalid diameters: {list}. - Invalid diameters: {list}. - - - Invalid lot ID. - Invalid lot ID. - - - Invalid lot ID. - Invalid lot ID. - - - Invalid materials: {3}. - Invalid materials: {3}. - - - Invalid materials: {list}. - Invalid materials: {list}. - - - Invalid value for field - Invalid value for field - - - Invalid value for scenario_results in [OPTIONS] section. - Invalid value for scenario_results in [OPTIONS] section. - - - Invalid value for type of priority dialog. Please pass either 'GLOBAL' or 'SELECTION'. Value passed: - Invalid value for type of priority dialog. Please pass either 'GLOBAL' or 'SELECTION'. Value passed: - - - Invalid WKT string - Invalid WKT string - - - Invalid workorder ID. - Invalid workorder ID. - - - Invalid workorder ID. - Invalid workorder ID. - - - INVENTORY - INVENTORY - - - Inventory Example - Inventory Example - - - is not defined in table cat_feature - is not defined in table cat_feature - - - It will then show the log of the process in the last tab. - It will then show the log of the process in the last tab. - - - IVI - IVI - - - Java executable file not found - Java executable file not found - - - Java folder not found - Java folder not found - - - Java Runtime executable file not found - Java Runtime executable file not found - - - KEEP OPERATIVE - KEEP OPERATIVE - - - Key - Key - - - key 'comboIds' or/and comboNames not found WHERE columname='{0}' AND - key 'comboIds' or/and comboNames not found WHERE columname='{0}' AND - - - key 'comboIds' or/and comboNames not found WHERE columname='{0}' AND widgetname='{1}' - key 'comboIds' or/and comboNames not found WHERE columname='{0}' AND widgetname='{1}' - - - key 'comboIds' or/and comboNames not found WHERE widgetname='{0}' AND widgettype='{1}' - key 'comboIds' or/and comboNames not found WHERE widgetname='{0}' AND widgettype='{1}' - - - Key container - Key container - - - Key not found - Key not found - - - Key not found: '{0}' - Key not found: '{0}' - - - Key on returned json from ddbb is missed - Key on returned json from ddbb is missed - - - Key on returned json from ddbb is missed. - Key on returned json from ddbb is missed. - - - Language - Language - - - Language: {self.project_language} - Language: {self.project_language} - - - Layer {0} does not found, therefore, not configured - Layer {0} does not found, therefore, not configured - - - Layer '{0}' is None and settings is None - Layer '{0}' is None and settings is None - - - Layer '{0}' not found in QGIS. - Layer '{0}' not found in QGIS. - - - Layer failed to load! - Layer failed to load! - - - Layer is broken - Layer is broken - - - Layer not found - Layer not found - - - Layer of CM project will be added to the project when create - Layer of CM project will be added to the project when create - - - Layers of your role not found - Layers of your role not found - - - Layout not found - Layout not found - - - layoutorder not found. - layoutorder not found. - - - Leak Assignation - Leak Assignation - - - Leaks assigned by diameter only: {leaks}. - Leaks assigned by diameter only: {leaks}. - - - Leaks assigned by material and diameter: {leaks}. - Leaks assigned by material and diameter: {leaks}. - - - Leaks assigned by material only: {leaks}. - Leaks assigned by material only: {leaks}. - - - Leaks assigned to any nearby pipes: {leaks}. - Leaks assigned to any nearby pipes: {leaks}. - - - Leaks within the indicated period: {leaks}. - Leaks within the indicated period: {leaks}. - - - Leaks without pipes intersecting its buffer: {leaks}. - Leaks without pipes intersecting its buffer: {leaks}. - - - levels - levels - - - LIDS - LIDS - - - Line number - Line number - - - Link - Link - - - LINK - LINK - - - Load all - Load all - - - .*loadtxt: input contained no data* - .*loadtxt: input contained no data* - - - Locale gis folder not found - Locale gis folder not found - - - Locale not found - Locale not found - - - Locale not found ({0}) - Locale not found ({0}) - - - Log file - Log file - - - Lot ID is missing. - Lot ID is missing. - - - Make sure graph was created with `ox.settings.all_oneway=True` to save as OSM XML. - Make sure graph was created with `ox.settings.all_oneway=True` to save as OSM XML. - - - Mandatory field is missing. Please - Mandatory field is missing. Please set a value - - - Mandatory field is missing. Please, set a value - Mandatory field is missing. Please, set a value - - - Mandatory field is missing. Please, set a value for field - Mandatory field is missing. Please, set a value for field - - - MAP ZONES - MAP ZONES - - - Mapzones analysis completed successfully. - Mapzones analysis completed successfully. - - - Markdown Generated from {0}. - Markdown Generated from {0}. - - - Marked values must be greater than 0 - Marked values must be greater than 0 - - - MASTERPLAN - MASTERPLAN - - - Material - Material - - - Matplotlib cannot be installed automatically. Please install Matplotlib manually. - Matplotlib cannot be installed automatically. Please install Matplotlib manually. - - - Matplotlib installed successfully. Please restart QGIS. - Matplotlib installed successfully. Please restart QGIS. - - - matplotlib must be installed as an optional dependency for visualization. - matplotlib must be installed as an optional dependency for visualization. - - - Matplotlib Python package not found. Do you want to install Matplotlib? - Matplotlib Python package not found. Do you want to install Matplotlib? - - - Max. Longevity - Max. Longevity - - - Max rleak: {rleak} leaks/km.year. - Max rleak: {rleak} leaks/km.year. - - - Med. Longevity - Med. Longevity - - - Merge requires at least 2 psectors to be selected - Merge requires at least 2 psectors to be selected - - - Message - Message - - - Message error - Message error - - - Metadata file not found - Metadata file not found - - - Method of calculation not defined in configuration file. Please check config file. - Method of calculation not defined in configuration file. Please check config file. - - - MINCUT - MINCUT - - - Mincut canceled! - Mincut canceled! - - - Mincut done - Mincut done, but has conflict and overlaps with - - - Mincut done, but has conflict and overlaps with - Mincut done, but has conflict and overlaps with - - - Mincut done, but has conflict and overlaps with other mincuts - Mincut done, but has conflict and overlaps with other mincuts - - - Mincut done, but has conflict. Take a look on the anl_arc and anl_node to see the details of the conflict - Mincut done, but has conflict. Take a look on the anl_arc and anl_node to see the details of the conflict - - - Mincut done successfully - Mincut done successfully - - - Mincut task is already active! - Mincut task is already active! - - - Min. Longevity - Min. Longevity - - - ...min_message_level - ...min_message_level - - - Min non-zero rleak: {rleak} leaks/km.year. - Min non-zero rleak: {rleak} leaks/km.year. - - - Missing Data - Missing Data - - - Missing required fields - Missing required fields - - - Missing required fields - Missing required fields - - - ... (more hidden) ... - ... (more hidden) ... - - - More than one feature selected. Only the first one will be processed! - More than one feature selected. Only the first one will be processed! - - - More then one document selected. Select just one document. - More then one document selected. Select just one document. - - - More then one event selected. Select just one - More than one event selected. Select just one - - - Move node: Error updating geometry - Move node: Error updating geometry - - - Multiple psectors selected. Please select only one. - Multiple psectors selected. Please select only one. - - - Municipality with ID: {0} deleted from selection - Municipality with ID: {0} deleted from selection - - - Municipality with id[{0}] is already imported on om_streetaxis. - Municipality with id[{0}] is already imported on om_streetaxis. - - - Municipality with id[{0}] is already imported on om_streetaxis.\n\rDo you want to overwrite it?\n\r(This decision will not cancel the other selections, the process will keep running) - Municipality with id[{0}] is already imported on om_streetaxis.\n\rDo you want to overwrite it?\n\r(This decision will not cancel the other selections, the process will keep running) - - - \n - \n - - - Name - Name - - - Name, description and code are required fields - Name, description and code are required fields - - - NETSCENARIO - NETSCENARIO - - - NETWORK - NETWORK - - - Newest leak - Newest leak - - - New feature type is null. Please - New feature type is null. Please, select a valid value - - - New feature type is null. Please, select a valid value - New feature type is null. Please, select a valid value - - - New feature type is null. Please, select a valid value. - New feature type is null. Please, select a valid value. - - - New value - New value - - - Next - Next - - - No action found - No action found - - - No campaign selected. - No campaign selected. - - - No campaign selected. - No campaign selected. - - - No composers found. - No composers found. - - - No current netscenario - No current netscenario - - - No current psector selected - No current psector selected - - - No data elements in server response. Check query location/filters and log. - No data elements in server response. Check query location/filters and log. - - - Node - Node - - - NODE - NODE - - - Node 1 selected - Node 1 selected - - - Node already selected - Node already selected - - - Node deleted successfully - Node deleted successfully - - - Node id: - Node id: - - - Node psector: {0} - Node psector: {0} - - - Node replaced successfully - Node replaced successfully - - - Node set correctly - Node set correctly - - - Node type has been updated! - Node type has been updated! - - - No document selected. - No document selected. - - - No event provided for point selection - No event provided for point selection - - - No features found in the selection for {0}. - No features found in the selection for {0}. - - - No features found in the selection for the enabled tabs ({0}). - No features found in the selection for the enabled tabs ({0}). - - - NO FEATURE TYPE DEFINED - NO FEATURE TYPE DEFINED - - - No function associated to - No function associated to - - - No help file found - No help file found - - - No listValues for - No listValues for - - - No matching features. Check query location, tags, and log. - No matching features. Check query location, tags, and log. - - - Nominatim API did not return a list of results. - Nominatim API did not return a list of results. - - - Nominatim `request_type` must be 'search', 'reverse', or 'lookup'. - Nominatim `request_type` must be 'search', 'reverse', or 'lookup'. - - - No municipalities selected - No municipalities selected - - - None - None - - - No new features to insert. All selected features already exist in the table. - No new features to insert. All selected features already exist in the table. - - - No node ID found at the snapped location. - No node ID found at the snapped location. - - - No parameters found in section {0} - No parameters found in section {0} - - - No pictures for this event. - No pictures for this event. - - - No pipes found matching your budget. - No pipes found matching your budget. - - - No pipes found matching your selected filters. - No pipes found matching your selected filters. - - - No primary key value set - No primary key value set - - - No psector selected. Please select at least one. - No psector selected. Please select at least one. - - - No psector values - No psector values - - - No records found with selected 'result_id' - No records found with selected 'result_id' - - - No records selected - No records selected - - - No records selected - No records selected - - - No results - No results - - - No results found. Please check values set on selector of state and exploitation - No results found. Please check values set on selector of state and exploitation - - - No sector selected. Please select at least one. - No sector selected. Please select at least one. - - - No snapshots available. Please create a snapshot first or wait for tomorrow to travel since today. - No snapshots available. Please create a snapshot first or wait for tomorrow to travel since today. - - - No SQL context available. - No SQL context available. - - - Not '{0}' - Not '{0}' - - - Note: You can force the import by activating the variable '{0}' on the {1} file. - Note: You can force the import by activating the variable '{0}' on the {1} file. - - - Not found: {0} - Not found: {0} - - - No valid data received from the SQL function. - No valid data received from the SQL function. - - - No valid mapzones with values were found to apply styles. - No valid mapzones with values were found to apply styles. - - - No valid psector IDs found - No valid psector IDs found - - - No valid snapping result. Please select a valid point. - No valid snapping result. Please select a valid point. - - - No visit values - No visit values - - - No workcat values - No workcat values - - - Number of features selected in the group of - Number of features selected in the group of - - - Number of SQL files '{0}': {1} - Number of SQL files '{0}': {1} - - - Number of SQL files 'TOTAL': {0} - Number of SQL files 'TOTAL': {0} - - - Object already associated with this feature - Object already associated with this feature - - - Object id not found - Object id not found - - - Oldest leak - Oldest leak - - - Old value - Old value - - - OM - OM - - - Once you have configured all the necessary catalogs, you can click on the 'Accept' button to start the import process. - Once you have configured all the necessary catalogs, you can click on the 'Accept' button to start the import process. - - - Only FRELEM can be added to dscenario - Only FRELEM can be added to dscenario - - - Only one record can be selected - Only one record can be selected - - - Only rows with values are allowed to be deleted. - Only rows with values are allowed to be deleted. - - - On tab workcat set details of changing features to obsolete, on tab relations select affected features - On tab workcat set details of changing features to obsolete, on tab relations select affected features - - - On the other hand you must know that traceability table will storage precedent information. - On the other hand you must know that traceability table will storage precedent information. - - - or - or - - - `orig` and `dest` must be of equal length. - `orig` and `dest` must be of equal length. - - - `orig` and `dest` must either both be iterable or neither must be iterable. - `orig` and `dest` must either both be iterable or neither must be iterable. - - - or they were created by another user: - or they were created by another user: - - - OTHER - OTHER - - - our website - our website - - - Overpass API did not return a dict of results. - Overpass API did not return a dict of results. - - - Overwrite - Overwrite - - - Overwrite file - Overwrite file - - - Overwrite values - Overwrite values - - - Overwriting cache for %s %s - Overwriting cache for %s %s - - - Page not found. - Page not found. - - - Parameter '{0}' is None - Parameter '{0}' is None - - - Parameter button_function is null for button - Parameter button_function is null for button - - - Parameter functionName is null for button - Parameter functionName is null for button - - - Parameter functionName is null for check - Parameter functionName is null for check - - - Parameter not found - Parameter not found - - - Parameter not found: {parameter} - Parameter not found: {parameter} - - - Parameter 'Query text:' is mandatory for 'combo' widgets. Please set value. - Parameter 'Query text:' is mandatory for 'combo' widgets. Please set value. - - - Parameters related with 'searchplus' not set in table 'config_param_system' - Parameters related with 'searchplus' not set in table 'config_param_system' - - - Parameter widgetfunction is null for widget - Parameter widgetfunction is null for widget - - - Parameter widgetfunction is null for widget hyperlink - Parameter widgetfunction is null for widget hyperlink - - - Parameter widgetfunction not found for widget type hyperlink - Parameter widgetfunction not found for widget type hyperlink - - - Parent ID does not exist. - Parent ID does not exist. - - - Parent ID must be an integer. - Parent ID must be an integer. - - - Parsing error fixed - Parsing error fixed - - - Period of leaks: {years:.4g} years. - Period of leaks: {years:.4g} years. - - - PgRouting version - PgRouting version - - - pgRouting version is not compatible with Giswater. Please check wiki - pgRouting version is not compatible with Giswater. Please check wiki - - - pgRouting version: {self.pgrouting_version} - pgRouting version: {self.pgrouting_version} - - - PgRouting version: {self.pgrouting_version} - PgRouting version: {self.pgrouting_version} - - - Pipes with invalid arccat_ids: {0}. - Pipes with invalid arccat_ids: {0}. - - - Pipes with invalid arccat_ids: {0}.\nInvalid arccat_ids: {1}.\n\nAn arccat_id is considered invalid if it is not listed in the catalog configuration table. As a result, these pipes will NOT be assigned a priority value.\n\nDo you want to proceed? - Pipes with invalid arccat_ids: {0}.\nInvalid arccat_ids: {1}.\n\nAn arccat_id is considered invalid if it is not listed in the catalog configuration table. As a result, these pipes will NOT be assigned a priority value.\n\nDo you want to proceed? - - - Pipes with invalid arccat_ids: {qtd}. - Pipes with invalid arccat_ids: {qtd}. - - - Pipes with invalid diameters: {0}. - Pipes with invalid diameters: {0}. - - - Pipes with invalid diameters: {0}.\nInvalid diameters: {1}.\n\nA diameter value is considered invalid if it is zero, negative, NULL or greater than the maximum diameter in the configuration table. As a result, these pipes will NOT be assigned a priority value.\n\nDo you want to proceed? - Pipes with invalid diameters: {0}.\nInvalid diameters: {1}.\n\nA diameter value is considered invalid if it is zero, negative, NULL or greater than the maximum diameter in the configuration table. As a result, these pipes will NOT be assigned a priority value.\n\nDo you want to proceed? - - - Pipes with invalid diameters: {qtd}. - Pipes with invalid diameters: {qtd}. - - - Pipes with invalid materials: {0}.qtd - Pipes with invalid materials: {0}.qtd - - - Pipes with invalid materials: {2}. - Pipes with invalid materials: {2}. - - - Pipes with invalid materials: {qtd}. - Pipes with invalid materials: {qtd}. - - - Pipes with invalid pressures: {0}. - Pipes with invalid pressures: {0}. - - - Pipes with invalid pressures: {0}.\nThese pipes have no pressure information for their nodes. This will result in them receiving the maximum longevity value for their material, which may affect the final priority value.\n\nDo you want to proceed? - Pipes with invalid pressures: {0}.\nThese pipes have no pressure information for their nodes. This will result in them receiving the maximum longevity value for their material, which may affect the final priority value.\n\nDo you want to proceed? - - - Pipes with invalid pressures: {qtd}. - Pipes with invalid pressures: {qtd}. - - - Pipes with zero leaks per km per year: {pipes}. - Pipes with zero leaks per km per year: {pipes}. - - - Planified features cannot be replaced - Planified features cannot be replaced - - - Planned end date - Planned end date - - - Planned start date - Planned start date - - - Please - Please, select a project to delete - - - Please choose a csv file - Please choose a csv file - - - Please choose a different name. - Please choose a different name. - - - Please choose a valid path - Please choose a valid path - - - Please ensure that features has no undelete value on true. - Please ensure that features has no undelete value on true. - - - Please enter a demands dscenario name to proceed with this import. - Please enter a demands dscenario name to proceed with this import. - - - Please enter a new catalog name when the "{0}" option is selected. - Please enter a new catalog name when the "{0}" option is selected. - - - Please enter a valid integer for the built date range. - Please enter a valid integer for the built date range. - - - Please enter a valid integer for the cluster length. - Please enter a valid integer for the cluster length. - - - Please enter a valid integer for the maximum distance. - Please enter a valid integer for the maximum distance. - - - Please enter a valid integer for the number of years. - Please enter a valid integer for the number of years. - - - Please enter a valid number. - Please enter a valid number. - - - Please enter a valid number for the budget. - Please enter a valid number for the budget. - - - Please enter a valid target year. - Please enter a valid target year. - - - Please enter a Workcat_id to proceed with this import. - Please enter a Workcat_id to proceed with this import. - - - Please enter the diameter range in this format: [minimum factor]-[maximum factor]. For example, 0.75-1.5 - Please enter the diameter range in this format: [minimum factor]-[maximum factor]. For example, 0.75-1.5 - - - Please fill all fields in the dialog - Please fill all fields in the dialog - - - Please fill all mandatory fields (highlighted in red). - Please fill all mandatory fields (highlighted in red). - - - Please fill link catalog field in the dialog - Please fill link catalog field in the dialog - - - Please, introduce a result name - Please, introduce a result name - - - Please provide a result name. - Please provide a result name. - - - Please provide the repairing cost for diameter - Please provide the repairing cost for diameter - - - Please provide the replacing cost for diameter - Please provide the replacing cost for diameter - - - Please select a catalog item for all elements in the tabs: Features, Nodes, Arcs, Materials. - Please select a catalog item for all elements in the tabs: Features, Nodes, Arcs, Materials. - - - Please select a catalog item for all elements in the tabs: Nodes, Arcs, Materials, Features. - Please select a catalog item for all elements in the tabs: Nodes, Arcs, Materials, Features. - - - Please select a category to update. - Please select a category to update. - - - Please select a default raingage to proceed with this import. - Please select a default raingage to proceed with this import. - - - Please, select a diferent project name than current. - Please, select a diferent project name than current. - - - Please select a feature to add - Please select a feature to add - - - Please select a feature to remove - Please select a feature to remove - - - Please select a lot to open. - Please select a lot to open. - - - Please select a lot to open. - Please select a lot to open. - - - Please select a municipality to proceed with this import. - Please select a municipality to proceed with this import. - - - Please select an exploitation to proceed with this import. - Please select an exploitation to proceed with this import. - - - Please, select a project to delete - Please, select a project to delete - - - Please select a result with not empty type - Please select a result with not empty type - - - Please select a sector to proceed with this import. - Please select a sector to proceed with this import. - - - Please select a style group before adding a new style. - Please select a style group before adding a new style. - - - Please select a style group to delete. - Please select a style group to delete. - - - Please select a target year. - Please select a target year. - - - Please select a team to assign. - Please select a team to assign. - - - Please select at least one user to assign a team. - Please select at least one user to assign a team. - - - Please select at least one user to remove team assignment. - Please select at least one user to remove team assignment. - - - Please select a valid team to assign. - Please select a valid team to assign. - - - Please select a workcat id end - Please select a workcat id end - - - Please select a workorder to open. - Please select a workorder to open. - - - Please select a workorder to open. - Please select a workorder to open. - - - Please select one or more styles to delete. - Please select one or more styles to delete. - - - Please select one or more styles to update. - Please select one or more styles to update. - - - Please select only one result before changing its status. - Please select only one result before changing its status. - - - Please select rows to remove from the table - Please select rows to remove from the table - - - Plugin version not found - Plugin version not found - - - POLYGON - POLYGON - - - PostGis version - PostGis version - - - PostGis version: {self.postgis_version} - PostGis version: {self.postgis_version} - - - PostgreSQL PID: {0} - PostgreSQL PID: {0} - - - PostgreSQL version - PostgreSQL version - - - PostgreSQL version is not compatible with Giswater. Please check wiki - PostgreSQL version is not compatible with Giswater. Please check wiki - - - PostgreSQL version: {self.postgresql_version} - PostgreSQL version: {self.postgresql_version} - - - PostgreSQL version: {self.postgresql_version}\nPostGis version: {self.postgis_version}\npgRouting version: {self.pgrouting_version}\n \n - PostgreSQL version: {self.postgresql_version}\nPostGis version: {self.postgis_version}\npgRouting version: {self.pgrouting_version}\n \n - - - PostgreSQL version: {self.postgresql_version}\nPostGis version: {self.postgis_version}\nPgRouting version: {self.pgrouting_version}\n \nSchema name: {schema_name}\nVersion: {self.project_version}\nEPSG: {self.project_epsg}\nLanguage: {self.project_language}\nDate of creation: {project_date_create}\nDate of last update: {project_date_update}\n - PostgreSQL version: {self.postgresql_version}\nPostGis version: {self.postgis_version}\nPgRouting version: {self.pgrouting_version}\n \nSchema name: {schema_name}\nVersion: {self.project_version}\nEPSG: {self.project_epsg}\nLanguage: {self.project_language}\nDate of creation: {project_date_create}\nDate of last update: {project_date_update}\n - - - prefer - prefer - - - Price list csv file name is required - Price list csv file name is required - - - Price list detail csv file name is required - Price list detail csv file name is required - - - PRICES - PRICES - - - Print - Print - - - Priority Calculation (Selection) - Priority Calculation (Selection) - - - Prob. of Failure - Prob. of Failure - - - Process completed - Process completed - - - Process finished. - Process finished. - - - Process finished.\n\n - Process finished.\n\n - - - Process finished successfully - Process finished successfully - - - Process finished successfully: Delete schema - Process finished successfully: Delete schema - - - Process finished with some errors - Process finished with some errors - - - Processing folder - Processing folder - - - Processing muni_id {0} - Processing muni_id {0} - - - Profile - Profile - - - Profile deleted - Profile deleted - - - Profile name is mandatory. - Profile name is mandatory. - - - Project read finished - Project read finished - - - Project read finished with different versions on plugin metadata ({0}) and PostgreSQL sys_version table ({1}). - Project read finished with different versions on plugin metadata ({0}) and PostgreSQL sys_version table ({1}). - - - Project read started - Project read started - - - Project read successfully - Project read successfully - - - Project type - Project type - - - PSECTOR - PSECTOR - - - Psector '{0}' has no workcat_id value set. Do you want to continue with the default value? - Psector '{0}' has no workcat_id value set. Do you want to continue with the default value? - - - Psector could not be updated because of the following errors: - Psector could not be updated because of the following errors: - - - Psector features loaded successfully on the map. - Psector features loaded successfully on the map. - - - Psector ID - Psector ID - - - Psector ID not found - Psector ID not found - - - Psector is not archived - Psector is not archived - - - Psector name not found - Psector name not found - - - Psector removed from selector - Psector removed from selector - - - Psector values updated successfully - Psector values updated successfully - - - Python file - Python file - - - Python function - Python function - - - Python translation canceled - Python translation canceled - - - Python translation failed - Python translation failed - - - Python translation successful - Python translation successful - - - QGIS project has more than one {0} layer coming from different schemas. If you are looking to manage two schemas, it is mandatory to define which is the master and which isn't. To do this, you need to configure the QGIS project setting this project's variables: {1} and {2}. - QGIS project has more than one {0} layer coming from different schemas. If you are looking to manage two schemas, it is mandatory to define which is the master and which isn't. To do this, you need to configure the QGIS project setting this project's variables: {1} and {2}. - - - QGIS project has more than one v_edit_node layer coming from different schemas. - QGIS project has more than one v_edit_node layer coming from different schemas. - - - QGIS project has more than one v_edit_node layer coming from different schemas. If you are looking to manage two schemas, it is mandatory to define which is the master and which isn't. To do this, you need to configure the QGIS project setting this project's variables: gwMainSchema and gwAddSchema. - QGIS project has more than one v_edit_node layer coming from different schemas. If you are looking to manage two schemas, it is mandatory to define which is the master and which isn't. To do this, you need to configure the QGIS project setting this project's variables: gwMainSchema and gwAddSchema. - - - QGIS version is not compatible with Giswater. Please check wiki - QGIS version is not compatible with Giswater. Please check wiki - - - QgsLayerTree not found for project. - QgsLayerTree not found for project. - - - `query` must be a string if `by_osmid` is True. - `query` must be a string if `by_osmid` is True. - - - rasterio must be installed as an optional dependency to query rasters. - rasterio must be installed as an optional dependency to query rasters. - - - \rDo you want to overwrite it? - \rDo you want to overwrite it? - - - Reading file - Reading file - - - Real end date - Real end date - - - Real location has been updated - Real location has been updated - - - Real start date - Real start date - - - Record deleted - Record deleted - - - Records deleted - Records deleted - - - Reload failed - Reload failed - - - Remove layer from project? - Remove layer from project? - - - REMOVE NODE - REMOVE NODE - - - Remove Team Assignment - Remove Team Assignment - - - Repair cost - Repair cost - - - Replace feature - Replace feature - - - Replace feature done successfully - Replace feature done successfully - - - Replacement cost - Replacement cost - - - Replacing template text - Replacing template text - - - Reports generated successfully - Reports generated successfully - - - Required fields are missing - Required fields are missing - - - Reset position form done successfully. - Reset position form done successfully. - - - Result Manager - Result Manager - - - Result name - Result name - - - Result name already exists - Result name already exists, do you want overwrite? - - - Result name already exists, do you want overwrite? - Result name already exists, do you want overwrite? - - - Result name already in use, please choose a different name. - Result name already in use, please choose a different name. - - - Result name not found. It's not possible to import RPT file into database - Result name not found. It's not possible to import RPT file into database - - - Result Selector - Result Selector - - - Retrieving process ({0}/{1})... - Retrieving process ({0}/{1})... - - - rio-vrt must be installed as an optional dependency to build VRTs. - rio-vrt must be installed as an optional dependency to build VRTs. - - - Rotation must be a number. - Rotation must be a number. - - - `route_colors` and `route_linewidths` must have same lengths as `routes`. - `route_colors` and `route_linewidths` must have same lengths as `routes`. - - - `routes` must be an iterable of route lists. - `routes` must be an iterable of route lists. - - - Rpt fail - Rpt fail - - - RPT file path is required when importing results or executing EPA - RPT file path is required when importing results or executing EPA - - - \r(This decision will not cancel the other selections, the process will keep running) - \r(This decision will not cancel the other selections, the process will keep running) - - - Satellite schemas - Satellite schemas - - - Save as - Save as - - - Save feature - Save feature - - - Saving results to DB - Saving results to DB - - - Scale must be a number. - Scale must be a number. - - - Schema audit not found, please create it first - Schema audit not found, please create it first - - - Schema name - Schema name - - - Schema name: {schema_name} - Schema name: {schema_name} - - - Schema Utils already exist. - Schema Utils already exist. - - - Schema vacuum executed - Schema vacuum executed - - - (Schema version is higher than plugin version. Please contact your administrator to update the plugin) - (Schema version is higher than plugin version. Please contact your administrator to update the plugin) - - - (Schema version is higher than plugin version, please update plugin) - (Schema version is higher than plugin version, please update plugin) - - - (Schema version is lower than plugin version. Please contact your administrator to update the schema) - (Schema version is lower than plugin version. Please contact your administrator to update the schema) - - - (Schema version is lower than plugin version, please update schema) - (Schema version is lower than plugin version, please update schema) - - - scikit-learn must be installed as an optional dependency to search an unprojected graph. - scikit-learn must be installed as an optional dependency to search an unprojected graph. - - - scipy must be installed as an optional dependency to calculate entropy. - scipy must be installed as an optional dependency to calculate entropy. - - - scipy must be installed as an optional dependency to search a projected graph. - scipy must be installed as an optional dependency to search a projected graph. - - - Second iteration - Second iteration - - - Select a campaign to delete. - Select a campaign to delete. - - - Select a campaign to delete. - Select a campaign to delete. - - - Select a Custom node Type - Select a custom node type - - - Select a lot to delete. - Select a lot to delete. - - - Select a valid date column to filter. - Select a valid date column to filter. - - - Select a valid path. - Select a valid path - - - Select a workcat id end - Select a workcat id end - - - Select a workorder to delete. - Select a workorder to delete. - - - Select a workorder to delete. - Select a workorder to delete. - - - Select connecs or gullies with qgis tool and use right click to connect them with network - Select connecs or gullies with qgis tool and use right click to connect them with network - - - Select connecs or gullies with qgis tool and use right click to connect them with network. CTRL + SHIFT over selection to remove it - Select connecs or gullies with qgis tool and use right click to connect them with network. CTRL + SHIFT over selection to remove it - - - Select CSV file - Select CSV file - - - Selected {0} - Selected {0} - - - Selected CSV has been imported successfully - Selected CSV has been imported successfully - - - Selected date interval is not valid - Selected date interval is not valid - - - Selected element already in the list - Selected element already in the list - - - Selected functions have been executed - Selected functions have been executed - - - Selected hydrometer_id not found - Selected hydrometer_id not found - - - Selected node - Selected node - - - Selected 'profile_id' already exist in database - Selected 'profile_id' already exist in database - - - Selected schema not found - Selected schema not found - - - Selected snapped feature_id to copy values from - Selected snapped feature_id to copy values from - - - Selected styles updated successfully! - Selected styles updated successfully! - - - Selected styles were successfully deleted. - Selected styles were successfully deleted. - - - Selected team not found. - Selected team not found. - - - Select feature type and id and check if it''s related to any other features. click delete to remove it completely - Select feature type and id and check if it's related to any other features. Click delete to remove it completely - - - Select file - Select file - - - Select folder - Select folder - - - Select INP file - Select INP file - - - SELECTION - SELECTION - - - Select just one document - Select just one document - - - Select just one visit - Select just one visit - - - Select one - Select one - - - Selector help - Selector help - - - Select RPT file - Select RPT file - - - Select UI file - Select UI file - - - Select valid INP file - Select valid INP file - - - Select valid RPT file - Select valid RPT file - - - Select visit to open - Select visit to open - - - SERVER RESPONSE - SERVER RESPONSE - - - Service database connection error (psycopg2). Please open plugin log file to get more details - Service database connection error (psycopg2). Please open plugin log file to get more details - - - Service database connection error (QSqlDatabase). Please open plugin log file to get more details - Service database connection error (QSqlDatabase). Please open plugin log file to get more details - - - Set rpt archived execution successful. - Set rpt archived execution successful. - - - Shamir-Howard parameters - Shamir-Howard parameters - - - Simplified graph: {initial_node_count:,} to {len(G):,} nodes, {initial_edge_count:,} to {len(G.edges):,} edges - Simplified graph: {initial_node_count:,} to {len(G):,} nodes, {initial_edge_count:,} to {len(G.edges):,} edges - - - Skipping muni_id {0}: Invalid geometry - Skipping muni_id {0}: Invalid geometry - - - Snapped feature is not in a valid layer - Snapped feature is not in a valid layer - - - Some data is missing - Some data is missing - - - Some data is missing. Check gis_length for arc - Some data is missing. Check gis_length for arc - - - Some edges missing nodes, possibly due to input data clipping issue. - Some edges missing nodes, possibly due to input data clipping issue. - - - Some events have documents - Some events have documents - - - Some layers of your role not found. Do you want to view them? - Some layers of your role not found. Do you want to view them? - - - Some mandatory fields are missing. Please fill the required fields (marked in red). - Some mandatory fields are missing. Please fill the required fields (marked in red). - - - Some mandatory fields are missing. Please fill the required fields (marked in red). - Some mandatory fields are missing. Please fill the required fields (marked in red). - - - Some mandatory values are missing. Please check the widgets marked in red. - Some mandatory values are missing. Please check the widgets marked in red. - - - Some mandatory values are missing. Please check the widgets marked in red. - Some mandatory values are missing. Please check the widgets marked in red. - - - Some parameters are missing for node - Some parameters are missing for node - - - Some parameters are missing (Values Defaults used for) - Some parameters are missing (Values Defaults used for) - - - SQL - SQL - - - SQL Context - SQL Context - - - SQL File - SQL File - - - SQL folder not found - SQL folder not found - - - %ss cannot be directly connected to a reservoir. Add a pipe to separate the valve from the reservoir. - %ss cannot be directly connected to a reservoir. Add a pipe to separate the valve from the reservoir. - - - %ss cannot be directly connected to a tank. Add a pipe to separate the valve from the tank. - %ss cannot be directly connected to a tank. Add a pipe to separate the valve from the tank. - - - Start date - Start date - - - Started task '{0}' - Started task '{0}' - - - Started task {0} - Started task {0} - - - Starting execute_vacuum method - Starting execute_vacuum method - - - Starting process... - Starting process... - - - Style group '{0}' and related entries have been deleted. - Style group '{0}' and related entries have been deleted. - - - Succesfully connected to {0} - Succesfully connected to {0} - - - Successful connection to {0} database - Successful connection to {0} database - - - Successfully assigned team '{0}' to {1} user(s). - Successfully assigned team '{0}' to {1} user(s). - - - Successfully removed team assignment from {0} user(s). - Successfully removed team assignment from {0} user(s). - - - SWMM Model - SWMM Model - - - Table not found - Table not found - - - Table not found: '{0}' - Table not found: '{0}' - - - Table not found: {0} - Table not found: {0} - - - Table_object is not a table name or QTableView - Table_object is not a table name or QTableView - - - Tab not found. - Tab not found. - - - Task '{0}' completed - Task '{0}' completed - - - Task {0} completed - Task {0} completed - - - Task {0} completed\n - Task {0} completed\n - - - Task '{0}' Exception: {1} - Task '{0}' Exception: {1} - - - Task '{0}' execute function '{1}' - Task '{0}' execute function '{1}' - - - Task '{0}' execute procedure '{1}' with parameters: '{2}', '{3}', '{4}' - Task '{0}' execute procedure '{1}' with parameters: '{2}', '{3}', '{4}' - - - Task '{0}' execute sql: '{1}' - Task '{0}' execute sql: '{1}' - - - Task '{0}' manage json response with parameters: '{1}', '{2}', '{3}' - Task '{0}' manage json response with parameters: '{1}', '{2}', '{3}' - - - Task '{0}' not successful but without exception - Task '{0}' not successful but without exception - - - Task '{0}' was cancelled - Task '{0}' was cancelled - - - Task aborted - {0} - Task aborted - {0} - - - Task aborted: {0}. - Task aborted: {0}. - - - Task canceled. - Task canceled. - - - Task canceled: - Task canceled: - - - Task canceled - {0} - Task canceled - {0} - - - Task canceled: The number of years is greater than the interval disponible. - Task canceled: The number of years is greater than the interval disponible. - - - Task 'Check project' execute function '{0}' - Task 'Check project' execute function '{0}' - - - task_completed - task_completed - - - Task 'Connect link' execute function '{0}' from '{1}' with parameters: '{2}' - Task 'Connect link' execute function '{0}' from '{1}' with parameters: '{2}' - - - Task 'Connect link' execute function '{0}' with parameters: '{1}', '{2}' - Task 'Connect link' execute function '{0}' with parameters: '{1}', '{2}' - - - Task 'Connect link' execute procedure '{0}' with parameters: '{1}', '{2}', '{3}' - Task 'Connect link' execute procedure '{0}' with parameters: '{1}', '{2}', '{3}' - - - Task failed: {0}. This is probably a DB error, check postgres function '{1}'. - Task failed: {0}. This is probably a DB error, check postgres function '{1}'. - - - Task finished! - Task finished! - - - Task 'Go2Epa' execute function '{0}' - Task 'Go2Epa' execute function '{0}' - - - Task 'Go2Epa' execute function '{0}' from '{1}' - Task 'Go2Epa' execute function '{0}' from '{1}' - - - Task 'Go2Epa' execute function 'def _exec_import_function' - Task 'Go2Epa' execute function 'def _exec_import_function' - - - Task 'Go2Epa' execute procedure '{0}' step {1} - Task 'Go2Epa' execute procedure '{0}' step {1} - - - Task 'Go2Epa' execute procedure '{0}' step {1}} - Task 'Go2Epa' execute procedure '{0}' step {1}} - - - Task 'Go2Epa' execute procedure '{1}' step {2} with parameters: '{1}', '{3}', '{4}', '{5}', '{6}' - Task 'Go2Epa' execute procedure '{1}' step {2} with parameters: '{1}', '{3}', '{4}', '{5}', '{6}' - - - Task 'Go2Epa' manage json response - Task 'Go2Epa' manage json response - - - Task 'Mincut execute' execute procedure '{0}' with parameters: '{1}', '{2}', '{3}' - Task 'Mincut execute' execute procedure '{0}' with parameters: '{1}', '{2}', '{3}' - - - Task 'Mincut execute' manage json response with parameters: '{0}', '{1}', '{2}' - Task 'Mincut execute' manage json response with parameters: '{0}', '{1}', '{2}' - - - @techreport{boeing_osmnx_2024, - @techreport{boeing_osmnx_2024, - - - @techreport{boeing_osmnx_2024,\n author = {Boeing, Geoff},\n title = {{Modeling and Analyzing Urban Networks and Amenities with OSMnx}},\n type = {Working paper},\n url = {https://geoffboeing.com/publications/osmnx-paper/},\n year = {2024}\n} - @techreport{boeing_osmnx_2024,\n author = {Boeing, Geoff},\n title = {{Modeling and Analyzing Urban Networks and Amenities with OSMnx}},\n type = {Working paper},\n url = {https://geoffboeing.com/publications/osmnx-paper/},\n year = {2024}\n} - - - Template GIS file not found - Template GIS file not found - - - Template not managed: {0} - Template not managed: {0} - - - Temporal layer created successfully. - Temporal layer created successfully. - - - The '{0}' field is required. - The '{0}' field is required. - - - The active state of the current psector cannot be changed. Current psector: {0} - The active state of the current psector cannot be changed. Current psector: {0} - - - The configuration file doesn't match the selected INP file. Some options may not be loaded. - The configuration file doesn't match the selected INP file. Some options may not be loaded. - - - The configuration file doesn't match the selected INP file. Some options may not be loaded or may be incorrect. Do you want to continue? - The configuration file doesn't match the selected INP file. Some options may not be loaded or may be incorrect. Do you want to continue? - - - The connection to the database is broken. - The connection to the database is broken. - - - The connection to the database is broken: {0} - The connection to the database is broken: {0} - - - The csv file has been successfully exported - The csv file has been successfully exported - - - The 'Description' field is required. - The 'Description' field is required. - - - The field layoutname is not configured for - The field layoutname is not configured for - - - The field layoutorder is not configured for - The field layoutorder is not configured for - - - The field widgettype is not configured for - The field widgettype is not configured for - - - The fifth tab is the 'Arcs' tab, where you can select the catalog for each type of arc on the network. - The fifth tab is the 'Arcs' tab, where you can select the catalog for each type of arc on the network. - - - The file {0} already exists. Do you want to overwrite it? - The file {0} already exists. Do you want to overwrite it? - - - The file "{0}.csv" already exists. Do you want to overwrite it? - The file "{0}.csv" already exists. Do you want to overwrite it? - - - The file "{0}.in" already exists. Do you want to overwrite it? - The file "{0}.in" already exists. Do you want to overwrite it? - - - The file "{0}.inp" already exists. Do you want to overwrite it? - The file "{0}.inp" already exists. Do you want to overwrite it? - - - The files {0} already exist. Do you want to overwrite them? - The files {0} already exist. Do you want to overwrite them? - - - The files "{0}.in" and "{1}.csv" already exist. Do you want to overwrite them? - The files "{0}.in" and "{1}.csv" already exist. Do you want to overwrite them? - - - The files "{0}.inp" and "{1}.csv" already exist. Do you want to overwrite them? - The files "{0}.inp" and "{1}.csv" already exist. Do you want to overwrite them? - - - The file selected is not a GPKG file - The file selected is not a GPKG file - - - The file selected is not an INP file - The file selected is not an INP file - - - The first tab is the 'Basic' tab, where you can select the exploitation, sector, municipality, and other basic information. - The first tab is the 'Basic' tab, where you can select the exploitation, sector, municipality, and other basic information. - - - The following fields differ between the selected arcs. You are about to merge them using the selected values. - The following fields differ between the selected arcs. You are about to merge them using the selected values. - - - The fourth tab is the 'Nodes' tab, where you can select the catalog for each type of node on the network. - The fourth tab is the 'Nodes' tab, where you can select the catalog for each type of node on the network. - - - The geometry of `polygon` is invalid. - The geometry of `polygon` is invalid. - - - The [JUNCTIONS] section of the configuration file is empty. - The [JUNCTIONS] section of the configuration file is empty. - - - The name is current in use - The name is current in use - - - The name is currently in use - The name is currently in use - - - The node has not been updated because no catalog has been selected - The node has not been updated because no catalog has been selected - - - The node is obsolete - The node is obsolete, this tool doesn't work with obsolete nodes. - - - The node is obsolete, this tool doesn't work with obsolete nodes. - The node is obsolete, this tool doesn't work with obsolete nodes. - - - The number of pages in your composition does not match the number of psectors - The number of pages in your composition does not match the number of psectors - - - The organization name already exists - The organization name already exists - - - The 'Path' field is required for Import INP data. - The 'Path' field is required for Import INP data. - - - The procedure will delete features on database unless it is a node that doesn't divide arc.\n - Please ensure that features has no undelete value on true.\n - On the other hand you must know that traceability table will storage precedent information. - The procedure will delete features on database unless it is a node that doesn't divide arc.\n - Please ensure that features has no undelete value on true.\n - On the other hand you must know that traceability table will storage precedent information. - - - The procedure will delete features on database unless it is a node that doesn't divide arcs. - The procedure will delete features on database unless it is a node that doesn't divide arcs. - - - The procedure will delete features on database unless it is a node that doesn't divide arcs.\nPlease ensure that features has no undelete value on true.\nOn the other hand you must know that traceability table will storage precedent information. - The procedure will delete features on database unless it is a node that doesn't divide arcs.\nPlease ensure that features has no undelete value on true.\nOn the other hand you must know that traceability table will storage precedent information. - - - The process has been executed. Files generated: - The process has been executed. Files generated: - - - The project name can't be a PostgreSQL reserved keyword - The project name can't be a PostgreSQL reserved keyword - - - The project name can't have any upper-case characters - The project name can't have any upper-case characters - - - The 'Project_name' field is required. - The 'Project_name' field is required. - - - The project name has invalid character - The project name has invalid character - - - The QGIS Projects templates was correctly created. - The QGIS Projects templates was correctly created. - - - The QML file is invalid - The QML file is invalid - - - The QML file is invalid. - The QML file is invalid. - - - There are missing values in these nodes: - There are missing values in these nodes: - - - There are multiple queries configured. These are the lists that will be used. Do you want to continue? - There are multiple queries configured. These are the lists that will be used. Do you want to continue? - - - There are multple tabs in order to configure all the necessary catalogs. - There are multple tabs in order to configure all the necessary catalogs. - - - There are no attribute values. - There are no attribute values. - - - There are no results available to display. - There are no results available to display. - - - There are no visible mincuts in the table. Try a different filter - There are no visible mincuts in the table. Try a different filter or make one - - - There are no visible mincuts in the table. Try a different filter or make one - There are no visible mincuts in the table. Try a different filter or make one - - - There are some error in the records with id - There are some error in the records with id - - - There have been errors translating: - There have been errors translating: - - - There is an error in the configuration of the pgservice file, please check it or consult your administrator - There is an error in the configuration of the pgservice file, please check it or consult your administrator - - - There is a partially completed file for this folder/file name. Would you like to resume the process? - There is a partially completed file for this folder/file name. Would you like to resume the process? - - - There is no data in table anl_arc for fid=491 and current user. - There is no data in table anl_arc for fid=491 and current user. - - - There is no data in table anl_arc for fid=493 and current user. - There is no data in table anl_arc for fid=493 and current user. - - - There is no project selected or it is not valid. Please check the first tab... - There is no project selected or it is not valid. Please check the first tab... - - - There is no valid shape curve in the list - There is no valid shape curve in the list - - - The report timestep must be an integer multiple of the hydraulic timestep. Reducing the hydraulic timestep from {0} seconds to {1} seconds for this simulation. - The report timestep must be an integer multiple of the hydraulic timestep. Reducing the hydraulic timestep from {0} seconds to {1} seconds for this simulation. - - - The report timestep must be an integer multiple of the hydraulic timestep. Reducing the report timestep from {0} seconds to {1} seconds for this simulation. - The report timestep must be an integer multiple of the hydraulic timestep. Reducing the report timestep from {0} seconds to {1} seconds for this simulation. - - - The result cannot be deleted - The result cannot be deleted - - - There was an error deleting object. - There was an error deleting object. - - - There was an error deleting object values. - There was an error deleting object values. - - - There was an error deleting old curve values. - There was an error deleting old curve values. - - - There was an error deleting old lid values. - There was an error deleting old lid values. - - - There was an error deleting old pattern values. - There was an error deleting old pattern values. - - - There was an error deleting old timeseries values. - There was an error deleting old timeseries values. - - - There was an error inserting control. - There was an error inserting control. - - - There was an error inserting curve. - There was an error inserting curve. - - - There was an error inserting curve value. - There was an error inserting curve value. - - - There was an error inserting lid. - There was an error inserting lid. - - - There was an error inserting pattern. - There was an error inserting pattern. - - - There was an error inserting pattern value. - There was an error inserting pattern value. - - - There was an error inserting timeseries. - There was an error inserting timeseries. - - - There were velocities >50 in the rpt file. You have activated the option to force the import - There were velocities >50 in the rpt file. You have activated the option to force the import - - - There were velocities >50 in the rpt file. You have activated the option to force the import so they have been set to 50. - There were velocities >50 in the rpt file. You have activated the option to force the import so they have been set to 50. - - - The rpt file is not valid to import. Because columns on rpt file are overlaped, it seems you need to improve your simulation. Please ckeck and fix it before continue. - The rpt file is not valid to import. Because columns on rpt file are overlaped, it seems you need to improve your simulation. Please ckeck and fix it before continue. - - - The rpt file is not valid to import. Because columns on rpt file are overlaped, it seems you need to improve your simulation. Please ckeck and fix it before continue. \n{0} - The rpt file is not valid to import. Because columns on rpt file are overlaped, it seems you need to improve your simulation. Please ckeck and fix it before continue. \n{0} - - - The rpt file is not valid to import. Because columns on rpt file are overlapped, it seems you need to improve your simulation. Please check and fix it before continuing. - The rpt file is not valid to import. Because columns on rpt file are overlapped, it seems you need to improve your simulation. Please check and fix it before continuing. - - - The rpt file is not valid to import. Because columns on rpt file are overlapped, it seems you need to improve your simulation. Please check and fix it before continuing.\n{0} - The rpt file is not valid to import. Because columns on rpt file are overlapped, it seems you need to improve your simulation. Please check and fix it before continuing.\n{0} - - - The rpt file is not valid to import. Because velocity has not numeric value (>50), it seems you need to improve your simulation. Please ckeck and fix it before continue. - The rpt file is not valid to import. Because velocity has not numeric value (>50), it seems you need to improve your simulation. Please ckeck and fix it before continue. - - - The rpt file is not valid to import. Because velocity has not numeric value (>50), it seems you need to improve your simulation. Please ckeck and fix it before continue. \n{0} - The rpt file is not valid to import. Because velocity has not numeric value (>50), it seems you need to improve your simulation. Please ckeck and fix it before continue. \n{0} - - - The rpt file is not valid to import. Because velocity has not numeric value (>50), it seems you need to improve your simulation. Please ckeck and fix it before continue. \nNote: You can force the import by activating the variable '{0}' on the {1} file. \n{2} - The rpt file is not valid to import. Because velocity has not numeric value (>50), it seems you need to improve your simulation. Please ckeck and fix it before continue. \nNote: You can force the import by activating the variable '{0}' on the {1} file. \n{2} - - - The [SCENARIOS] section of the configuration file is empty. - The [SCENARIOS] section of the configuration file is empty. - - - The schema ({0}) does not exists - The schema ({0}) does not exists - - - The schema '{0}' is being used in production! It can't be deleted. - The schema '{0}' is being used in production! It can't be deleted. - - - The schema version has to be updated to make rename - The schema version has to be updated to make rename - - - These are the lists that will be used. Do you want to continue? - These are the lists that will be used. Do you want to continue? - - - The second tab is the 'Features' tab, where you can select the corresponding feature classes for each type of feature on the network. - The second tab is the 'Features' tab, where you can select the corresponding feature classes for each type of feature on the network. - - - These items could not be downgrade to state 0 - These items could not be downgrade to state 0 - - - The selected INP file does not match with a 'UD' project.n - The selected INP file does not match with a 'UD' project.n - - - The selected INP file does not match with a 'UD' project. Please check it before continuing... - The selected INP file does not match with a 'UD' project. Please check it before continuing... - - - The selected INP file does not match with a 'WS' project.n - The selected INP file does not match with a 'WS' project.n - - - The selected INP file does not match with a 'WS' project. Please check it before continuing... - The selected INP file does not match with a 'WS' project. Please check it before continuing... - - - The selected node is planified in another psector. - The selected node is planified in another psector. - - - The selected node should have exactly two linked arcs. - The selected node should have exactly two linked arcs. - - - These links could not be located within the network: - These links could not be located within the network: - - - These pipes have been assigned as compliant by default, which may affect their priority value. - These pipes have been assigned as compliant by default, which may affect their priority value. - - - These pipes have been identified as the configured unknown material, {unknown_material}. - These pipes have been identified as the configured unknown material, {unknown_material}. - - - These pipes have no pressure information for their nodes. This will result in them receiving the maximum longevity value for their material, which may affect the final priority value. - These pipes have no pressure information for their nodes. This will result in them receiving the maximum longevity value for their material, which may affect the final priority value. - - - These pipes have NOT been assigned a priority value. - These pipes have NOT been assigned a priority value. - - - These pipes have NOT been assigned a priority value as the configured unknown material, {unknown_material}, is not listed in the configuration tab for materials. - These pipes have NOT been assigned a priority value as the configured unknown material, {unknown_material}, is not listed in the configuration tab for materials. - - - These pipes received the maximum longevity value for their material. - These pipes received the maximum longevity value for their material. - - - These pipes will NOT be assigned a priority value as the configured unknown material, {1}, is not listed in the configuration tab for materials. - These pipes will NOT be assigned a priority value as the configured unknown material, {1}, is not listed in the configuration tab for materials. - - - These pipes will NOT be assigned a priority value as the configured unknown material, {unknown_material}, is not listed in the configuration tab for materials. - These pipes will NOT be assigned a priority value as the configured unknown material, {unknown_material}, is not listed in the configuration tab for materials. - - - The start date must be before the end date - The start date must be before the end date - - - The start date real must be before the end date real - The start date real must be before the end date real - - - The state selector is empty - The state selector is empty - - - The sum of weights must equal 1. Please adjust the values accordingly. - The sum of weights must equal 1. Please adjust the values accordingly. - - - The table ({0}) does not exists - The table ({0}) does not exists - - - The table 'plan_psector' contains NULL values in the column 'atlas_id'. Please fix this before continuing. - The table 'plan_psector' contains NULL values in the column 'atlas_id'. Please fix this before continuing. - - - The target year must be between {0} and {1}. - The target year must be between {0} and {1}. - - - The team name already exists - The team name already exists - - - The team name already exists - The team name already exists - - - The third tab is the 'Materials' tab, where you can select the corresponding material for each roughness value. - The third tab is the 'Materials' tab, where you can select the corresponding material for each roughness value. - - - The third tab is the 'Materials' tab, where you can select the corresponding roughness value for each material. - The third tab is the 'Materials' tab, where you can select the corresponding roughness value for each material. - - - The update folder was not found in sql folder - The update folder was not found in sql folder - - - The user config files have been recreated. A backup of the broken ones have been created at - The user config files have been recreated. A backup of the broken ones have been created at - - - The user name already exists - The user name already exists - - - The WNTR numerical solution for flow rate has R2 - The WNTR numerical solution for flow rate has R2 - - - The WNTR numerical solution for tank head has R2 - The WNTR numerical solution for tank head has R2 - - - The Workcat_id "{0}" is already in use. Please enter a different ID. - The Workcat_id "{0}" is already in use. Please enter a different ID. - - - The XML file you are loading appears to have been generated by OSMnx: this use case is not supported and may not behave as expected. To save/load graphs to/from disk for later use in OSMnx, use the `io.save_graphml` and `io.load_graphml` functions instead. Refer to the documentation for details. - The XML file you are loading appears to have been generated by OSMnx: this use case is not supported and may not behave as expected. To save/load graphs to/from disk for later use in OSMnx, use the `io.save_graphml` and `io.load_graphml` functions instead. Refer to the documentation for details. - - - This arc has redundant data on both (elev & y) values. Review it and use only one. - This arc has redundant data on both (elev & y) values. Review it and use only one. - - - This area is {ratio:,} times your configured Overpass max query area size. It will automatically be divided up into multiple sub-queries accordingly. This may take a long time. - This area is {ratio:,} times your configured Overpass max query area size. It will automatically be divided up into multiple sub-queries accordingly. This may take a long time. - - - This behaviour can be configured in the table 'config_param_system' (parameter = 'basic_selector - This behaviour can be configured in the table 'config_param_system' (parameter = 'basic_selector - - - This dma doesn't exist - This dma doesn't exist - - - This feature already has ELEV & TOP_ELEV values! Review it and use at most two - This feature already has ELEV & TOP_ELEV values! Review it and use at most two - - - This feature already has ELEV values! Review it and use only one - This feature already has ELEV values! Review it and use only one - - - This feature already has Y & ELEV values! Review it and use at most two - This feature already has Y & ELEV values! Review it and use at most two - - - This feature already has Y & TOP_ELEV values! Review it and use at most two - This feature already has Y & TOP_ELEV values! Review it and use at most two - - - This feature already has Y values! Review it and use only one - This feature already has Y values! Review it and use only one - - - This feature has no log changes, please update this feature before. - This feature has no log changes, please update this feature before. - - - This functionality is only allowed with the locality 'en_US' and SRID 25831. - This functionality is only allowed with the locality 'en_US' and SRID 25831. - - - This functionality is only allowed with the locality 'en_US' and SRID 25831.\nDo you want change it and continue? - This functionality is only allowed with the locality 'en_US' and SRID 25831.\nDo you want change it and continue? - - - This graph has already been simplified, cannot simplify it again. - This graph has already been simplified, cannot simplify it again. - - - This graph's edges have no preexisting 'maxspeed' attribute values so you must pass `hwy_speeds` or `fallback` arguments. - This graph's edges have no preexisting 'maxspeed' attribute values so you must pass `hwy_speeds` or `fallback` arguments. - - - This id already exists - This id already exists - - - This is not a valid Giswater project - This is not a valid Giswater project - - - This is not a valid Giswater project. Do you want to view problem details? - This is not a valid Giswater project. Do you want to view problem details? - - - This node has redundant data on (top_elev, ymax & elev) values. Review it and use at most two. - This node has redundant data on (top_elev, ymax & elev) values. Review it and use at most two. - - - This parameter is mandatory. Please - This parameter is mandatory. Please, set a value - - - This parameter is mandatory. Please, set a value - This parameter is mandatory. Please, set a value - - - This param is mandatory. Please - This param is mandatory. Please, set a value - - - This param is mandatory. Please, set a value - This parameter is mandatory. Please, set a value - - - This presszone doesn't exist - This presszone doesn't exist - - - This process will active snapshot. Are you sure to continue? - This process will active snapshot. Are you sure to continue? - - - This process will take a few seconds. Are you sure to continue? - This process will take a few seconds. Are you sure to continue? - - - This process will take time (few minutes). Are you sure to continue? - This process will take time (few minutes). Are you sure to continue? - - - This 'Project_name' already exist. Do you want rename old schema to '{0}' - This 'Project_name' already exist. Do you want rename old schema to '{0}' - - - This project name alredy exist. - This project name alredy exist. - - - This psector does not match the current one. Value of current psector will be updated. - This psector does not match the current one. Value of current psector will be updated. - - - This result name already exists - This result name already exists - - - This SRID value does not exist on Postgres Database. Please select a diferent one. - This SRID value does not exist on Postgres Database. Please select a diferent one. - - - This task may take some time to complete, do you want to proceed? - This task may take some time to complete, do you want to proceed? - - - This tool is still in developement, it might not work as intended. - This tool is still in developement, it might not work as intended. - - - This will also delete all related entries in the sys_style table.Confirm Cascade Delete - This will also delete all related entries in the sys_style table.Confirm Cascade Delete - - - This will also delete the database user(s): - This will also delete the database user(s): - - - This will also delete the database user(s): - This will also delete the database user(s): - - - !!!!! THIS WILL DELETE ALL DATA IN THE DATABASE !!!!! - !!!!! THIS WILL DELETE ALL DATA IN THE DATABASE !!!!! - - - !!!!! THIS WILL DELETE ALL DATA IN THE DATABASE !!!!!\nARE YOU SURE YOU WANT TO PROCEED? - !!!!! THIS WILL DELETE ALL DATA IN THE DATABASE !!!!!\nARE YOU SURE YOU WANT TO PROCEED? - - - This will modify your inp file - This will modify your inp file, so a backup will be created.\n \ - - - This will modify your inp file, so a backup will be created. - This will modify your inp file, so a backup will be created. - - - This will modify your inp file, so a backup will be created.\nDo you want to proceed? - This will modify your inp file, so a backup will be created.\nDo you want to proceed? - - - This wizard will help with the process of importing a network from a {0} INP file into the Giswater database. - This wizard will help with the process of importing a network from a {0} INP file into the Giswater database. - - - This Workcat already exist - This Workcat already exist - - - This Workcat is already exist - This Workcat is already exist - - - title = {{Modeling and Analyzing Urban Networks and Amenities with OSMnx}}, - title = {{Modeling and Analyzing Urban Networks and Amenities with OSMnx}}, - - - To make the result id {0} corporate, is necessary to make not corporate the following result ids: {1}. Do you want to proceed? - To make the result id {0} corporate, is necessary to make not corporate the following result ids: {1}. Do you want to proceed? - - - To modify columns (top_elev, ymax, elev among others) to be interpolated set variable edit_node_interpolate on table config_param_user - To modify columns (top_elev, ymax, elev among others) to be interpolated set variable edit_node_interpolate on table config_param_user - - - Toolbox task is already active! - Toolbox task is already active! - - - {tools_qt.tr( - {tools_qt.tr( - - - {tools_qt.tr()} - {tools_qt.tr()} - - - {tools_qt.tr()}: {snapped_feature_attr[0]} - {tools_qt.tr()}: {snapped_feature_attr[0]} - - - {tools_qt.tr()}: {snapped_feature_attr[0]}\n{tools_qt.tr()}\n\n - {tools_qt.tr()}: {snapped_feature_attr[0]}\n{tools_qt.tr()}\n\n - - - To open psector {0}, it must be activated before. - To open psector {0}, it must be activated before. - - - To see the conflicts load the views - To see the conflicts, load the views - - - Total - Total - - - Total municipalities processed: {0} - Total municipalities processed: {0} - - - Total of pipes: {pipes}. - Total of pipes: {pipes}. - - - TRACEABILITY - TRACEABILITY - - - translation canceled - translation canceled - - - translation failed in table - translation failed in table - - - translation successful - translation successful - - - Tried to set {0} to '{1}' but it's not an integer. Defaulting to 4 threads. - Tried to set {0} to '{1}' but it's not an integer. Defaulting to 4 threads. - - - Triggers updated successfully - Triggers updated successfully - - - Truncated graph by bounding box - Truncated graph by bounding box - - - Truncated graph by polygon - Truncated graph by polygon - - - Try again - Try again - - - Typeahead '{0}' doesn't have neither a queryText nor comboIds/comboNames. - Typeahead '{0}' doesn't have neither a queryText nor comboIds/comboNames. - - - type = {Working paper}, - type = {Working paper}, - - - Uknown - Uknown - - - Unable to create '{extension}' extension. Packages must be installed, consult your administrator. - Unable to create '{extension}' extension. Packages must be installed, consult your administrator. - - - Unable to create fuzzystrmatch extension. Packages must be installed - Unable to create fuzzystrmatch extension. Packages must be installed, consult your administrator - - - (Unable to create one extension. Packages must be installed, consult your administrator) - (Unable to create one extension. Packages must be installed, consult your administrator) - - - Unable to create Postgis extension. Packages must be installed - Unable to create Postgis extension. Packages must be installed, consult your administrator - - - Unable to highlight the snapped node. - Unable to highlight the snapped node. - - - Undefined error - Undefined error - - - Unexpected json_data structure! - Unexpected json_data structure! - - - Unhandled Error - Unhandled Error - - - Unknown context: {0}, skipping. - Unknown context: {0}, skipping. - - - Unrecognised form type - Unrecognised form type - - - Unsuported geometry type - Unsuported geometry type - - - Update configuration - Update configuration - - - Update Confirmation - Update Confirmation - - - Update records - Update records - - - Updating {0}... - Updating {0}... - - - Updating tables - Updating tables - - - url = {https://geoffboeing.com/publications/osmnx-paper/}, - url = {https://geoffboeing.com/publications/osmnx-paper/}, - - - User - User - - - User '{0}' was created, but failed to grant roles ('{1}', 'role_basic'). - User '{0}' was created, but failed to grant roles ('{1}', 'role_basic'). - - - User not found - User not found - - - User set `doh_url_template=None`, requesting host by name - User set `doh_url_template=None`, requesting host by name - - - User settings file: {0} - User settings file: {0} - - - Vacuum executed: {0}.{1} - Vacuum executed: {0}.{1} - - - VALUE DOMAIN - VALUE DOMAIN - - - Value in addparam must be in a json format - Value in addparam must be in a json format - - - Values has been updated - Values has been updated - - - Values saved successfully. - Values saved successfully. - - - Valve analytics executed successfully - Valve analytics executed successfully - - - Variable log_sql from user config file has been disabled. - Variable log_sql from user config file has been disabled. - - - Variable log_sql from user config file has been enabled. - Variable log_sql from user config file has been enabled. - - - Version - Version - - - Version: {self.project_version} - Version: {self.project_version} - - - VISIT - VISIT - - - Warning - Warning - - - WARNING - WARNING - - - Warning: Are you sure to continue?. This button will update your plugin qgis templates file replacing all strings defined on the config/dev.config file. Be sure your config file is OK before continue - Warning: Are you sure to continue?. This button will update your plugin qgis templates file replacing all strings defined on the config/dev.config file. Be sure your config file is OK before continue - - - Warnings: - Warnings: - - - WARNING: This will remove the 'utils_workspace_current' variable for your user! - WARNING: This will remove the 'utils_workspace_current' variable for your user! - - - WARNING: This will remove the 'utils_workspace_current' variable for your user!\nAre you sure you want to delete these records? - WARNING: This will remove the 'utils_workspace_current' variable for your user!\nAre you sure you want to delete these records? - - - WARNING: You have updated the status value to CANCELED (Save Trace). If you click 'Accept' on - WARNING: You have updated the status value to CANCELED (Save Trace). If you click 'Accept' on - - - WARNING: You have updated the status value to EXECUTED (Save Trace). If you click 'Accept' on - WARNING: You have updated the status value to EXECUTED (Save Trace). If you click 'Accept' on - - - WARNING: You have updated the status value to EXECUTED (Set OPERATIVE and Save Trace). If you - WARNING: You have updated the status value to EXECUTED (Set OPERATIVE and Save Trace). If you - - - Weights - Weights - - - `which_result` length must equal `query` length. - `which_result` length must equal `query` length. - - - widget {0} has associated function {1}, but {2} not exist - widget {0} has associated function {1}, but {2} not exist - - - widget {0} has not columnname and can't be configured - widget {0} has not columnname and can't be configured - - - widget {0} has not columnname and cant be configured - widget {0} has not columnname and cant be configured - - - widget {0} have associated function {1}, but {2} not exist - widget {0} have associated function {1}, but {2} not exist - - - widget {0} in tab {1} has not columnname and can't be configured - widget {0} in tab {1} has not columnname and can't be configured - - - widget {0} in tab {1} has not columnname and cant be configured - widget {0} in tab {1} has not columnname and cant be configured - - - Widget {0} is not configured or have a bad config - Widget {0} is not configured or have a bad config - - - Widget: {0} not in form. - Widget: {0} not in form. - - - Widget expl_id not found - Widget expl_id not found - - - Widget is not a QTableView - Widget is not a QTableView - - - Widget model is none: {0} - Widget model is none: {0} - - - widgetname not found. - widgetname not found. - - - Widget not found - Widget not found - - - widgettype is wrongly configured. Needs to be in - widgettype is wrongly configured. Needs to be in - - - widgettype not found. - widgettype not found. - - - Without replacements - Without replacements - - - With replacements - With replacements - - - Workcat created successfully. - Workcat created successfully. - - - Work_id field is empty - Work_id field is empty - - - Write inp file........: {0} - Write inp file........: {0} - - - `X` and `Y` cannot contain nulls. - `X` and `Y` cannot contain nulls. - - - Year - Year - - - year = {2024} - year = {2024} - - - You are about to delete the result - You are about to delete the result - - - You are about to delete the result - You are about to delete the result - - - You are about to import the INP file in TESTING MODE. This will delete all the data in the database related to the network you are importing. Are you sure you want to proceed? - You are about to import the INP file in TESTING MODE. This will delete all the data in the database related to the network you are importing. Are you sure you want to proceed? - - - You are about to load some CM layers to the following file: {0} - You are about to load some CM layers to the following file: {0} - - - You are about to load some CM layers to the following file: {0}\n\nAre you sure you want to continue? - You are about to load some CM layers to the following file: {0}\n\nAre you sure you want to continue? - - - You are about to perform this action aiming to the following file: {0} - You are about to perform this action aiming to the following file: {0} - - - You are about to perform this action aiming to the following file: {0}\n\nAre you sure you want to continue? - You are about to perform this action aiming to the following file: {0}\n\nAre you sure you want to continue? - - - You are about to perform this action aiming to the following schema: {0} - You are about to perform this action aiming to the following schema: {0} - - - You are going to change the epa_type. With this operation you will lose information about current epa_type values of this object. Would you like to continue? - You are going to change the epa_type. With this operation you will lose information about current epa_type values of this object. Would you like to continue? - - - You are going to lose previous information! - You are going to lose previous information! - - - You are going to make this result corporate. From now on the result values will appear on feature form. Do you want to continue? - You are going to make this result corporate. From now on the result values will appear on feature form. Do you want to continue? - - - You are not enabled to modify this {0} widget - You are not enabled to modify this {0} widget - - - You are not enabled to modify this epa_type widget - You are not enabled to modify this epa_type widget - - - You are trying to add/remove a record from the table, with changes to the current records. If you continue, the changes will be discarded without saving. Do you want to continue? - You are trying to add/remove a record from the table, with changes to the current records. If you continue, the changes will be discarded without saving. Do you want to continue? - - - You are trying to add/remove a record from the table, with changes to the current records.If you continue, the changes will be discarded without saving. Do you want to continue? - You are trying to add/remove a record from the table, with changes to the current records.If you continue, the changes will be discarded without saving. Do you want to continue? - - - You are trying to delete your current psector. Please, change your current psector before delete. - You are trying to delete your current psector. Please, change your current psector before delete. - - - You are trying to enter different types - You are trying to enter different types - - - You can change it and use 'Update Style' to create a personalized version. - You can change it and use 'Update Style' to create a personalized version. - - - You cannot change the status of a result with status 'FINISHED'. - You cannot change the status of a result with status 'FINISHED'. - - - You cannot insert more than one feature at the same time - You cannot insert more than one feature at the same time, finish editing the previous feature - - - You cannot insert more than one feature at the same time, finish editing the previous feature - You cannot insert more than one feature at the same time, finish editing the previous feature - - - You can only delete results with the status 'CANCELED'. - You can only delete results with the status 'CANCELED'. - - - You can save the current configuration to a file and load it later, or load the last saved configuration. - You can save the current configuration to a file and load it later, or load the last saved configuration. - - - You can't delete these mincuts because they aren't planified - You can't delete these mincuts because they aren't planified - - - You can't delete these mincuts because they aren't planified \nor they were created by another user: - You can't delete these mincuts because they aren't planified \nor they were created by another user: - - - You closed a valve - You closed a valve, this will modify the current mapzones and it may take a little bit of time. - - - You closed a valve, this will modify the current mapzones and it may take a little bit of time. - You closed a valve, this will modify the current mapzones and it may take a little bit of time. - - - You closed a valve, this will modify the current mapzones and it may take a little bit of time. Would you like to continue? - You closed a valve, this will modify the current mapzones and it may take a little bit of time. Would you like to continue? - - - You closed a valve, this will modify the current mapzones and it may take a little bit of time.Would you like to continue? - You closed a valve, this will modify the current mapzones and it may take a little bit of time.Would you like to continue? - - - You do not have any connection to PostGIS database configurated. - You do not have any connection to PostGIS database configurated. - - - You do not have any connection to PostGIS database configurated. Check your QGIS data source manager and create at least one - You do not have any connection to PostGIS database configurated. Check your QGIS data source manager and create at least one - - - You do not have permissions to administrate project schemas on this connection - You do not have permissions to administrate project schemas on this connection - - - (You do not have permissions to administrate project schemas. Please contact your administrator) - (You do not have permissions to administrate project schemas. Please contact your administrator) - - - You do not have permission to execute this application - You do not have permission to execute this application - - - You don't have any connection to PostGIS database configurated. - You don't have any connection to PostGIS database configurated. - - - You don't have any connection to PostGIS database configurated. Check your QGIS data source manager and create at least one - You don't have any connection to PostGIS database configurated. Check your QGIS data source manager and create at least one - - - You don't have permissions to administrate project schemas on this connection - You don't have permissions to administrate project schemas on this connection - - - You have selected multiple documents. In this case, name will be a sequential number for all selected documents and your name won't be used. - You have selected multiple documents. In this case, name will be a sequential number for all selected documents and your name won't be used. - - - You have to fill in 'date' - You have to fill in 'time' and 'value' fields! - - - You have to fill in 'date', 'time' and 'value' fields! - You have to fill in 'date', 'time' and 'value' fields! - - - You have to fill in 'time' and 'value' fields! - You have to fill in 'time' and 'value' fields! - - - You have to import a ibergis GPKG project first - You have to import a ibergis GPKG project first - - - You have to select at least one feature! - You have to select at least one feature! - - - You have to set this parameter - You have to set this parameter - - - You have to set this parameter: INP file - You have to set this parameter: INP file - - - You have to set this parameter: RPT file - You have to set this parameter: RPT file - - - You must choose at least one action - You must choose at least one action - - - You must pass at least 1 route. - You must pass at least 1 route. - - - You must pass one and only one of `filepath` or `graphml_str`. - You must pass one and only one of `filepath` or `graphml_str`. - - - You must request nodes or edges or both. - You must request nodes or edges or both. - - - You must select two different points - You must select two different points - - - You need at least one row of values. - You need at least one row of values. - - - You need to enter a customer code - You need to enter a customer code - - - You need to enter a feature id - You need to enter a feature id - - - You need to enter a psector name - You need to enter a psector name - - - You need to enter a visit ID - You need to enter a visit ID - - - You need to enter a workcat id - You need to enter a workcat id - - - You need to enter hydrometer_id - You need to enter hydrometer_id - - - You need to have a mesh - You need to have a mesh - - - You need to have a ws and ud schema created to create a utils schema - You need to have a ws and ud schema created to create a utils schema - - - You need to insert a document name - You need to insert a document name - - - You need to insert data - You need to insert data - - - You need to insert doc_id - You need to insert doc_id - - - You need to insert doc_type - You need to insert doc_type - - - You need to insert psector_id - You need to insert psector_id - - - You need to insert value for field - You need to insert value for field - - - You need to insert visit_id - You need to insert visit_id - - - You need to select a template - You need to select a template - - - You need to select at least one process - You need to select at least one process - - - You need to select a valid parameter id - You need to select a valid parameter id - - - You need to select same version for ws and ud projects. Versions: WS - {} ; UD - {} - You need to select same version for ws and ud projects. Versions: WS - {} ; UD - {} - - - You need to select some sector - You need to select some sector - - - You need to upgrade your version of pg_routing! - You need to upgrade your version of pg_routing! - - - You need to upgrade your version of pgRouting - You need to upgrade your version of pgRouting - - - Your composer's path is bad configured. Please - Your composer's path is bad configured. Please, modify it and try again. - - - Your composer's path is bad configured. Please, modify it and try again. - Your composer's path is bad configured. Please, modify it and try again. - - - Your exploitation selector has been updated - Your exploitation selector has been updated - - - You should inform a file name! - You should inform a file name! - - - You should select a config file! - You should select a config file! - - - You should select an config file! - You should select an config file! - - - You should select an input INP file! - You should select an input INP file! - - - You should select an output folder! - You should select an output folder! - - - You will need to restart QGIS or reload Giswater plugin to apply changes. Do you want continue? - You will need to restart QGIS or reload Giswater plugin to apply changes. Do you want continue? - - - You will need to restart QGIS to apply changes. Do you want continue? - You will need to restart QGIS to apply changes. Do you want continue? - - - Zoom unavailable. Doesn't exist the geometry for the street - Zoom unavailable. Doesn't exist the geometry for the street - - - - - add_campaign - - title - Campaign - - - btn_accept - Accept - - - tooltip_btn_accept - Accept - - - btn_cancel - Cancel - - - tooltip_btn_cancel - Cancel - - - dlg_add_campaign - Campaign - - - tooltip_dlg_add_campaign - dlg_add_campaign - - - tab_arc - Arc - - - tooltip_tab_arc - Arc - - - tab_connec - Connec - - - tooltip_tab_connec - Connec - - - tab_data - Campaign - - - tooltip_tab_data - Campaign - - - tab_gully - Gully - - - tooltip_tab_gully - Gully - - - tab_link - Link - - - tooltip_tab_link - Link - - - tab_node - Node - - - tooltip_tab_node - Node - - - tab_relations - Elements relation - - - tooltip_tab_relations - Elements relation - - - - add_campaign_inventory - - add_campaign - Campaign - - - tooltip_add_campaign - add_campaign - - - btn_accept - Accept - - - tooltip_btn_accept - btn_accept - - - btn_cancel - Cancel - - - tooltip_btn_cancel - btn_cancel - - - tab_arc - Arc - - - tooltip_tab_arc - tab_arc - - - tab_connec - Connec - - - tooltip_tab_connec - tab_connec - - - tab_data - Campaign - - - tooltip_tab_data - tab_data - - - tab_gully - Gully - - - tooltip_tab_gully - tab_gully - - - tab_link - Link - - - tooltip_tab_link - tab_link - - - tab_node - Node - - - tooltip_tab_node - tab_node - - - tab_relations - Element relations - - - tooltip_tab_relations - tab_relations - - - - add_campaign_review - - actionT - t - - - tooltip_actionT - actionT - - - add_campaign - Campaign - - - tooltip_add_campaign - add_campaign - - - btn_accept - Accept - - - tooltip_btn_accept - btn_accept - - - btn_cancel - Cancel - - - tooltip_btn_cancel - btn_cancel - - - tab_arc - Arc - - - tooltip_tab_arc - tab_arc - - - tab_connec - Connec - - - tooltip_tab_connec - tab_connec - - - tab_data - Campaign - - - tooltip_tab_data - tab_data - - - tab_gully - Gully - - - tooltip_tab_gully - tab_gully - - - tab_link - Link - - - tooltip_tab_link - tab_link - - - tab_node - Node - - - tooltip_tab_node - tab_node - - - tab_relations - Element relations - - - tooltip_tab_relations - tab_relations - - - - add_campaign_review_old - - action_selector - ... - - - tooltip_action_selector - action_selector - - - actionT - t - - - tooltip_actionT - actionT - - - active - Active: - - - tooltip_active - active - - - add_campaign - Campaign - - - tooltip_add_campaign - add_campaign - - - btn_accept - Accept - - - tooltip_btn_accept - btn_accept - - - btn_cancel - Cancel - - - tooltip_btn_cancel - btn_cancel - - - campaign_btn_export_rel - Export to csv - - - tooltip_campaign_btn_export_rel - campaign_btn_export_rel - - - campaign_btn_path_rel - ... - - - tooltip_campaign_btn_path_rel - campaign_btn_path_rel - - - CampaignTab - Campaign - - - tooltip_CampaignTab - CampaignTab - - - grb_campaign - Campaign: - - - tooltip_grb_campaign - grb_campaign - - - label - Exercise: - - - tooltip_label - label - - - label_2 - Serie: - - - tooltip_label_2 - label_2 - - - label_3 - Inici real: - - - tooltip_label_3 - label_3 - - - label_4 - Fi real: - - - tooltip_label_4 - label_4 - - - label_5 - Organization: - - - tooltip_label_5 - label_5 - - - label_6 - Duration: - - - tooltip_label_6 - label_6 - - - label_7 - Status: - - - tooltip_label_7 - label_7 - - - label_8 - Address: - - - tooltip_label_8 - label_8 - - - label_feature_type - Element type: - - - tooltip_label_feature_type - label_feature_type - - - label_flexunion_code_5 - Descripció: - - - tooltip_label_flexunion_code_5 - label_flexunion_code_5 - - - label_node_type - Id: - - - tooltip_label_node_type - label_node_type - - - label_node_type_2 - Planified end: - - - tooltip_label_node_type_2 - label_node_type_2 - - - label_node_type_3 - Planified start: - - - tooltip_label_node_type_3 - label_node_type_3 - - - label_node_type_5 - Rotation: - - - tooltip_label_node_type_5 - label_node_type_5 - - - RelationsTab - Elements relations - - - tooltip_RelationsTab - RelationsTab - - - reviewclass_id - Reviewclass: - - - tooltip_reviewclass_id - reviewclass_id - - - - add_campaign_visit - - actionT - t - - - tooltip_actionT - actionT - - - add_campaign - Visit - - - tooltip_add_campaign - add_campaign - - - btn_accept - Accept - - - tooltip_btn_accept - btn_accept - - - btn_cancel - Cancel - - - tooltip_btn_cancel - btn_cancel - - - tab_arc - Arc - - - tooltip_tab_arc - tab_arc - - - tab_connec - Connec - - - tooltip_tab_connec - tab_connec - - - tab_data - Campaign - - - tooltip_tab_data - tab_data - - - tab_gully - Gully - - - tooltip_tab_gully - tab_gully - - - tab_link - Link - - - tooltip_tab_link - tab_link - - - tab_node - Node - - - tooltip_tab_node - tab_node - - - tab_relations - Element relations - - - tooltip_tab_relations - tab_relations - - - - add_campaign_visit_old - - action_selector - ... - - - tooltip_action_selector - action_selector - - - actionT - t - - - tooltip_actionT - actionT - - - active - Active: - - - tooltip_active - active - - - add_campaign - Lot - - - tooltip_add_campaign - add_campaign - - - btn_accept - Accept - - - tooltip_btn_accept - btn_accept - - - btn_cancel - Close - - - tooltip_btn_cancel - btn_cancel - - - campaign_btn_export_rel - Export to csv - - - tooltip_campaign_btn_export_rel - campaign_btn_export_rel - - - campaign_btn_path_rel - ... - - - tooltip_campaign_btn_path_rel - campaign_btn_path_rel - - - CampaignTab - Campaign - - - tooltip_CampaignTab - CampaignTab - - - grb_campaign - Campaign: - - - tooltip_grb_campaign - grb_campaign - - - label - Exercise: - - - tooltip_label - label - - - label_2 - Serie: - - - tooltip_label_2 - label_2 - - - label_3 - Real start: - - - tooltip_label_3 - label_3 - - - label_4 - Real end: - - - tooltip_label_4 - label_4 - - - label_5 - Organization: - - - tooltip_label_5 - label_5 - - - label_6 - Duration: - - - tooltip_label_6 - label_6 - - - label_7 - Status: - - - tooltip_label_7 - label_7 - - - label_8 - Address: - - - tooltip_label_8 - label_8 - - - label_feature_type - Type of element - - - tooltip_label_feature_type - label_feature_type - - - label_flexunion_code_5 - Description: - - - tooltip_label_flexunion_code_5 - label_flexunion_code_5 - - - label_node_type - Id: - - - tooltip_label_node_type - label_node_type - - - label_node_type_2 - Planified end: - - - tooltip_label_node_type_2 - label_node_type_2 - - - label_node_type_3 - Planified start: - - - tooltip_label_node_type_3 - label_node_type_3 - - - label_node_type_5 - Rotation: - - - tooltip_label_node_type_5 - label_node_type_5 - - - RelationsTab - Elements relations - - - tooltip_RelationsTab - RelationsTab - - - visitclass_id - Visitclass: - - - tooltip_visitclass_id - visitclass_id - - - - add_demand_check - - title - Additional Demand Check - - - btn_cancel - Cancel - - - tooltip_btn_cancel - btn_cancel - - - btn_ok - OK - - - tooltip_btn_ok - btn_ok - - - dlg_add_demand_check - Additional Demand Check - - - tooltip_dlg_add_demand_check - dlg_add_demand_check - - - lbl_config - Configuration file: - - - tooltip_lbl_config - lbl_config - - - lbl_filename - File name: - - - tooltip_lbl_filename - lbl_filename - - - lbl_input_file - Input INP file: - - - tooltip_lbl_input_file - lbl_input_file - - - lbl_nodes - Use nodes from: - - - tooltip_lbl_nodes - lbl_nodes - - - lbl_output_folder - Output folder: - - - tooltip_lbl_output_folder - lbl_output_folder - - - rdb_nodes_config - Configuration file: - - - tooltip_rdb_nodes_config - rdb_nodes_config - - - rdb_nodes_database - Database - - - tooltip_rdb_nodes_database - rdb_nodes_database - - - - add_lot - - title - Lot - - - actionT - t - - - tooltip_actionT - actionT - - - add_lot - Lot - - - tooltip_add_lot - add_lot - - - btn_accept - Accept - - - tooltip_btn_accept - btn_accept - - - btn_cancel - Cancel - - - tooltip_btn_cancel - btn_cancel - - - btn_delete_visit - Delete visit - - - tooltip_btn_delete_visit - Delete visit - - - btn_export_rel - Export to csv - - - tooltip_btn_export_rel - Export to csv - - - btn_export_visits - Export to csv - - - tooltip_btn_export_visits - Export to csv - - - btn_open_photo - Open photo - - - tooltip_btn_open_photo - Open photo - - - btn_open_visit - Open visit - - - tooltip_btn_open_visit - Open visit - - - btn_path - ... - - - tooltip_btn_path - btn_path - - - btn_validate_all - Validate all - - - tooltip_btn_validate_all - Validate all - - - dlg_add_lot - Lot - - - tooltip_dlg_add_lot - dlg_add_lot - - - grb_lot - Lot: - - - tooltip_grb_lot - Lot: - - - grb_ot - Work order - - - tooltip_grb_ot - Work order - - - label_data_event_from - From: - - - tooltip_label_data_event_from - From: - - - label_data_event_to - Until: - - - tooltip_label_data_event_to - To: - - - label_feature_type - Element type: - - - tooltip_label_feature_type - Element type: - - - lbl_address - Address: - - - tooltip_lbl_address - Address: - - - lbl_description - Description: - - - tooltip_lbl_description - Description: - - - lbl_filter - Filter by element id: - - - tooltip_lbl_filter - Filter by element id: - - - lbl_id - Id: - - - tooltip_lbl_id - Id: - - - lbl_observations - Observations: - - - tooltip_lbl_observations - Observations: - - - lbl_ot - Ot: - - - tooltip_lbl_ot - Ot: - - - lbl_ot_type - Ot type: - - - tooltip_lbl_ot_type - Ot type: - - - lbl_performance_type - Performance type: - - - tooltip_lbl_performance_type - Performance type: - - - lbl_plan_end - Planned end: - - - tooltip_lbl_plan_end - Planned end: - - - lbl_plan_start - Planned start: - - - tooltip_lbl_plan_start - Planned start: - - - lbl_real_end - Real end: - - - tooltip_lbl_real_end - Real end: - - - lbl_real_start - Real start: - - - tooltip_lbl_real_start - Real start: - - - lbl_state - State: - - - tooltip_lbl_state - State: - - - lbl_team - Team: - - - tooltip_lbl_team - Team: - - - lbl_user - User: - - - tooltip_lbl_user - User: - - - LotTab - Lot - - - tooltip_LotTab - Lot - - - RelationsTab - Element relations - - - tooltip_RelationsTab - Elements relation - - - tab_arc - Arc - - - tooltip_tab_arc - tab_arc - - - tab_connec - Connec - - - tooltip_tab_connec - tab_connec - - - tab_gully - Gully - - - tooltip_tab_gully - tab_gully - - - tab_link - Link - - - tooltip_tab_link - tab_link - - - tab_node - Node - - - tooltip_tab_node - tab_node - - - VisitsTab - Visits - - - tooltip_VisitsTab - Visits - - - - add_workorder - - title - Workorder - - - actionT - t - - - tooltip_actionT - actionT - - - add_workorder - Workorder - - - tooltip_add_workorder - add_workorder - - - btn_accept - Accept - - - tooltip_btn_accept - btn_accept - - - btn_cancel - Cancel - - - tooltip_btn_cancel - btn_cancel - - - dlg_add_workorder - Workorder - - - tooltip_dlg_add_workorder - dlg_add_workorder - - - tab_data - Workorder - - - tooltip_tab_data - tab_data - - - - admin - - title - Giswater - - - action_create_sample - Create Sample - - - tooltip_action_create_sample - action_create_sample - - - action_create_sample_dev - Create Sample Dev - - - tooltip_action_create_sample_dev - action_create_sample_dev - - - btn_activate_audit - Activate audit environment - - - tooltip_btn_activate_audit - btn_activate_audit - - - btn_close - Close - - - tooltip_btn_close - btn_close - - - btn_copy - Copy - - - tooltip_btn_copy - btn_copy - - - btn_create_asset - Create DB asset schema - - - tooltip_btn_create_asset - btn_create_asset - - - btn_create_audit - Create DB audit schema - - - tooltip_btn_create_audit - btn_create_audit - - - btn_create_cm - Create DB cm schema - - - tooltip_btn_create_cm - btn_create_cm - - - btn_create_field - Create - - - tooltip_btn_create_field - btn_create_field - - - btn_create_qgis_template - QGIS templates - - - tooltip_btn_create_qgis_template - btn_create_qgis_template - - - btn_create_utils - Create - - - tooltip_btn_create_utils - btn_create_utils - - - btn_custom_load_file - Load SQL files - - - tooltip_btn_custom_load_file - btn_custom_load_file - - - btn_custom_select_file - ... - - - tooltip_btn_custom_select_file - btn_custom_select_file - - - btn_delete - Delete - - - tooltip_btn_delete - btn_delete - - - btn_delete_field - Delete - - - tooltip_btn_delete_field - btn_delete_field - - - btn_gis_create - Create - - - tooltip_btn_gis_create - btn_gis_create - - - btn_i18n - i18n manager - - - tooltip_btn_i18n - btn_i18n - - - btn_import_osm_streetaxis - Import OSM Streetaxis - - - tooltip_btn_import_osm_streetaxis - btn_import_osm_streetaxis - - - btn_info - Update - - - tooltip_btn_info - Update version of a selected database schema - - - btn_markdown_generator - Markdown generator - - - tooltip_btn_markdown_generator - btn_markdown_generator - - - btn_reload_audit_triggers - Refresh audit - - - tooltip_btn_reload_audit_triggers - btn_reload_audit_triggers - - - btn_reload_fct_ftrg - Execute - - - tooltip_btn_reload_fct_ftrg - btn_reload_fct_ftrg - - - btn_schema_create - Create - - - tooltip_btn_schema_create - btn_schema_create - - - btn_schema_rename - Rename - - - tooltip_btn_schema_rename - btn_schema_rename - - - btn_translation - Translation files - - - tooltip_btn_translation - btn_translation - - - btn_update_field - Update - - - tooltip_btn_update_field - btn_update_field - - - btn_update_translation - Instant update i18n - - - tooltip_btn_update_translation - btn_update_translation - - - btn_update_utils - Update - - - tooltip_btn_update_utils - btn_update_utils - - - btn_vacuum - Execute - - - tooltip_btn_vacuum - btn_vacuum - - - chk_add_fields_multi - Addfield multicreate - - - tooltip_chk_add_fields_multi - chk_add_fields_multi - - - dlg_admin - Giswater - - - tooltip_dlg_admin - dlg_admin - - - grb_conection - Connection - - - tooltip_grb_conection - grb_conection - - - grb_files_generator - Plugin files generator - - - tooltip_grb_files_generator - grb_files_generator - - - grb_i18n - i18n - - - tooltip_grb_i18n - grb_i18n - - - grb_load_cf - Load custom file - - - tooltip_grb_load_cf - grb_load_cf - - - grb_manage_addfields - Manage add fields - - - tooltip_grb_manage_addfields - grb_manage_addfields - - - grb_project_scin - Project schema - - - tooltip_grb_project_scin - grb_project_scin - - - grb_schema_manager - QGIS project management - - - tooltip_grb_schema_manager - grb_schema_manager - - - grb_schema_reload - Schema management - - - tooltip_grb_schema_reload - grb_schema_reload - - - groupBox - Schema Utils - - - tooltip_groupBox - groupBox - - - groupBox_2 - Additional schema management - - - tooltip_groupBox_2 - groupBox_2 - - - grp_i18n_update - Schema i18n update - - - tooltip_grp_i18n_update - grp_i18n_update - - - grp_import_osm - Import OSM Streetaxis - - - tooltip_grp_import_osm - grp_import_osm - - - label - WS: - - - tooltip_label - label - - - label_2 - UD: - - - tooltip_label_2 - label_2 - - - lbl_add_fields_feature - Feature name: - - - tooltip_lbl_add_fields_feature - lbl_add_fields_feature - - - lbl_connection - Connection name: - - - tooltip_lbl_connection - lbl_connection - - - lbl_name - Name: - - - tooltip_lbl_name - lbl_name - - - lbl_project_type - Project Type: - - - tooltip_lbl_project_type - lbl_project_type - - - lbl_reload_fct_ftrg - Reload functions &amp; function triggers - - - tooltip_lbl_reload_fct_ftrg - lbl_reload_fct_ftrg - - - lbl_vacuum - Execute vacuum on selected schema - - - tooltip_lbl_vacuum - lbl_vacuum - - - tab_advanced - Advanced - - - tooltip_tab_advanced - tab_advanced - - - tab_dev - Dev - - - tooltip_tab_dev - tab_dev - - - tab_general - General - - - tooltip_tab_general - tab_general - - - - admin_addfields - - title - Dialog - - - btn_accept - Accept - - - tooltip_btn_accept - Accept - - - btn_cancel - Cancel - - - tooltip_btn_cancel - btn_cancel - - - btn_open - Open - - - tooltip_btn_open - btn_open - - - dlg_admin_addfields - Dialog - - - tooltip_dlg_admin_addfields - dlg_admin_addfields - - - dlg_main_addfields - Add Fields - - - tooltip_dlg_main_addfields - dlg_main_addfields - - - grb_additional - Additional configuration - - - tooltip_grb_additional - grb_additional - - - grb_mandatory - Mandatory addfields configuration - - - tooltip_grb_mandatory - grb_mandatory - - - lbl_action_function - Action function: - - - tooltip_lbl_action_function - lbl_action_function - - - lbl_active - Active: - - - tooltip_lbl_active - lbl_active - - - lbl_auto_update - Auto update: - - - tooltip_lbl_auto_update - lbl_auto_update - - - lbl_column_id - Column name: - - - tooltip_lbl_column_id - lbl_column_id - - - lbl_columnname - Column name: - - - tooltip_lbl_columnname - lbl_columnname - - - lbl_data_type - Data type: - - - tooltip_lbl_data_type - lbl_data_type - - - lbl_datatype - Data type: - - - tooltip_lbl_datatype - lbl_datatype - - - lbl_dv_orderby - Order by id: - - - tooltip_lbl_dv_orderby - lbl_dv_orderby - - - lbl_dv_querynullvalue - Query null value: - - - tooltip_lbl_dv_querynullvalue - lbl_dv_querynullvalue - - - lbl_dv_querytext - Query text: - - - tooltip_lbl_dv_querytext - lbl_dv_querytext - - - lbl_editability - Editability: - - - tooltip_lbl_editability - lbl_editability - - - lbl_editable - Editable: - - - tooltip_lbl_editable - lbl_editable - - - lbl_enabled - Enabled: - - - tooltip_lbl_enabled - lbl_enabled - - - lbl_field_length - Field length: - - - tooltip_lbl_field_length - lbl_field_length - - - lbl_field_name - Field name: - - - tooltip_lbl_field_name - lbl_field_name - - - lbl_form_type - Form type: - - - tooltip_lbl_form_type - lbl_form_type - - - lbl_formtype - Form type: - - - tooltip_lbl_formtype - lbl_formtype - - - lbl_hidden - Hidden: - - - tooltip_lbl_hidden - lbl_hidden - - - lbl_iseditable - Editable: - - - tooltip_lbl_iseditable - lbl_iseditable - - - lbl_ismandatory - Mandatory: - - - tooltip_lbl_ismandatory - lbl_ismandatory - - - lbl_label - Label: - - - tooltip_lbl_label - lbl_label - - - lbl_layoutname - Layout name: - - - tooltip_lbl_layoutname - lbl_layoutname - - - lbl_linkedobject - Linkedobject: - - - tooltip_lbl_linkedobject - lbl_linkedobject - - - lbl_mandatory - Mandatory: - - - tooltip_lbl_mandatory - lbl_mandatory - - - lbl_multifeaturetype - Multi create feature: - - - tooltip_lbl_multifeaturetype - lbl_multifeaturetype - - - lbl_not_update - Not update: - - - tooltip_lbl_not_update - lbl_not_update - - - lbl_null_value - Null value: - - - tooltip_lbl_null_value - lbl_null_value - - - lbl_num_dec - Num decimals: - - - tooltip_lbl_num_dec - lbl_num_dec - - - lbl_parent - Parent: - - - tooltip_lbl_parent - lbl_parent - - - lbl_parent_id - Parent id: - - - tooltip_lbl_parent_id - lbl_parent_id - - - lbl_placeholder - Placeholder: - - - tooltip_lbl_placeholder - lbl_placeholder - - - lbl_query_filter - Query text filter: - - - tooltip_lbl_query_filter - lbl_query_filter - - - lbl_query_text - Query text: - - - tooltip_lbl_query_text - lbl_query_text - - - lbl_reload_field - Reload field: - - - tooltip_lbl_reload_field - lbl_reload_field - - - lbl_stylesheet - Stylesheet: - - - tooltip_lbl_stylesheet - lbl_stylesheet - - - lbl_tooltip - Tooltip: - - - tooltip_lbl_tooltip - lbl_tooltip - - - lbl_typeahead - Typeahead: - - - tooltip_lbl_typeahead - lbl_typeahead - - - lbl_widgetcontrols - Widgetcontrols - - - tooltip_lbl_widgetcontrols - Example configuration keys {"widgetdim": 150,"setMultiline":true,"vdefault": "01-01-2014", "filterSign": ">} - - - lbl_widget_function - Widget function: - - - tooltip_lbl_widget_function - lbl_widget_function - - - lbl_widget_type - Widget type: - - - tooltip_lbl_widget_type - lbl_widget_type - - - lbl_widgettype - Widget type: - - - tooltip_lbl_widgettype - lbl_widgettype - - - stylesheet - &lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;{&amp;quot;label&amp;quot;:&amp;quot;color:green; font-weight:bold;&amp;quot;,&amp;quot;widget&amp;quot;:{&amp;quot;enabled&amp;quot;:&amp;quot;color:black; font-weight:bold;&amp;quot;,&amp;quot;disabled&amp;quot;:&amp;quot;color:black; font-weight:bold;&amp;quot;}}&lt;/p&gt;&lt;/body&gt;&lt;/html&gt; - - - tooltip_stylesheet - stylesheet - - - tab_create - Create - - - tooltip_tab_create - tab_create - - - tab_delete - Delete - - - tooltip_tab_delete - tab_delete - - - tab_infolog - Log - - - tooltip_tab_infolog - tab_infolog - - - tab_update - Update - - - tooltip_tab_update - tab_update - - - - admin_cm_base - - title - Create base schema - - - btn_accept - Accept - - - tooltip_btn_accept - btn_accept - - - btn_cancel_task - Cancel task - - - tooltip_btn_cancel_task - btn_cancel_task - - - btn_close - Close - - - tooltip_btn_close - btn_close - - - dlg_admin_cm_base - Create base schema - - - tooltip_dlg_admin_cm_base - dlg_admin_cm_base - - - grb_projectschema - Project schema Settings - - - tooltip_grb_projectschema - grb_projectschema - - - lbl_descript - Description: - - - tooltip_lbl_descript - lbl_descript - - - lbl_project_name - Project name: - - - tooltip_lbl_project_name - lbl_project_name - - - - admin_cm_create - - title - Create project - - - actionCreate_Sample - Create Sample - - - tooltip_actionCreate_Sample - actionCreate_Sample - - - actionCreate_Sample_Dev - Create Sample Dev - - - tooltip_actionCreate_Sample_Dev - actionCreate_Sample_Dev - - - btn_accept - Accept - - - tooltip_btn_accept - btn_accept - - - btn_base_schema - Create cm schema - - - tooltip_btn_base_schema - btn_base_schema - - - btn_cancel_task - Cancel task - - - tooltip_btn_cancel_task - btn_cancel_task - - - btn_close - Close - - - tooltip_btn_close - btn_close - - - btn_example - Create example - - - tooltip_btn_example - btn_example - - - btn_parent_schema - Link to parent schema - - - tooltip_btn_parent_schema - btn_parent_schema - - - btn_pschema_qgis_file - Create pschema qgis file - - - tooltip_btn_pschema_qgis_file - btn_pschema_qgis_file - - - dlg_admin_cm_create - Create project - - - tooltip_dlg_admin_cm_create - dlg_admin_cm_create - - - grb_projectschema - CM schema options - - - tooltip_grb_projectschema - grb_projectschema - - - label - Create base schema cm: - - - tooltip_label - label - - - - admin_credentials - - title - Connection credentials - - - btn_accept - Accept - - - tooltip_btn_accept - Accept - - - dlg_admin_credentials - Connection credentials - - - tooltip_dlg_admin_credentials - dlg_admin_credentials - - - dlg_main_credentials - Main Credentials - - - tooltip_dlg_main_credentials - dlg_main_credentials - - - label - SSL Mode: - - - tooltip_label - label - - - lbl_connec - Connection: - - - tooltip_lbl_connec - lbl_connec - - - lbl_connection_message - Could not retrieve connection parameters for: - - - tooltip_lbl_connection_message - lbl_connection_message - - - lbl_password - Password: - - - tooltip_lbl_password - lbl_password - - - lbl_user_name - User name: - - - tooltip_lbl_user_name - lbl_user_name - - - - admin_dbproject - - title - Create project - - - actionCreate_Sample - Create Sample - - - tooltip_actionCreate_Sample - actionCreate_Sample - - - actionCreate_Sample_Dev - Create Sample Dev - - - tooltip_actionCreate_Sample_Dev - actionCreate_Sample_Dev - - - btn_accept - Accept - - - tooltip_btn_accept - Accept - - - btn_cancel_task - Cancel task - - - tooltip_btn_cancel_task - btn_cancel_task - - - btn_close - Close - - - tooltip_btn_close - Close - - - btn_push_file - ... - - - tooltip_btn_push_file - btn_push_file - - - dlg_admin_dbproject - Create project - - - tooltip_dlg_admin_dbproject - dlg_admin_dbproject - - - dlg_main_dbproject - Create project - - - tooltip_dlg_main_dbproject - dlg_main_dbproject - - - grb_projectschema - Project schema Settings - - - tooltip_grb_projectschema - grb_projectschema - - - lbl_descript - Description: - - - tooltip_lbl_descript - lbl_descript - - - lbl_filter - Filter SRID: - - - tooltip_lbl_filter - Spatial reference identifier. Only values shown on a table below are allowed. - - - lbl_locale - Locale: - - - tooltip_lbl_locale - Schema language - - - lbl_project_name - Project name: - - - tooltip_lbl_project_name - Name of a new schema. Name has to be written in lower cases, using only letters used in the english alphabet and without spaces or dashes - - - lbl_project_type - Project Type: - - - tooltip_lbl_project_type - lbl_project_type - - - lbl_source - Data source: - - - tooltip_lbl_source - lbl_source - - - rdb_empty - Empty data - - - tooltip_rdb_empty - rdb_empty - - - rdb_inp - Import INP data - - - tooltip_rdb_inp - rdb_inp - - - rdb_sample_full - Full Example - - - tooltip_rdb_sample_full - rdb_sample_full - - - rdb_sample_inv - Inventory Example - - - tooltip_rdb_sample_inv - rdb_sample_inv - - - - admin_gisproject - - title - Create GIS project - - - actionCreate_Sample - Create Sample - - - tooltip_actionCreate_Sample - actionCreate_Sample - - - actionCreate_Sample_Dev - Create Sample Dev - - - tooltip_actionCreate_Sample_Dev - actionCreate_Sample_Dev - - - btn_accept - Accept - - - tooltip_btn_accept - Accept - - - btn_close - Close - - - tooltip_btn_close - Close - - - btn_gis_folder - ... - - - tooltip_btn_gis_folder - btn_gis_folder - - - dlg_admin_gisproject - Create GIS project - - - tooltip_dlg_admin_gisproject - dlg_admin_gisproject - - - dlg_main_gisproject - Create QGIS project - - - tooltip_dlg_main_gisproject - dlg_main_gisproject - - - lbl_export_user_pass - Export user password: - - - tooltip_lbl_export_user_pass - lbl_export_user_pass - - - lbl_gis_file - GIS file name: - - - tooltip_lbl_gis_file - lbl_gis_file - - - lbl_gis_folder - GIS folder: - - - tooltip_lbl_gis_folder - lbl_gis_folder - - - lbl_project_type - Project type: - - - tooltip_lbl_project_type - lbl_project_type - - - lbl_role - Role type: - - - tooltip_lbl_role - lbl_role - - - statusbar - Create Sample Dev - - - tooltip_statusbar - statusbar - - - txt_roletype - inventory - - - tooltip_txt_roletype - txt_roletype - - - - admin_i18n_manager - - title - Dialog - - - btn_close - Close - - - tooltip_btn_close - btn_close - - - btn_connection - Test connection - - - tooltip_btn_connection - btn_connection - - - btn_search - Search - - - tooltip_btn_search - btn_search - - - chk_all - Check All - - - tooltip_chk_all - chk_all - - - chk_am_dialogs - Check for am tables - - - tooltip_chk_am_dialogs - chk_am_dialogs - - - chk_cm_dialogs - Check for cm tables - - - tooltip_chk_cm_dialogs - chk_cm_dialogs - - - chk_db_dialogs - Check dialogs for DB tables - - - tooltip_chk_db_dialogs - chk_db_dialogs - - - chk_for_su_tables - Check for basic DB tables (cat_feature...) - - - tooltip_chk_for_su_tables - chk_for_su_tables - - - chk_py_dialogs - Check for PY Dialogs - - - tooltip_chk_py_dialogs - chk_py_dialogs - - - chk_py_messages - Check for PY Messages - - - tooltip_chk_py_messages - chk_py_messages - - - dlg_admin_i18n_manager - Dialog - - - tooltip_dlg_admin_i18n_manager - dlg_admin_i18n_manager - - - grb_i18n_conn - i18n Conection - - - tooltip_grb_i18n_conn - grb_i18n_conn - - - grp_search_options - Search Options - - - tooltip_grp_search_options - grp_search_options - - - lbl_database - Database: - - - tooltip_lbl_database - lbl_database - - - lbl_host - Host: - - - tooltip_lbl_host - lbl_host - - - lbl_pass - Password: - - - tooltip_lbl_pass - lbl_pass - - - lbl_port - Port: - - - tooltip_lbl_port - lbl_port - - - lbl_user - User: - - - tooltip_lbl_user - lbl_user - - - - admin_importinp - - btn_close - Close - - - tooltip_btn_close - btn_close - - - btn_run - Run - - - tooltip_btn_run - btn_run - - - dlg_main_importinp - Config parameters - - - tooltip_dlg_main_importinp - dlg_main_importinp - - - tab_config - Config - - - tooltip_tab_config - tab_config - - - tab_loginfo - Info log - - - tooltip_tab_loginfo - tab_loginfo - - - - admin_import_osm - - title - Dialog - - - btn_accept - Execute - - - tooltip_btn_accept - btn_accept - - - btn_close - Close - - - tooltip_btn_close - btn_close - - - dlg_admin_import_osm - Dialog - - - tooltip_dlg_admin_import_osm - dlg_admin_import_osm - - - tab_data - Municipalities - - - tooltip_tab_data - tab_data - - - tab_log - Logs - - - tooltip_tab_log - tab_log - - - - admin_markdown - - title - Dialog - - - btn_close - Close - - - tooltip_btn_close - btn_close - - - btn_generate - Generate - - - tooltip_btn_generate - btn_generate - - - dlg_admin_markdown - Dialog - - - tooltip_dlg_admin_markdown - dlg_admin_markdown - - - lbl_project_type - Project type: - - - tooltip_lbl_project_type - lbl_project_type - - - lbl_schema_update - Schema name: - - - tooltip_lbl_schema_update - lbl_schema_update - - - lb_path - File path: - - - tooltip_lb_path - lb_path - - - pushButton_2 - ... - - - tooltip_pushButton_2 - pushButton_2 - - - - admin_markdown_generator - - title - Dialog - - - btn_close - Close - - - tooltip_btn_close - btn_close - - - btn_generate - Generate - - - tooltip_btn_generate - btn_generate - - - btn_path - ... - - - tooltip_btn_path - btn_path - - - cmb_projecttype - ud - - - tooltip_cmb_projecttype - cmb_projecttype - - - dlg_admin_markdown_generator - Dialog - - - tooltip_dlg_admin_markdown_generator - dlg_admin_markdown_generator - - - grp_markdown_destination - Markdown destiantion - - - tooltip_grp_markdown_destination - grp_markdown_destination - - - grp_origin_schema - Origin schema - - - tooltip_grp_origin_schema - grp_origin_schema - - - lbl_project_type - Project type: - - - tooltip_lbl_project_type - lbl_project_type - - - lbl_schema_update - Schema name: - - - tooltip_lbl_schema_update - lbl_schema_update - - - lb_path - File path: - - - tooltip_lb_path - lb_path - - - - admin_projectinfo - - title - Update SQL - - - actionCreate_Sample - Create Sample - - - tooltip_actionCreate_Sample - actionCreate_Sample - - - actionCreate_Sample_Dev - Create Sample Dev - - - tooltip_actionCreate_Sample_Dev - actionCreate_Sample_Dev - - - btn_close - Close - - - tooltip_btn_close - Close - - - btn_update - Update - - - tooltip_btn_update - btn_update - - - dlg_admin_projectinfo - Update SQL - - - tooltip_dlg_admin_projectinfo - dlg_admin_projectinfo - - - dlg_main_projectinfo - Update SQL - - - tooltip_dlg_main_projectinfo - dlg_main_projectinfo - - - lbl_info - Information about new updates - - - tooltip_lbl_info - lbl_info - - - statusbar - Create Sample Dev - - - tooltip_statusbar - statusbar - - - tab_loginfo - Log - - - tooltip_tab_loginfo - tab_loginfo - - - tab_main - Main - - - tooltip_tab_main - tab_main - - - - admin_qtdialog - - btn_accept - Accept - - - tooltip_btn_accept - Accept - - - btn_cancel - Cancel - - - tooltip_btn_cancel - Cancel - - - btn_path - ... - - - tooltip_btn_path - btn_path - - - dlg_main_qtdialog - Dialog - - - tooltip_dlg_main_qtdialog - dlg_main_qtdialog - - - lbl_formname - Form name: - - - tooltip_lbl_formname - lbl_formname - - - lbl_path - UI path: - - - tooltip_lbl_path - lbl_path - - - - admin_renameproj - - title - Rename - - - actionCreate_Sample - Create Sample - - - tooltip_actionCreate_Sample - actionCreate_Sample - - - actionCreate_Sample_Dev - Create Sample Dev - - - tooltip_actionCreate_Sample_Dev - actionCreate_Sample_Dev - - - btn_accept - Accept - - - tooltip_btn_accept - Accept - - - btn_cancel - Cancel - - - tooltip_btn_cancel - Cancel - - - dlg_admin_renameproj - Rename - - - tooltip_dlg_admin_renameproj - dlg_admin_renameproj - - - dlg_readsq_rename - Rename project - - - tooltip_dlg_readsq_rename - dlg_readsq_rename - - - lbl_rename_copy - Please, set a new project name: - - - tooltip_lbl_rename_copy - lbl_rename_copy - - - statusbar - Create Sample Dev - - - tooltip_statusbar - statusbar - - - - admin_sysfields - - btn_accept - Accept - - - tooltip_btn_accept - Accept - - - btn_cancel - Cancel - - - tooltip_btn_cancel - btn_cancel - - - btn_open - Open - - - tooltip_btn_open - btn_open - - - dlg_main_sysfields - Dialog - - - tooltip_dlg_main_sysfields - dlg_main_sysfields - - - grb_additional_conf - Additional configuration - - - tooltip_grb_additional_conf - grb_additional_conf - - - grb_basic_conf - Basic configuration - - - tooltip_grb_basic_conf - grb_basic_conf - - - lbl_column_id - Column id: - - - tooltip_lbl_column_id - lbl_column_id - - - lbl_editability - Editability: - - - tooltip_lbl_editability - lbl_editability - - - lbl_editable - Editable: - - - tooltip_lbl_editable - lbl_editable - - - lbl_enabled - Enabled: - - - tooltip_lbl_enabled - lbl_enabled - - - lbl_form_name - Form name: - - - tooltip_lbl_form_name - lbl_form_name - - - lbl_hidden - Hidden: - - - tooltip_lbl_hidden - lbl_hidden - - - lbl_label - Label: - - - tooltip_lbl_label - lbl_label - - - lbl_layout_name - Layout name: - - - tooltip_lbl_layout_name - lbl_layout_name - - - lbl_layout_order - Layout order: - - - tooltip_lbl_layout_order - lbl_layout_order - - - lbl_mandatory - Mandatory: - - - tooltip_lbl_mandatory - lbl_mandatory - - - lbl_placeholder - Placeholder: - - - tooltip_lbl_placeholder - lbl_placeholder - - - lbl_stylesheet - Stylesheet: - - - tooltip_lbl_stylesheet - lbl_stylesheet - - - lbl_tooltip - Tooltip: - - - tooltip_lbl_tooltip - lbl_tooltip - - - lbl_widgetcontrols - Widget controls: - - - tooltip_lbl_widgetcontrols - Example configuration keys {"widgetdim": 150,"setMultiline":true,"vdefault": "01-01-2014", "filterSign": ">} - - - tab_create - Create - - - tooltip_tab_create - tab_create - - - tab_update - Update - - - tooltip_tab_update - tab_update - - - - admin_translation - - title - Dialog - - - btn_close - Close - - - tooltip_btn_close - btn_close - - - btn_connection - Test connection - - - tooltip_btn_connection - btn_connection - - - btn_translate - Translate - - - tooltip_btn_translate - btn_translate - - - chk_am_files - Translate am files - - - tooltip_chk_am_files - chk_am_files - - - chk_audit_files - Translate audit files - - - tooltip_chk_audit_files - chk_audit_files - - - chk_cm_files - Translate cm files - - - tooltip_chk_cm_files - chk_cm_files - - - chk_db_msg - Translate db messages - - - tooltip_chk_db_msg - chk_db_msg - - - chk_i18n_files - Translate i18n translations - - - tooltip_chk_i18n_files - chk_i18n_files - - - chk_py_msg - Translate ui and py messages - - - tooltip_chk_py_msg - chk_py_msg - - - chk_relative_langs - Enable fallback to similar locales. - - - tooltip_chk_relative_langs - chk_relative_langs - - - dlg_admin_translation - Dialog - - - tooltip_dlg_admin_translation - dlg_admin_translation - - - grb_info_connection - Connection information - - - tooltip_grb_info_connection - grb_info_connection - - - grb_translate_files - Translate files - - - tooltip_grb_translate_files - grb_translate_files - - - groupBox - Connection information - - - tooltip_groupBox - groupBox - - - groupBox_2 - Translate files - - - tooltip_groupBox_2 - groupBox_2 - - - groupBox_3 - Parameters - - - tooltip_groupBox_3 - groupBox_3 - - - label - If a translation is missing in the specific target dialect (e.g., es_ES), the system searches other regional variants (e.g., es_CR, es_AR). If a match is found, that translation is applied. - - - tooltip_label - label - - - lbl_database - Data base: - - - tooltip_lbl_database - lbl_database - - - lbl_host - Host: - - - tooltip_lbl_host - lbl_host - - - lbl_language - Language: - - - tooltip_lbl_language - lbl_language - - - lbl_pass - Password: - - - tooltip_lbl_pass - lbl_pass - - - lbl_port - Port: - - - tooltip_lbl_port - lbl_port - - - lbl_scode - Source code: - - - tooltip_lbl_scode - lbl_scode - - - lbl_user - User: - - - tooltip_lbl_user - lbl_user - - - - admin_ui - - btn_close - Close - - - tooltip_btn_close - Close - - - btn_constrains - Constrains - - - tooltip_btn_constrains - btn_constrains - - - btn_copy - Copy - - - tooltip_btn_copy - Copy selected database schema - - - btn_create_field - Create - - - tooltip_btn_create_field - btn_create_field - - - btn_create_qgis_template - QGIS templates - - - tooltip_btn_create_qgis_template - btn_create_qgis_template - - - btn_create_view - Create - - - tooltip_btn_create_view - btn_create_view - - - btn_custom_load_file - Load file - - - tooltip_btn_custom_load_file - btn_custom_load_file - - - btn_custom_select_file - ... - - - tooltip_btn_custom_select_file - btn_custom_select_file - - - btn_delete - Delete - - - tooltip_btn_delete - Delete selected database schema - - - btn_delete_field - Delete - - - tooltip_btn_delete_field - btn_delete_field - - - btn_export_ui - Export - - - tooltip_btn_export_ui - btn_export_ui - - - btn_gis_create - Create - - - tooltip_btn_gis_create - btn_gis_create - - - btn_import_ui - Import - - - tooltip_btn_import_ui - btn_import_ui - - - btn_path - ... - - - tooltip_btn_path - btn_path - - - btn_schema_create - btn_schema_create - - - tooltip_btn_schema_create - btn_schema_create - - - btn_schema_file_to_db - File to DB - - - tooltip_btn_schema_file_to_db - btn_schema_file_to_db - - - btn_schema_rename - Rename - - - tooltip_btn_schema_rename - Rename selected database schema - - - btn_translation - Translation files - - - tooltip_btn_translation - btn_translation - - - btn_update_field - Update - - - tooltip_btn_update_field - btn_update_field - - - btn_update_schema - Execute - - - tooltip_btn_update_schema - btn_update_schema - - - btn_update_sys_field - Update - - - tooltip_btn_update_sys_field - btn_update_sys_field - - - btn_visit_create - Create - - - tooltip_btn_visit_create - btn_visit_create - - - btn_visit_delete - Delete - - - tooltip_btn_visit_delete - btn_visit_delete - - - btn_visit_update - Update - - - tooltip_btn_visit_update - btn_visit_update - - - grb_conection - Connection - - - tooltip_grb_conection - grb_conection - - - grb_files_generator - Plugin files generator - - - tooltip_grb_files_generator - grb_files_generator - - - grb_load_cf - Load custom file - - - tooltip_grb_load_cf - Select a folder with .sql files that you want to execute on a selected schema - - - grb_manage_addfields - Manage add fields - - - tooltip_grb_manage_addfields - Create, configure or remove an additional field related to a selected feature type or for all feature types defined in a project - - - grb_manage_childviews - Manage child views - - - tooltip_grb_manage_childviews - Recreate child views for a selected feature type or for all feature types defined in a project - - - grb_manage_sys_fields - Manage system fields - - - tooltip_grb_manage_sys_fields - Configure system fields properties, for a selected feature type, defined on config_form_fields - - - grb_manage_ui - Manage UI - - - tooltip_grb_manage_ui - grb_manage_ui - - - grb_project_scin - Project schema - - - tooltip_grb_project_scin - grb_project_scin - - - grb_schema_manager - QGIS project management - - - tooltip_grb_schema_manager - grb_schema_manager - - - grb_schema_reload - Reload - - - tooltip_grb_schema_reload - grb_schema_reload - - - grb_schema_update - Update - - - tooltip_grb_schema_update - grb_schema_update - - - grb_visit - Visit - - - tooltip_grb_visit - Create, configure or remove visit definition related to a selected feature type or for all feature types defined in a project - - - lbl_add_fields_feature - Feature name: - - - tooltip_lbl_add_fields_feature - lbl_add_fields_feature - - - lbl_child_feature - Feature name: - - - tooltip_lbl_child_feature - lbl_child_feature - - - lbl_connection - Connection name: - - - tooltip_lbl_connection - Name of a database connection defined in QGIS - - - lbl_name - Name: - - - tooltip_lbl_name - Name of the database schema - - - lbl_project_type - Project type: - - - tooltip_lbl_project_type - Type of giswater project - - - lbl_reload_func_sch - Reload functions: - - - tooltip_lbl_reload_func_sch - lbl_reload_func_sch - - - lbl_system_feature - Feature name: - - - tooltip_lbl_system_feature - lbl_system_feature - - - lbl_ui_form_name - Form name: - - - tooltip_lbl_ui_form_name - lbl_ui_form_name - - - lbl_ui_path - UI path: - - - tooltip_lbl_ui_path - lbl_ui_path - - - lbl_update_all_sch - Update all: - - - tooltip_lbl_update_all_sch - lbl_update_all_sch - - - lbl_use_constrains - Use constrains: - - - tooltip_lbl_use_constrains - lbl_use_constrains - - - tab_advanced - Advanced - - - tooltip_tab_advanced - tab_advanced - - - tab_api_manager - Api manager - - - tooltip_tab_api_manager - tab_api_manager - - - tab_fields_manager - Fields manager - - - tooltip_tab_fields_manager - tab_fields_manager - - - tab_general - General - - - tooltip_tab_general - tab_general - - - tab_schema_manager - Schema manager - - - tooltip_tab_schema_manager - tab_schema_manager - - - - admin_update_translation - - title - Dialog - - - btn_close - Close - - - tooltip_btn_close - btn_close - - - btn_connection - Test connection - - - tooltip_btn_connection - btn_connection - - - btn_translate - Translate - - - tooltip_btn_translate - btn_translate - - - chk_add_tab_data - Translate tab_data - - - tooltip_chk_add_tab_data - chk_add_tab_data - - - dlg_admin_update_translation - Dialog - - - tooltip_dlg_admin_update_translation - dlg_admin_update_translation - - - grb_dest_conn - Destiny connection - - - tooltip_grb_dest_conn - grb_dest_conn - - - grb_i18n_conn - i18n Conection - - - tooltip_grb_i18n_conn - grb_i18n_conn - - - grb_parameters - Parameters - - - tooltip_grb_parameters - grb_parameters - - - lbl_database - Database: - - - tooltip_lbl_database - lbl_database - - - lbl_host - Host: - - - tooltip_lbl_host - lbl_host - - - lbl_language - Language: - - - tooltip_lbl_language - lbl_language - - - lbl_pass - Password: - - - tooltip_lbl_pass - lbl_pass - - - lbl_port - Port: - - - tooltip_lbl_port - lbl_port - - - lbl_project_type - Project type: - - - tooltip_lbl_project_type - lbl_project_type - - - lbl_schema_update - Schema name: - - - tooltip_lbl_schema_update - lbl_schema_update - - - lbl_user - User: - - - tooltip_lbl_user - lbl_user - - - - admin_visitclass - - title - Manage visit class - - - btn_cancel - Cancel - - - tooltip_btn_cancel - btn_cancel - - - btn_class_cancel - Cancel - - - tooltip_btn_class_cancel - btn_class_cancel - - - btn_class_ok - Accept - - - tooltip_btn_class_ok - btn_class_ok - - - btn_ok - Accept - - - tooltip_btn_ok - btn_ok - - - btn_param_create - Create - - - tooltip_btn_param_create - btn_param_create - - - btn_param_delete - Delete - - - tooltip_btn_param_delete - btn_param_delete - - - btn_param_update - Update - - - tooltip_btn_param_update - btn_param_update - - - dlg_admin_visitclass - Manage visit class - - - tooltip_dlg_admin_visitclass - dlg_admin_visitclass - - - dlg_main_visitclass - Manage visit class - - - tooltip_dlg_main_visitclass - dlg_main_visitclass - - - groupBox - Class - - - tooltip_groupBox - groupBox - - - groupBox_2 - Parameter - - - tooltip_groupBox_2 - groupBox_2 - - - lbl_active - Active: - - - tooltip_lbl_active - lbl_active - - - lbl_class_id - Class id: - - - tooltip_lbl_class_id - lbl_class_id - - - lbl_class_name - Class name: - - - tooltip_lbl_class_name - lbl_class_name - - - lbl_descript - Descript: - - - tooltip_lbl_descript - lbl_descript - - - lbl_feat_type - Feature type: - - - tooltip_lbl_feat_type - lbl_feat_type - - - lbl_multi_event - Multi event: - - - tooltip_lbl_multi_event - lbl_multi_event - - - lbl_multi_feat - Multi feature: - - - tooltip_lbl_multi_feat - lbl_multi_feat - - - lbl_param_opt - Param options: - - - tooltip_lbl_param_opt - lbl_param_opt - - - lbl_viewname - View name: - - - tooltip_lbl_viewname - lbl_viewname - - - lbl_visit_type - Visit type: - - - tooltip_lbl_visit_type - lbl_visit_type - - - - admin_visitparam - - title - Manage visit parameter - - - btn_cancel - Cancel - - - tooltip_btn_cancel - btn_cancel - - - btn_ok - Accept - - - tooltip_btn_ok - btn_ok - - - dlg_admin_visitparam - Manage visit parameter - - - tooltip_dlg_admin_visitparam - dlg_admin_visitparam - - - dlg_main_visitparam - Manage visit parameter - - - tooltip_dlg_main_visitparam - dlg_main_visitparam - - - grb_params - Parameter - - - tooltip_grb_params - grb_params - - - lbl_code - Code: - - - tooltip_lbl_code - lbl_code - - - lbl_data_type - Data type: - - - tooltip_lbl_data_type - lbl_data_type - - - lbl_default_value - Default value: - - - tooltip_lbl_default_value - lbl_default_value - - - lbl_descript - Descript: - - - tooltip_lbl_descript - lbl_descript - - - lbl_editable - Editable: - - - tooltip_lbl_editable - lbl_editable - - - lbl_enabled - Enabled: - - - tooltip_lbl_enabled - lbl_enabled - - - lbl_form_type - Form type: - - - tooltip_lbl_form_type - lbl_form_type - - - lbl_mandatory - Mandatory: - - - tooltip_lbl_mandatory - lbl_mandatory - - - lbl_parameter_name - Parameter name: - - - tooltip_lbl_parameter_name - lbl_parameter_name - - - lbl_parameter_type - Parameter type: - - - tooltip_lbl_parameter_type - lbl_parameter_type - - - lbl_query_text - Query text: - - - tooltip_lbl_query_text - lbl_query_text - - - lbl_short_descript - Short descript: - - - tooltip_lbl_short_descript - lbl_short_descript - - - lbl_widgettype - Widget type: - - - tooltip_lbl_widgettype - lbl_widgettype - - - - arc_divide - - title - Arc divide - - - dlg_arc_divide - Arc divide - - - tooltip_dlg_arc_divide - dlg_arc_divide - - - - arc_fusion - - title - Arc fusion - - - btn_accept - OK - - - tooltip_btn_accept - Accept - - - btn_cancel - Cancel - - - tooltip_btn_cancel - btn_cancel - - - dlg_arc_fusion - Arc fusion - - - tooltip_dlg_arc_fusion - dlg_arc_fusion - - - enddate - dd/MM/yyyy - - - tooltip_enddate - enddate - - - lbl_arc1asset - Arc 1 asset: - - - tooltip_lbl_arc1asset - lbl_arc1asset - - - lbl_arc1cat - Arc 1 catalog: - - - tooltip_lbl_arc1cat - lbl_arc1cat - - - lbl_arc2asset - Arc 2 asset: - - - tooltip_lbl_arc2asset - lbl_arc2asset - - - lbl_arc2cat - Arc 2 catalog: - - - tooltip_lbl_arc2cat - lbl_arc2cat - - - lbl_enddate - End date: - - - tooltip_lbl_enddate - lbl_enddate - - - lbl_new_asset - New asset: - - - tooltip_lbl_new_asset - lbl_new_asset - - - lbl_new_cat - New catalog: - - - tooltip_lbl_new_cat - lbl_new_cat - - - lbl_nodeaction - Node action: - - - tooltip_lbl_nodeaction - lbl_nodeaction - - - lbl_statetype - State type: - - - tooltip_lbl_statetype - lbl_statetype - - - lbl_workcat_id_end - Workcat id end: - - - tooltip_lbl_workcat_id_end - lbl_workcat_id_end - - - tab_config - Arc fusion - - - tooltip_tab_config - tab_config - - - tab_loginfo - Info Log - - - tooltip_tab_loginfo - tab_loginfo - - - - assignation - - title - Leak Assignation - - - chk_all_leaks - Use all leaks - - - tooltip_chk_all_leaks - Calculates leaks per kilometer per year using all available data, regardless of the 'years to calculate' parameter. - - - dlg_assignation - Leak Assignation - - - tooltip_dlg_assignation - dlg_assignation - - - lbl_buffer - Buffer distance (m): - - - tooltip_lbl_buffer - Distance from a leak at which pipes are selected to be assigned that leak. - - - lbl_builtdate - Filter by built date: - - - tooltip_lbl_builtdate - Uses only pipes that match the builtdate range of the initial one. - - - lbl_builtdate_range - Built date range (years): - - - tooltip_lbl_builtdate_range - Built date range, in years before and after the initial pipe. - - - lbl_cluster_length - Cluster length (m): - - - tooltip_lbl_cluster_length - Maximum sum of pipe lengths within a cluster, in meters. - - - lbl_diameter - Filter by diameter: - - - tooltip_lbl_diameter - Uses only pipes that match the diameter range of the initial one. - - - lbl_diameter_range - Diameter range: - - - tooltip_lbl_diameter_range - Diameter range based on factors of the initial pipe. - - - lbl_leaks - Leaks - - - tooltip_lbl_leaks - lbl_leaks - - - lbl_material - Filter by material: - - - tooltip_lbl_material - Uses only pipes of the same material as the initial one. - - - lbl_max_distance - Maximum distance (m): - - - tooltip_lbl_max_distance - Maximum distance, in meters, between the initial pipe and other pipes included in the cluster. - - - lbl_pipes - Pipes - - - tooltip_lbl_pipes - lbl_pipes - - - lbl_years - Years to calculate: - - - tooltip_lbl_years - Number of years of leak data to consider, based on recency. - - - tab_config - Config - - - tooltip_tab_config - tab_config - - - tab_infolog - Info Log - - - tooltip_tab_infolog - tab_infolog - - - - audit - - title - Audit - - - dlg_audit - Audit - - - tooltip_dlg_audit - dlg_audit - - - dlg_info_audit - Log - - - tooltip_dlg_info_audit - Log - - - groupBox - Updated values - - - tooltip_groupBox - groupBox - - - - audit_manager - - title - Audit manager - - - dlg_audit_manager - Audit manager - - - tooltip_dlg_audit_manager - Audit manager - - - groupBox - Logs - - - tooltip_groupBox - Logs - - - groupBox_2 - Date to - - - tooltip_groupBox_2 - Date to - - - - auxcircle - - title - CAD Draw circle - - - btn_accept - Accept - - - tooltip_btn_accept - Accept - - - btn_cancel - Cancel - - - tooltip_btn_cancel - btn_cancel - - - chk_delete_prev - Delete previous circles - - - tooltip_chk_delete_prev - chk_delete_prev - - - dlg_auxcircle - CAD Draw circle - - - tooltip_dlg_auxcircle - dlg_auxcircle - - - lbl_ins_radius - Insert radius: - - - tooltip_lbl_ins_radius - lbl_ins_radius - - - radius - 0 - - - tooltip_radius - radius - - - - auxpoint - - title - CAD Add point - - - btn_accept - Accept - - - tooltip_btn_accept - Accept - - - btn_cancel - Cancel - - - tooltip_btn_cancel - btn_cancel - - - chk_delete_prev - Delete previous points - - - tooltip_chk_delete_prev - chk_delete_prev - - - dist_x - 0 - - - tooltip_dist_x - dist_x - - - dist_y - 0 - - - tooltip_dist_y - dist_y - - - dlg_auxpoint - CAD Add point - - - tooltip_dlg_auxpoint - dlg_auxpoint - - - grb_from - From: - - - tooltip_grb_from - grb_from - - - lbl_distx - Distance (X): - - - tooltip_lbl_distx - lbl_distx - - - lbl_disty - Distance (Y): - - - tooltip_lbl_disty - lbl_disty - - - rb_left - Init point - - - tooltip_rb_left - rb_left - - - rb_right - End point - - - tooltip_rb_right - rb_right - - - - campaign_management - - title - Campaign Management - - - btn_campaign_selector - Campaign selector - - - tooltip_btn_campaign_selector - Campaign selector - - - btn_cancel - Close - - - tooltip_btn_cancel - btn_cancel - - - campaign_btn_delete - Delete Campaign - - - tooltip_campaign_btn_delete - Delete campaign - - - campaign_btn_open - Open Campaign - - - tooltip_campaign_btn_open - Open campaign - - - campaign_chk_show_nulls - Show null values - - - tooltip_campaign_chk_show_nulls - Show empty values - - - campaign_management - Campaign Management - - - tooltip_campaign_management - campaign_management - - - dlg_campaign_management - Campaign Management - - - tooltip_dlg_campaign_management - Campaign management - - - lbl_column_filter_dates - Filter dates column - - - tooltip_lbl_column_filter_dates - Filter dates column: - - - lbl_data_event_from - From: - - - tooltip_lbl_data_event_from - From: - - - lbl_data_event_to - Until: - - - tooltip_lbl_data_event_to - To: - - - lbl_state - State - - - tooltip_lbl_state - State: - - - - check_project - - title - Check project - - - brb_database_check - Database health check: - - - tooltip_brb_database_check - brb_database_check - - - btn_accept - Accept - - - tooltip_btn_accept - btn_accept - - - btn_close - Close - - - tooltip_btn_close - btn_close - - - dlg_check_project - Check project - - - tooltip_dlg_check_project - dlg_check_project - - - grb_info - Info: - - - tooltip_grb_info - grb_info - - - grb_system_check - System health check: - - - tooltip_grb_system_check - grb_system_check - - - tab_data - Database log - - - tooltip_tab_data - tab_data - - - tab_log - Logs - - - tooltip_tab_log - tab_log - - - - check_project_cm - - title - Check project - - - brb_database_check - Database health check: - - - tooltip_brb_database_check - brb_database_check - - - btn_accept - Accept - - - tooltip_btn_accept - btn_accept - - - chk_manage_config - Check management configs - - - tooltip_chk_manage_config - chk_manage_config - - - dlg_check_project_cm - Check project - - - tooltip_dlg_check_project_cm - dlg_check_project_cm - - - grb_database_health_check - Database health check - - - tooltip_grb_database_health_check - grb_database_health_check - - - grb_info - Info: - - - tooltip_grb_info - grb_info - - - grb_system_check - System health check: - - - tooltip_grb_system_check - grb_system_check - - - grb_system_health_check - System health check - - - tooltip_grb_system_health_check - grb_system_health_check - - - tab_data - Database log - - - tooltip_tab_data - tab_data - - - tab_log - Logs - - - tooltip_tab_log - tab_log - - - - common - - btn_help - Help - - - tooltip_btn_help - Help - - - - comp_x_pages - - title - Print composer pages automaticaly - - - btn_accept - Accept - - - tooltip_btn_accept - btn_accept - - - btn_close - Close - - - tooltip_btn_close - btn_close - - - dlg_comp_x_pages - Print composer pages automaticaly - - - tooltip_dlg_comp_x_pages - dlg_comp_x_pages - - - grb_comp - Composers list - - - tooltip_grb_comp - grb_comp - - - lbl_composers - Select composer: - - - tooltip_lbl_composers - lbl_composers - - - lbl_folder - Select folder: - - - tooltip_lbl_folder - lbl_folder - - - lbl_prefix - Prefix file: - - - tooltip_lbl_prefix - lbl_prefix - - - lbl_single - Single file: - - - tooltip_lbl_single - lbl_single - - - lbl_sleep - Sleep time: - - - tooltip_lbl_sleep - lbl_sleep - - - - config - - title - Config - - - btn_accept - Accept - - - tooltip_btn_accept - Accept - - - btn_cancel - Cancel - - - tooltip_btn_cancel - btn_cancel - - - dlg_config - Config - - - tooltip_dlg_config - dlg_config - - - grb_addfields - Addfields - - - tooltip_grb_addfields - grb_addfields - - - grb_admin_om - O&&M - - - tooltip_grb_admin_om - grb_admin_om - - - grb_admin_other - Other - - - tooltip_grb_admin_other - grb_admin_other - - - grb_arc - Arc - - - tooltip_grb_arc - grb_arc - - - grb_basic - Basic - - - tooltip_grb_basic - grb_basic - - - grb_category_type - Category type - - - tooltip_grb_category_type - grb_category_type - - - grb_connec - Connec - - - tooltip_grb_connec - grb_connec - - - grb_epa - Epa - - - tooltip_grb_epa - grb_epa - - - grb_fluid_type - Fluid type - - - tooltip_grb_fluid_type - grb_fluid_type - - - grb_function_type - Function type - - - tooltip_grb_function_type - grb_function_type - - - grb_gully - Gully - - - tooltip_grb_gully - grb_gully - - - grb_inventory - Inventory - - - tooltip_grb_inventory - grb_inventory - - - grb_link - Link - - - tooltip_grb_link - grb_link - - - grb_location_type - Location type - - - tooltip_grb_location_type - grb_location_type - - - grb_masterplan - MasterPlan - - - tooltip_grb_masterplan - grb_masterplan - - - grb_node - Node - - - tooltip_grb_node - grb_node - - - grb_om - O&&M - - - tooltip_grb_om - grb_om - - - grb_other - Other - - - tooltip_grb_other - grb_other - - - grb_system - System - - - tooltip_grb_system - grb_system - - - grb_topology - Topology - - - tooltip_grb_topology - grb_topology - - - grb_utils - Utils - - - tooltip_grb_utils - grb_utils - - - tab_addfields - Addfields - - - tooltip_tab_addfields - tab_addfields - - - tab_admin - Admin - - - tooltip_tab_admin - tab_admin - - - tab_basic - Basic - - - tooltip_tab_basic - tab_basic - - - tab_featurecat - Featurecat - - - tooltip_tab_featurecat - tab_featurecat - - - tab_mantype - Man type - - - tooltip_tab_mantype - tab_mantype - - - - connect_link - - title - Connect to network - - - dlg_connect_link - Connect to network - - - tooltip_dlg_connect_link - dlg_connect_link - - - groupBox - Link configuration - - - tooltip_groupBox - groupBox - - - groupBox_2 - Connecs - - - tooltip_groupBox_2 - groupBox_2 - - - groupBox_3 - Arcs - - - tooltip_groupBox_3 - groupBox_3 - - - tab_connect - Link - - - tooltip_tab_connect - tab_connect - - - tab_infolog - Info log - - - tooltip_tab_infolog - tab_infolog - - - - create_style_group - - btn_add - Accept - - - tooltip_btn_add - Accept - - - btn_cancel - Cancel - - - tooltip_btn_cancel - Cancel - - - descript - descript - - - tooltip_descript - Description - - - feature_id - feature_id - - - tooltip_feature_id - Category ID - - - idval - idval - - - tooltip_idval - Category name - - - lbl_cat_id - Category ID: - - - tooltip_lbl_cat_id - lbl_cat_id - - - lbl_cat_name - Category name: - - - tooltip_lbl_cat_name - lbl_cat_name - - - lbl_descript - Description: - - - tooltip_lbl_descript - lbl_descript - - - lbl_role - Role: - - - tooltip_lbl_role - lbl_role - - - sys_role - sys_role - - - tooltip_sys_role - Role that will be able to use this style - - - - crm_trace - - lbl_inst - Instructions: - - - tooltip_lbl_inst - lbl_inst - - - - csv - - title - Import CSV - - - btn_accept - Accept - - - tooltip_btn_accept - Accept - - - btn_cancel - Cancel - - - tooltip_btn_cancel - Cancel - - - btn_file_csv - ... - - - tooltip_btn_file_csv - btn_file_csv - - - dlg_csv - Import CSV - - - tooltip_dlg_csv - dlg_csv - - - lbl_decimal - Decimal separator: - - - tooltip_lbl_decimal - lbl_decimal - - - lbl_delimiter - Delimiter: - - - tooltip_lbl_delimiter - lbl_delimiter - - - lbl_file - File: - - - tooltip_lbl_file - lbl_file - - - lbl_ignore_header - Ignore headers: - - - tooltip_lbl_ignore_header - lbl_ignore_header - - - lbl_import_label - Import label: - - - tooltip_lbl_import_label - lbl_import_label - - - lbl_import_type - Import type: - - - tooltip_lbl_import_type - lbl_import_type - - - lbl_info - Info: - - - tooltip_lbl_info - lbl_info - - - lbl_set_of_charac - Set of characters: - - - tooltip_lbl_set_of_charac - lbl_set_of_charac - - - rb_comma - , - - - tooltip_rb_comma - rb_comma - - - rb_dec_comma - , - - - tooltip_rb_dec_comma - rb_dec_comma - - - rb_dec_period - . - - - tooltip_rb_dec_period - rb_dec_period - - - rb_semicolon - ; - - - tooltip_rb_semicolon - rb_semicolon - - - rb_space - Space - - - tooltip_rb_space - rb_space - - - tab_info - Info log - - - tooltip_tab_info - tab_info - - - tab_preview - Preview - - - tooltip_tab_preview - tab_preview - - - - dialog_table - - title - Table - - - btn_accept - Accept - - - tooltip_btn_accept - Accept - - - btn_add_row - Add row - - - tooltip_btn_add_row - btn_add_row - - - btn_cancel - Cancel - - - tooltip_btn_cancel - btn_cancel - - - dlg_dialog_table - Table - - - tooltip_dlg_dialog_table - dlg_dialog_table - - - - dialog_text - - title - Text - - - btn_accept - Accept - - - tooltip_btn_accept - Accept - - - btn_cancel - Cancel - - - tooltip_btn_cancel - btn_cancel - - - btn_close - Close - - - tooltip_btn_close - btn_close - - - dlg_dialog_text - Text - - - tooltip_dlg_dialog_text - dlg_dialog_text - - - - dimensioning - - title - Dimensioning - - - actionEdit - Edit - - - tooltip_actionEdit - actionEdit - - - actionOrientation - Orientation - - - tooltip_actionOrientation - actionOrientation - - - actionSnapping - Snapping - - - tooltip_actionSnapping - actionSnapping - - - btn_accept - Accept - - - tooltip_btn_accept - Accept - - - btn_cancel - Cancel - - - tooltip_btn_cancel - btn_cancel - - - dlg_dimensioning - Dimensioning - - - tooltip_dlg_dimensioning - dlg_dimensioning - - - grb_depth - Measurements - - - tooltip_grb_depth - grb_depth - - - grb_other - Other - - - tooltip_grb_other - grb_other - - - grb_symbology - Circle symbology - - - tooltip_grb_symbology - grb_symbology - - - toolBar - toolBar - - - tooltip_toolBar - toolBar - - - - doc - - title - Document - - - btn_accept - Accept - - - tooltip_btn_accept - Accept - - - btn_add_geom - Add geom - - - tooltip_btn_add_geom - Add geom - - - btn_apply - Apply - - - tooltip_btn_apply - Apply - - - btn_cancel - Cancel - - - tooltip_btn_cancel - btn_cancel - - - btn_delete - btn_delete - - - tooltip_btn_delete - Delete - - - btn_insert - btn_insert - - - tooltip_btn_insert - Insert - - - btn_path_doc - ... - - - tooltip_btn_path_doc - btn_path_doc - - - btn_path_url - web - - - tooltip_btn_path_url - Open explorer to allow selection of web path. It's also posible to just paste the path to the Link text box - - - btn_snapping - btn_snapping - - - tooltip_btn_snapping - Snapping - - - date - dd/MM/yyyy - - - tooltip_date - date - - - _dlg_doc - Document - - - tooltip__dlg_doc - _dlg_doc - - - dlg_doc - Document - - - tooltip_dlg_doc - dlg_doc - - - label - Date: - - - tooltip_label - label - - - lbl_doc_name - Doc name: - - - tooltip_lbl_doc_name - lbl_doc_name - - - lbl_doc_type - Doc type: - - - tooltip_lbl_doc_type - lbl_doc_type - - - lbl_filter_name - Doc name: - - - tooltip_lbl_filter_name - lbl_filter_name - - - lbl_link - Link: - - - tooltip_lbl_link - Link - - - lbl_observ - Observations: - - - tooltip_lbl_observ - lbl_observ - - - path - path - - - tooltip_path - Fill it with some accesible folder path or web path - - - tab - Visit - - - tooltip_tab - tab - - - tab_arc - Arc - - - tooltip_tab_arc - tab_arc - - - tab_connec - Connec - - - tooltip_tab_connec - tab_connec - - - tab_doc - Document - - - tooltip_tab_doc - tab_doc - - - tab_elem - Element - - - tooltip_tab_elem - tab_elem - - - tab_gully - Gully - - - tooltip_tab_gully - tab_gully - - - tab_link - Link - - - tooltip_tab_link - tab_link - - - tab_node - Node - - - tooltip_tab_node - tab_node - - - tab_psector - Psector - - - tooltip_tab_psector - tab_psector - - - tab_rel - Relations - - - tooltip_tab_rel - tab_rel - - - tab_visit - Visit - - - tooltip_tab_visit - tab_visit - - - tab_workcat - Workcat - - - tooltip_tab_workcat - tab_workcat - - - - doc_manager - - title - Document management - - - btn_cancel - Close - - - tooltip_btn_cancel - btn_cancel - - - btn_create - Create - - - tooltip_btn_create - Create - - - btn_delete - Delete - - - tooltip_btn_delete - btn_delete - - - dlg_doc_manager - Document management - - - tooltip_dlg_doc_manager - dlg_doc_manager - - - lbl_filter_name - Filter by: Doc name - - - tooltip_lbl_filter_name - lbl_filter_name - - - - dscenario - - title - Dialog - - - btn_accept - Accept - - - tooltip_btn_accept - btn_accept - - - btn_close - Close - - - tooltip_btn_close - btn_close - - - btn_properties - Properties - - - tooltip_btn_properties - btn_properties - - - dlg_dscenario - Dialog - - - tooltip_dlg_dscenario - dlg_dscenario - - - - dscenario_manager - - title - Dscenario manager - - - btn_cancel - Close - - - tooltip_btn_cancel - btn_cancel - - - btn_create - Create - - - tooltip_btn_create - btn_create - - - btn_delete - Delete - - - tooltip_btn_delete - btn_delete - - - btn_duplicate - Duplicate - - - tooltip_btn_duplicate - btn_duplicate - - - btn_toggle_active - Toggle active - - - tooltip_btn_toggle_active - Toggle active - - - btn_toolbox - Actions - - - tooltip_btn_toolbox - btn_toolbox - - - btn_update - Update - - - tooltip_btn_update - btn_update - - - btn_update_dscenario - Current Dscenario - - - tooltip_btn_update_dscenario - btn_update_dscenario - - - chk_active - Show inactive - - - tooltip_chk_active - Show inactive - - - dlg_dscenario_manager - Dscenario manager - - - tooltip_dlg_dscenario_manager - dlg_dscenario_manager - - - lbl_dscenario_name - Filter by: Dscenario name - - - tooltip_lbl_dscenario_name - lbl_dscenario_name - - - - element - - title - Element - - - btn_accept - Accept - - - tooltip_btn_accept - Accept - - - btn_add_geom - Add geom - - - tooltip_btn_add_geom - Add geometry - - - btn_cancel - Cancel - - - tooltip_btn_cancel - btn_cancel - - - btn_delete - btn_delete - - - tooltip_btn_delete - Delete - - - btn_insert - btn_insert - - - tooltip_btn_insert - Insert - - - btn_snapping - btn_snapping - - - tooltip_btn_snapping - Snapping - - - dlg_element - Element - - - tooltip_dlg_element - dlg_element - - - lbl_buildercat_id - Buildercat id: - - - tooltip_lbl_buildercat_id - lbl_buildercat_id - - - lbl_builtdate - Builtdate: - - - tooltip_lbl_builtdate - lbl_builtdate - - - lbl_code - Code: - - - tooltip_lbl_code - lbl_code - - - lbl_comment - Comment: - - - tooltip_lbl_comment - lbl_comment - - - lbl_elementcat_id - Elementcat id: - - - tooltip_lbl_elementcat_id - lbl_elementcat_id - - - lbl_element_id - Element id: - - - tooltip_lbl_element_id - lbl_element_id - - - lbl_element_type - Element_type: - - - tooltip_lbl_element_type - lbl_element_type - - - lbl_enddate - Enddate: - - - tooltip_lbl_enddate - lbl_enddate - - - lbl_expl_id - Exploitation: - - - tooltip_lbl_expl_id - lbl_expl_id - - - lbl_link - Link: - - - tooltip_lbl_link - Link - - - lbl_location_type - Location type: - - - tooltip_lbl_location_type - lbl_location_type - - - lbl_lock_level - TextLabel - - - tooltip_lbl_lock_level - lbl_lock_level - - - lbl_num_element - Element number: - - - tooltip_lbl_num_element - lbl_num_element - - - lbl_num_elements - Num. Element: - - - tooltip_lbl_num_elements - lbl_num_elements - - - lbl_observ - Observations: - - - tooltip_lbl_observ - lbl_observ - - - lbl_ownercat_id - Owner: - - - tooltip_lbl_ownercat_id - lbl_ownercat_id - - - lbl_rotation - Rotation: - - - tooltip_lbl_rotation - lbl_rotation - - - lbl_state - State: - - - tooltip_lbl_state - lbl_state - - - lbl_state_type - State type: - - - tooltip_lbl_state_type - lbl_state_type - - - lbl_verified - Verified: - - - tooltip_lbl_verified - lbl_verified - - - lbl_workcat_id - Workcat id: - - - tooltip_lbl_workcat_id - Workcat id - - - lbl_workcat_id_end - Workcat id end: - - - tooltip_lbl_workcat_id_end - Workcat id end - - - rotation - 0 - - - tooltip_rotation - rotation - - - tab_arc - Arc - - - tooltip_tab_arc - Arc - - - tab_connec - Connec - - - tooltip_tab_connec - tab_connec - - - tab_element - Element - - - tooltip_tab_element - tab_element - - - tab_gully - Gully - - - tooltip_tab_gully - tab_gully - - - tab_link - Link - - - tooltip_tab_link - tab_link - - - tab_node - Node - - - tooltip_tab_node - tab_node - - - tab_relations - Relations - - - tooltip_tab_relations - Relations - - - undelete - Undelete - - - tooltip_undelete - undelete - - - - element_manager - - title - Element management - - - btn_cancel - Close - - - tooltip_btn_cancel - btn_cancel - - - btn_delete - Delete - - - tooltip_btn_delete - Delete - - - dlg_element_manager - Element management - - - tooltip_dlg_element_manager - dlg_element_manager - - - lbl_element_id - Filter by: Element id - - - tooltip_lbl_element_id - lbl_element_id - - - - emitter_calibration - - title - Emmiter Calibration - - - btn_accept - Accept - - - tooltip_btn_accept - btn_accept - - - btn_close - Close - - - tooltip_btn_close - btn_close - - - dlg_emitter_calibration - Emmiter Calibration - - - tooltip_dlg_emitter_calibration - dlg_emitter_calibration - - - lbl_config_file - Configuration file: - - - tooltip_lbl_config_file - lbl_config_file - - - lbl_filename - File name: - - - tooltip_lbl_filename - lbl_filename - - - lbl_input_file - Input INP file: - - - tooltip_lbl_input_file - lbl_input_file - - - lbl_output_filename - Output files name: - - - tooltip_lbl_output_filename - lbl_output_filename - - - - epatools_add_demand_check - - title - Additional Demand Check - - - btn_cancel - Cancel - - - tooltip_btn_cancel - btn_cancel - - - btn_ok - OK - - - tooltip_btn_ok - btn_ok - - - btn_push_config_file - ... - - - tooltip_btn_push_config_file - btn_push_config_file - - - btn_push_inp_input_file - ... - - - tooltip_btn_push_inp_input_file - btn_push_inp_input_file - - - btn_push_output_folder - ... - - - tooltip_btn_push_output_folder - btn_push_output_folder - - - dlg_epatools_add_demand_check - Additional Demand Check - - - tooltip_dlg_epatools_add_demand_check - dlg_epatools_add_demand_check - - - lbl_config - Configuration file: - - - tooltip_lbl_config - lbl_config - - - lbl_filename - File name: - - - tooltip_lbl_filename - lbl_filename - - - lbl_input_file - Input INP file: - - - tooltip_lbl_input_file - lbl_input_file - - - lbl_nodes - Use nodes from: - - - tooltip_lbl_nodes - lbl_nodes - - - lbl_output_folder - Output folder: - - - tooltip_lbl_output_folder - lbl_output_folder - - - rdb_nodes_config - Configuration file - - - tooltip_rdb_nodes_config - rdb_nodes_config - - - rdb_nodes_database - Database - - - tooltip_rdb_nodes_database - rdb_nodes_database - - - tab_config - Config - - - tooltip_tab_config - tab_config - - - tab_infolog - Info Log - - - tooltip_tab_infolog - tab_infolog - - - - epatools_emitter_calibration - - title - Emitter Calibration - - - btn_accept - Accept - - - tooltip_btn_accept - btn_accept - - - btn_close - Close - - - tooltip_btn_close - btn_close - - - btn_push_config_file - ... - - - tooltip_btn_push_config_file - btn_push_config_file - - - btn_push_inp_input_file - ... - - - tooltip_btn_push_inp_input_file - btn_push_inp_input_file - - - btn_push_output_folder - ... - - - tooltip_btn_push_output_folder - btn_push_output_folder - - - dlg_epatools_emitter_calibration - Emitter Calibration - - - tooltip_dlg_epatools_emitter_calibration - dlg_epatools_emitter_calibration - - - lbl_config_file - Configuration file: - - - tooltip_lbl_config_file - lbl_config_file - - - lbl_filename - File name: - - - tooltip_lbl_filename - lbl_filename - - - lbl_input_file - Input INP file: - - - tooltip_lbl_input_file - lbl_input_file - - - lbl_output_filename - Output files name: - - - tooltip_lbl_output_filename - lbl_output_filename - - - tab_config - Config - - - tooltip_tab_config - tab_config - - - tab_loginfo - Info Log - - - tooltip_tab_loginfo - tab_loginfo - - - - epatools_quantized_demands - - title - Quantized demands - - - btn_cancel - Cancel - - - tooltip_btn_cancel - btn_cancel - - - btn_ok - OK - - - tooltip_btn_ok - btn_ok - - - btn_push_config_file - ... - - - tooltip_btn_push_config_file - btn_push_config_file - - - btn_push_inp_input_file - ... - - - tooltip_btn_push_inp_input_file - btn_push_inp_input_file - - - btn_push_output_folder - ... - - - tooltip_btn_push_output_folder - btn_push_output_folder - - - dlg_epatools_quantized_demands - Quantized demands - - - tooltip_dlg_epatools_quantized_demands - dlg_epatools_quantized_demands - - - lbl_config_file - Configuration file: - - - tooltip_lbl_config_file - lbl_config_file - - - lbl_filename - File name: - - - tooltip_lbl_filename - lbl_filename - - - lbl_input_file - Input INP file: - - - tooltip_lbl_input_file - lbl_input_file - - - lbl_output_folder - Output folder: - - - tooltip_lbl_output_folder - lbl_output_folder - - - tab_config - Config - - - tooltip_tab_config - tab_config - - - tab_infolog - Info Log - - - tooltip_tab_infolog - tab_infolog - - - - epatools_recursive_go2epa - - title - Epa Multi Calls - - - btn_accept - OK - - - tooltip_btn_accept - btn_accept - - - btn_close - Close - - - tooltip_btn_close - btn_close - - - btn_push_config_file - ... - - - tooltip_btn_push_config_file - btn_push_config_file - - - btn_push_output_folder - ... - - - tooltip_btn_push_output_folder - btn_push_output_folder - - - dlg_epatools_recursive_go2epa - Epa Multi Calls - - - tooltip_dlg_epatools_recursive_go2epa - dlg_epatools_recursive_go2epa - - - lbl_config_file - Configuration file: - - - tooltip_lbl_config_file - lbl_config_file - - - lbl_filename - File name: - - - tooltip_lbl_filename - lbl_filename - - - lbl_output_folder - Output folder: - - - tooltip_lbl_output_folder - lbl_output_folder - - - tab_config - Config - - - tooltip_tab_config - tab_config - - - tab_infolog - Info Log - - - tooltip_tab_infolog - tab_infolog - - - - epatools_static_calibration - - title - Static Calibration - - - btn_cancel - Cancel - - - tooltip_btn_cancel - btn_cancel - - - btn_ok - OK - - - tooltip_btn_ok - btn_ok - - - btn_push_config_file - ... - - - tooltip_btn_push_config_file - btn_push_config_file - - - btn_push_inp_input_file - ... - - - tooltip_btn_push_inp_input_file - btn_push_inp_input_file - - - btn_push_output_folder - ... - - - tooltip_btn_push_output_folder - btn_push_output_folder - - - btn_save_dscenario - Save changes to dscenario - - - tooltip_btn_save_dscenario - btn_save_dscenario - - - dlg_epatools_static_calibration - Static Calibration - - - tooltip_dlg_epatools_static_calibration - dlg_epatools_static_calibration - - - lbl_config_file - Configuration file: - - - tooltip_lbl_config_file - lbl_config_file - - - lbl_dscenario - Dscenario: - - - tooltip_lbl_dscenario - lbl_dscenario - - - lbl_filename - File name: - - - tooltip_lbl_filename - lbl_filename - - - lbl_inp_input_file - Input INP file: - - - tooltip_lbl_inp_input_file - lbl_inp_input_file - - - lbl_output_folder - Output folder: - - - tooltip_lbl_output_folder - lbl_output_folder - - - tab_config - Config - - - tooltip_tab_config - tab_config - - - tab_infolog - Info Log - - - tooltip_tab_infolog - tab_infolog - - - - epatools_valve_operation_check - - title - Valve Operation Check - - - btn_cancel - Cancel - - - tooltip_btn_cancel - btn_cancel - - - btn_ok - OK - - - tooltip_btn_ok - btn_ok - - - btn_push_config_file - ... - - - tooltip_btn_push_config_file - btn_push_config_file - - - btn_push_inp_input_file - ... - - - tooltip_btn_push_inp_input_file - btn_push_inp_input_file - - - btn_push_output_folder - ... - - - tooltip_btn_push_output_folder - btn_push_output_folder - - - dlg_epatools_valve_operation_check - Valve Operation Check - - - tooltip_dlg_epatools_valve_operation_check - dlg_epatools_valve_operation_check - - - lbl_config_file - Configuration file: - - - tooltip_lbl_config_file - lbl_config_file - - - lbl_filename - File name: - - - tooltip_lbl_filename - lbl_filename - - - lbl_input_file - Input INP file: - - - tooltip_lbl_input_file - lbl_input_file - - - lbl_output_folder - Output folder: - - - tooltip_lbl_output_folder - lbl_output_folder - - - lbl_scenarios - Use scenarios from: - - - tooltip_lbl_scenarios - lbl_scenarios - - - rdb_scenarios_config - Configuration file - - - tooltip_rdb_scenarios_config - rdb_scenarios_config - - - rdb_scenarios_database - Database - - - tooltip_rdb_scenarios_database - rdb_scenarios_database - - - tab_config - Config - - - tooltip_tab_config - tab_config - - - tab_infolog - Info Log - - - tooltip_tab_infolog - tab_infolog - - - - fastprint - - title - Print - - - btn_close - Close - - - tooltip_btn_close - btn_close - - - btn_preview - Preview - - - tooltip_btn_preview - btn_preview - - - btn_print - Print - - - tooltip_btn_print - btn_print - - - dlg_fastprint - Print - - - tooltip_dlg_fastprint - dlg_fastprint - - - grb_map_options - Map options: - - - tooltip_grb_map_options - grb_map_options - - - grb_option_values - Optional values: - - - tooltip_grb_option_values - grb_option_values - - - - feature_delete - - title - Delete feature - - - btn_cancel - Close - - - tooltip_btn_cancel - btn_cancel - - - btn_delete - Delete selected feature - - - tooltip_btn_delete - Delete - - - btn_delete_another - Delete another feature - - - tooltip_btn_delete_another - btn_delete_another - - - btn_relations - Show feature relations - - - tooltip_btn_relations - btn_relations - - - btn_snapping - btn_snapping - - - tooltip_btn_snapping - Snapping - - - dlg_feature_delete - Delete feature - - - tooltip_dlg_feature_delete - dlg_feature_delete - - - lbl_feature_id - Feature id: - - - tooltip_lbl_feature_id - lbl_feature_id - - - lbl_feature_type - Feature type: - - - tooltip_lbl_feature_type - lbl_feature_type - - - tab_del_feature - Delete feature - - - tooltip_tab_del_feature - tab_del_feature - - - tab_info_log - Info log - - - tooltip_tab_info_log - tab_info_log - - - - feature_end - - title - End feature - - - btn_accept - Accept - - - tooltip_btn_accept - Accept - - - btn_cancel - Cancel - - - tooltip_btn_cancel - Cancel - - - btn_delete - btn_delete - - - tooltip_btn_delete - Delete - - - btn_insert - btn_insert - - - tooltip_btn_insert - Insert - - - btn_new_workcat - btn_new_workcat - - - tooltip_btn_new_workcat - btn_new_workcat - - - btn_snapping - btn_snapping - - - tooltip_btn_snapping - Snapping - - - builtdate - dd/MM/yyyy - - - tooltip_builtdate - builtdate - - - dlg_feature_end - End feature - - - tooltip_dlg_feature_end - dlg_feature_end - - - enddate - dd/MM/yyyy - - - tooltip_enddate - enddate - - - lbl_description - Description: - - - tooltip_lbl_description - lbl_description - - - lbl_enddate - End date: - - - tooltip_lbl_enddate - lbl_enddate - - - lbl_state_type - State type end: - - - tooltip_lbl_state_type - lbl_state_type - - - lbl_workcat_date - Workcat date: - - - tooltip_lbl_workcat_date - lbl_workcat_date - - - lbl_workcat_id_end - Workcat id end: - - - tooltip_lbl_workcat_id_end - lbl_workcat_id_end - - - tab_arc - Arc - - - tooltip_tab_arc - tab_arc - - - tab_connec - Connec - - - tooltip_tab_connec - tab_connec - - - tab_elem - Elem - - - tooltip_tab_elem - tab_elem - - - tab_gully - Gully - - - tooltip_tab_gully - tab_gully - - - tab_info_log - Info Log - - - tooltip_tab_info_log - tab_info_log - - - tab_link - Link - - - tooltip_tab_link - tab_link - - - tab_node - Node - - - tooltip_tab_node - tab_node - - - tab_relations - Relations - - - tooltip_tab_relations - Relations - - - tab_workcat - Workcat - - - tooltip_tab_workcat - tab_workcat - - - - feature_end_connec - - title - Workcat end list - - - btn_accept - Accept - - - tooltip_btn_accept - Accept - - - btn_cancel - Cancel - - - tooltip_btn_cancel - Cancel - - - dlg_feature_end_connec - Workcat end list - - - tooltip_dlg_feature_end_connec - dlg_feature_end_connec - - - lbl_filter_by - Filter by arc_id: - - - tooltip_lbl_filter_by - lbl_filter_by - - - lbl_info - These connecs or gullys will be disconnected when selected arcs are deleted - - - tooltip_lbl_info - lbl_info - - - - feature_replace - - title - Replace feature - - - btn_accept - Ok - - - tooltip_btn_accept - btn_accept - - - btn_cancel - Cancel - - - tooltip_btn_cancel - btn_cancel - - - config - Config - - - tooltip_config - config - - - dlg_feature_replace - Replace feature - - - tooltip_dlg_feature_replace - dlg_feature_replace - - - enddate - dd/MM/yyyy - - - tooltip_enddate - enddate - - - grb_end_parameters - End parameters - - - tooltip_grb_end_parameters - grb_end_parameters - - - grb_feature_parameters - Feature parameters - - - tooltip_grb_feature_parameters - grb_feature_parameters - - - lbl_catalog_id - Catalog: - - - tooltip_lbl_catalog_id - lbl_catalog_id - - - lbl_current_catalog_id - Current catalog id: - - - tooltip_lbl_current_catalog_id - lbl_current_catalog_id - - - lbl_description - Description: - - - tooltip_lbl_description - lbl_description - - - lbl_enddate - Replace date: - - - tooltip_lbl_enddate - lbl_enddate - - - lbl_feature_type - Current feature type: - - - tooltip_lbl_feature_type - lbl_feature_type - - - lbl_keep_asset_id - Keep asset id: - - - tooltip_lbl_keep_asset_id - lbl_keep_asset_id - - - lbl_keep_elements - Keep elements: - - - tooltip_lbl_keep_elements - lbl_keep_elements - - - lbl_keep_epa_values - Keep EPA Values: - - - tooltip_lbl_keep_epa_values - lbl_keep_epa_values - - - lbl_new_catalog_id - New catalog id: - - - tooltip_lbl_new_catalog_id - lbl_new_catalog_id - - - lbl_new_feature_type - New feature type: - - - tooltip_lbl_new_feature_type - lbl_new_feature_type - - - lbl_workcat_id_end - Workcat id: - - - tooltip_lbl_workcat_id_end - lbl_workcat_id_end - - - tab_info_log - Info log - - - tooltip_tab_info_log - tab_info_log - - - - featuretype_change - - title - Change object type - - - dlg_featuretype_change - Change object type - - - tooltip_dlg_featuretype_change - dlg_featuretype_change - - - - go2epa - - title - Go2Epa - - - btn_accept - Accept - - - tooltip_btn_accept - Accept - - - btn_cancel - Cancel - - - tooltip_btn_cancel - btn_cancel - - - btn_close - Close - - - tooltip_btn_close - Close - - - btn_file_inp - ... - - - tooltip_btn_file_inp - btn_file_inp - - - btn_file_rpt - ... - - - tooltip_btn_file_rpt - btn_file_rpt - - - btn_hs_ds - Selector - - - tooltip_btn_hs_ds - btn_hs_ds - - - btn_options - Options - - - tooltip_btn_options - btn_options - - - chk_exec - Execute EPA software - - - tooltip_chk_exec - chk_exec - - - chk_export - Export INP - - - tooltip_chk_export - chk_export - - - chk_export_subcatch - Export UD subcatchments - - - tooltip_chk_export_subcatch - chk_export_subcatch - - - chk_import_result - Import result - - - tooltip_chk_import_result - chk_import_result - - - chk_only_check - Use result network geometry - - - tooltip_chk_only_check - chk_only_check - - - chk_recurrent - Use iterative calls - - - tooltip_chk_recurrent - chk_recurrent - - - dlg_go2epa - Go2Epa - - - tooltip_dlg_go2epa - dlg_go2epa - - - grb_file_manager - File manager - - - tooltip_grb_file_manager - grb_file_manager - - - grb_process_options - Preprocessing options - - - tooltip_grb_process_options - grb_process_options - - - groupBox - Preprocessing options - - - tooltip_groupBox - groupBox - - - groupBox_2 - File manager - - - tooltip_groupBox_2 - groupBox_2 - - - lbl_counter - Counter - - - tooltip_lbl_counter - lbl_counter - - - lbl_inp_file - INP file: - - - tooltip_lbl_inp_file - lbl_inp_file - - - lbl_result_name - Result name: - - - tooltip_lbl_result_name - lbl_result_name - - - lbl_rpt_file - RPT file: - - - tooltip_lbl_rpt_file - lbl_rpt_file - - - tab_file_manager - File manager - - - tooltip_tab_file_manager - tab_file_manager - - - tab_loginfo - Info log - - - tooltip_tab_loginfo - tab_loginfo - - - - go2epa_manager - - title - Epa result management - - - btn_archive - Toggle archive - - - tooltip_btn_archive - Toggle archive - - - btn_close - Close - - - tooltip_btn_close - btn_close - - - btn_delete - Delete - - - tooltip_btn_delete - Delete - - - btn_edit - Edit - - - tooltip_btn_edit - Edit - - - btn_show_inp_data - Show inp data - - - tooltip_btn_show_inp_data - Show inp data - - - btn_toggle_corporate - Toggle corporate - - - tooltip_btn_toggle_corporate - btn_toggle_corporate - - - dlg_go2epa_manager - Epa result management - - - tooltip_dlg_go2epa_manager - dlg_go2epa_manager - - - label - Info: - - - tooltip_label - label - - - lbl_result_id - Filter by: Result id - - - tooltip_lbl_result_id - lbl_result_id - - - - go2epa_options - - title - Go2Epa - options - - - btn_accept - Accept - - - tooltip_btn_accept - Accept - - - btn_cancel - Cancel - - - tooltip_btn_cancel - btn_cancel - - - dlg_go2epa_options - Go2Epa - options - - - tooltip_dlg_go2epa_options - dlg_go2epa_options - - - grb_energy - Energy - - - tooltip_grb_energy - grb_energy - - - grb_general - General - - - tooltip_grb_general - grb_general - - - grb_hydraulics - Hydraulics - - - tooltip_grb_hydraulics - grb_hydraulics - - - grb_other - Other - - - tooltip_grb_other - grb_other - - - grb_reactions - Reactions - - - tooltip_grb_reactions - grb_reactions - - - grb_reports - Reports - - - tooltip_grb_reports - grb_reports - - - grb_time_steps - Date &amp; time steps - - - tooltip_grb_time_steps - grb_time_steps - - - tab_inp - Inp - - - tooltip_tab_inp - tab_inp - - - tab_other - Other - - - tooltip_tab_other - tab_other - - - - go2epa_result - - title - EPA result selector - - - btn_accept - Accept - - - tooltip_btn_accept - Accept - - - btn_cancel - Cancel - - - tooltip_btn_cancel - Cancel - - - dlg_go2epa_result - EPA result selector - - - tooltip_dlg_go2epa_result - dlg_go2epa_result - - - lbl_compare_date - Compare date: - - - tooltip_lbl_compare_date - lbl_compare_date - - - lbl_compare_time - Compare time: - - - tooltip_lbl_compare_time - lbl_compare_time - - - lbl_result_name_to_compare - Result name (to compare): - - - tooltip_lbl_result_name_to_compare - lbl_result_name_to_compare - - - lbl_result_name_to_show - Result name (to show): - - - tooltip_lbl_result_name_to_show - lbl_result_name_to_show - - - lbl_selector_date - Selector date: - - - tooltip_lbl_selector_date - lbl_selector_date - - - lbl_selector_time - Selector time: - - - tooltip_lbl_selector_time - lbl_selector_time - - - lbl_time_to_compare - Time (to compare): - - - tooltip_lbl_time_to_compare - lbl_time_to_compare - - - lbl_time_to_show - Time (to show): - - - tooltip_lbl_time_to_show - lbl_time_to_show - - - tab_datetime - Date time - - - tooltip_tab_datetime - tab_datetime - - - tab_result - Result - - - tooltip_tab_result - tab_result - - - tab_time - Time - - - tooltip_tab_time - tab_time - - - - go2epa_selector - - title - Result compare selector - - - dlg_go2epa_selector - Result compare selector - - - tooltip_dlg_go2epa_selector - dlg_go2epa_selector - - - tab_result - Result - - - tooltip_tab_result - tab_result - - - tab_time - Date time - - - tooltip_tab_time - tab_time - - - - go2iber - - title - Go2Iber - - - btn_accept - Accept - - - tooltip_btn_accept - btn_accept - - - btn_cancel - Cancel - - - tooltip_btn_cancel - btn_cancel - - - btn_iber_options - Iber Options - - - tooltip_btn_iber_options - Iber Options - - - btn_path - ... - - - tooltip_btn_path - btn_path - - - btn_swmm_options - SWMM Options - - - tooltip_btn_swmm_options - SWMM Options - - - dlg_go2iber - Go2Iber - - - tooltip_dlg_go2iber - dlg_go2iber - - - groupBox - Options - - - tooltip_groupBox - groupBox - - - lbl_mesh - Mesh: - - - tooltip_lbl_mesh - lbl_mesh - - - lbl_path - Folder path: - - - tooltip_lbl_path - lbl_path - - - lbl_result_name - Result name: - - - tooltip_lbl_result_name - lbl_result_name - - - tab_config - Config - - - tooltip_tab_config - tab_config - - - tab_infolog - Log - - - tooltip_tab_infolog - tab_infolog - - - - info_catalog - - title - Catalog - - - btn_accept - Accept - - - tooltip_btn_accept - Accept - - - btn_cancel - Cancel - - - tooltip_btn_cancel - btn_cancel - - - dlg_info_catalog - Catalog - - - tooltip_dlg_info_catalog - dlg_info_catalog - - - - info_crmvalue - - title - Hydrometer - - - btn_accept - Accept - - - tooltip_btn_accept - Accept - - - btn_close - Close - - - tooltip_btn_close - btn_close - - - dlg_info_crmvalue - Hydrometer - - - tooltip_dlg_info_crmvalue - dlg_info_crmvalue - - - lbl_hydrometer_id - Hydrometer id: - - - tooltip_lbl_hydrometer_id - lbl_hydrometer_id - - - - info_crossect - - title - Section - - - btn_close - Close - - - tooltip_btn_close - Close - - - dlg_info_crossect - Section - - - tooltip_dlg_info_crossect - dlg_info_crossect - - - lbl_cost_area - Conduit area: - - - tooltip_lbl_cost_area - lbl_cost_area - - - lbl_cost_b_left - Cost B left - - - tooltip_lbl_cost_b_left - lbl_cost_b_left - - - lbl_cost_b_right - Cost B right - - - tooltip_lbl_cost_b_right - lbl_cost_b_right - - - lbl_cost_bulk - Conduit bulk: - - - tooltip_lbl_cost_bulk - lbl_cost_bulk - - - lbl_cost_exc - m3/ml Excess: - - - tooltip_lbl_cost_exc - lbl_cost_exc - - - lbl_cost_excav - m3/ml Excav: - - - tooltip_lbl_cost_excav - lbl_cost_excav - - - lbl_cost_fill - m3/ml Filling: - - - tooltip_lbl_cost_fill - lbl_cost_fill - - - lbl_cost_trench - % Trenchlinning: - - - tooltip_lbl_cost_trench - lbl_cost_trench - - - lbl_cost_width - Cost width - - - tooltip_lbl_cost_width - lbl_cost_width - - - lbl_cost_y_param - Cost y param - - - tooltip_lbl_cost_y_param - lbl_cost_y_param - - - lbl_section_image - Section image - - - tooltip_lbl_section_image - lbl_section_image - - - - info_epa - - title - InfoEpa - - - btn_accept - Accept - - - tooltip_btn_accept - btn_accept - - - btn_cancel - Cancel - - - tooltip_btn_cancel - btn_cancel - - - dlg_info_epa - InfoEpa - - - tooltip_dlg_info_epa - dlg_info_epa - - - info_epa - InfoEpa - - - tooltip_info_epa - info_epa - - - page_base - Base - - - tooltip_page_base - page_base - - - page_dscenario - Dscenario - - - tooltip_page_dscenario - page_dscenario - - - page_dwf - DWF - - - tooltip_page_dwf - page_dwf - - - page_inflows - INFLOWS - - - tooltip_page_inflows - page_inflows - - - - info_feature - - title - Junction - - - actionAudit - Audit - - - tooltip_actionAudit - actionAudit - - - actionCatalog - Catalog - - - tooltip_actionCatalog - actionCatalog - - - actionCentered - Centered - - - tooltip_actionCentered - actionCentered - - - actionCopyPaste - Copy&amp;Paste - - - tooltip_actionCopyPaste - actionCopyPaste - - - actionDemand - Demand - - - tooltip_actionDemand - actionDemand - - - actionEdit - Edit - - - tooltip_actionEdit - actionEdit - - - actionGetArcId - Get new arc id - - - tooltip_actionGetArcId - actionGetArcId - - - actionGetParentId - Get new parent id - - - tooltip_actionGetParentId - actionGetParentId - - - actionHelp - Help - - - tooltip_actionHelp - actionHelp - - - actionInterpolate - Interpolate - - - tooltip_actionInterpolate - actionInterpolate - - - actionLink - Link - - - tooltip_actionLink - actionLink - - - actionMapZone - MapZone - - - tooltip_actionMapZone - actionMapZone - - - actionOrifice - Orifice - - - tooltip_actionOrifice - actionOrifice - - - actionOutlet - Outlet - - - tooltip_actionOutlet - actionOutlet - - - actionRotation - Rotation - - - tooltip_actionRotation - actionRotation - - - actionSection - Show section - - - tooltip_actionSection - actionSection - - - actionSetGeom - Set Geom - - - tooltip_actionSetGeom - actionSetGeom - - - actionSetToArc - Set to arc - - - tooltip_actionSetToArc - actionSetToArc - - - actionWeir - Weir - - - tooltip_actionWeir - actionWeir - - - actionWorkcat - Workcat - - - tooltip_actionWorkcat - actionWorkcat - - - btn_accept - Accept - - - tooltip_btn_accept - Accept - - - btn_apply - Apply - - - tooltip_btn_apply - Apply - - - btn_cancel - Cancel - - - tooltip_btn_cancel - Cancel - - - btn_delete - btn_delete - - - tooltip_btn_delete - Delete - - - btn_doc_delete - btn_doc_delete - - - tooltip_btn_doc_delete - Delete document - - - btn_doc_insert - btn_doc_insert - - - tooltip_btn_doc_insert - Insert document - - - btn_doc_new - btn_doc_new - - - tooltip_btn_doc_new - Create new document - - - btn_insert - btn_insert - - - tooltip_btn_insert - Insert - - - btn_link - btn_link - - - tooltip_btn_link - btn_link - - - btn_new_element - btn_new_element - - - tooltip_btn_new_element - btn_new_element - - - btn_new_visit - btn_new_visit - - - tooltip_btn_new_visit - btn_new_visit - - - btn_open_doc - btn_open_doc - - - tooltip_btn_open_doc - Open document - - - btn_open_element - btn_open_element - - - tooltip_btn_open_element - btn_open_element - - - btn_open_gallery - btn_open_gallery - - - tooltip_btn_open_gallery - btn_open_gallery - - - btn_open_visit - btn_open_visit - - - tooltip_btn_open_visit - btn_open_visit - - - btn_open_visit_doc - btn_open_visit_doc - - - tooltip_btn_open_visit_doc - btn_open_visit_doc - - - btn_open_visit_event - btn_open_visit_event - - - tooltip_btn_open_visit_event - btn_open_visit_event - - - dlg_info_feature - Junction - - - tooltip_dlg_info_feature - dlg_info_feature - - - grb_frelem_dscenario - Dscenario - - - tooltip_grb_frelem_dscenario - grb_frelem_dscenario - - - groupBox - INP - - - tooltip_groupBox - groupBox - - - groupBox_2 - RPT - - - tooltip_groupBox_2 - groupBox_2 - - - lbl_cat_per_filter - Cat period filter: - - - tooltip_lbl_cat_per_filter - lbl_cat_per_filter - - - lbl_doc_id - Doc name: - - - tooltip_lbl_doc_id - lbl_doc_id - - - lbl_downstream_features - Downstream features: - - - tooltip_lbl_downstream_features - lbl_downstream_features - - - lbl_from_doc - From: - - - tooltip_lbl_from_doc - lbl_from_doc - - - lbl_from_om - From: - - - tooltip_lbl_from_om - lbl_from_om - - - lbl_parameter_om - Parameter: - - - tooltip_lbl_parameter_om - lbl_parameter_om - - - lbl_param_type_om - Parameter type: - - - tooltip_lbl_param_type_om - lbl_param_type_om - - - lbl_to_doc - To: - - - tooltip_lbl_to_doc - lbl_to_doc - - - lbl_to_om - To: - - - tooltip_lbl_to_om - lbl_to_om - - - lbl_type_doc - Type: - - - tooltip_lbl_type_doc - lbl_type_doc - - - lbl_upstream_features - Upstream features: - - - tooltip_lbl_upstream_features - lbl_upstream_features - - - page - Data - - - tooltip_page - page - - - page_2 - Dscenario - - - tooltip_page_2 - page_2 - - - page_add - Additional data - - - tooltip_page_add - page_add - - - page_main - Main data - - - tooltip_page_main - page_main - - - tab_arc - Arc - - - tooltip_tab_arc - tab_arc - - - tab_connec - Connec - - - tooltip_tab_connec - tab_connec - - - tab_connections - Conections - - - tooltip_tab_connections - tab_connections - - - tab_data - Data - - - tooltip_tab_data - tab_data - - - tab_documents - Document - - - tooltip_tab_documents - tab_documents - - - tab_elements - Elements - - - tooltip_tab_elements - tab_elements - - - tab_epa - EPA - - - tooltip_tab_epa - tab_epa - - - tab_event - Event - - - tooltip_tab_event - tab_event - - - tab_features - Features - - - tooltip_tab_features - tab_features - - - tab_gully - Gully - - - tooltip_tab_gully - tab_gully - - - tab_hydrometer - Hydrometer - - - tooltip_tab_hydrometer - tab_hydrometer - - - tab_hydrometer_val - Hydrometer values - - - tooltip_tab_hydrometer_val - tab_hydrometer_val - - - tab_link - Link - - - tooltip_tab_link - tab_link - - - tab_node - Node - - - tooltip_tab_node - tab_node - - - tab_om - O&amp;&amp;M - - - tooltip_tab_om - tab_om - - - tab_orifice - Orifice - - - tooltip_tab_orifice - tab_orifice - - - tab_outlet - Outlet - - - tooltip_tab_outlet - tab_outlet - - - tab_plan - Plan - - - tooltip_tab_plan - tab_plan - - - tab_pump - Pump - - - tooltip_tab_pump - tab_pump - - - tab_relations - Relations - - - tooltip_tab_relations - Relations - - - tab_rpt - Rpt - - - tooltip_tab_rpt - tab_rpt - - - tab_shortpipe - Shortpipe - - - tooltip_tab_shortpipe - tab_shortpipe - - - tab_valve - Valve - - - tooltip_tab_valve - tab_valve - - - tab_visit - Visit - - - tooltip_tab_visit - tab_visit - - - tab_weir - Weir - - - tooltip_tab_weir - tab_weir - - - toolBar - toolBar - - - tooltip_toolBar - toolBar - - - - info_generic - - title - Basic Info - - - actionEdit - Edit - - - tooltip_actionEdit - actionEdit - - - actionSetToArc - Set To Arc - - - tooltip_actionSetToArc - actionSetToArc - - - btn_accept - Accept - - - tooltip_btn_accept - Accept - - - btn_close - Close - - - tooltip_btn_close - btn_close - - - dlg_info_generic - Basic Info - - - tooltip_dlg_info_generic - dlg_info_generic - - - toolBar - toolBar - - - tooltip_toolBar - toolBar - - - - info_workcat - - title - New workcat - - - btn_accept - Accept - - - tooltip_btn_accept - Accept - - - btn_cancel - Cancel - - - tooltip_btn_cancel - btn_cancel - - - builtdate - dd/MM/yyyy - - - tooltip_builtdate - builtdate - - - dlg_info_workcat - New workcat - - - tooltip_dlg_info_workcat - dlg_info_workcat - - - lbl_builtdate - Builtdate: - - - tooltip_lbl_builtdate - lbl_builtdate - - - lbl_descript - Description: - - - tooltip_lbl_descript - lbl_descript - - - lbl_link - Link: - - - tooltip_lbl_link - Link - - - lbl_work_id - Work id: - - - tooltip_lbl_work_id - lbl_work_id - - - lbl_workid_key_1 - Workid key 1: - - - tooltip_lbl_workid_key_1 - lbl_workid_key_1 - - - lbl_workid_key_2 - Workid key 2: - - - tooltip_lbl_workid_key_2 - lbl_workid_key_2 - - - - inp_config_import - - title - Config INP import - - - btn_accept - Accept - - - tooltip_btn_accept - btn_accept - - - btn_cancel - Cancel - - - tooltip_btn_cancel - btn_cancel - - - btn_load - Load... - - - tooltip_btn_load - btn_load - - - btn_reload - Reload options - - - tooltip_btn_reload - btn_reload - - - btn_save - Save... - - - tooltip_btn_save - btn_save - - - chk_force_commit - Force commit - - - tooltip_chk_force_commit - chk_force_commit - - - dlg_inp_config_import - Config INP import - - - tooltip_dlg_inp_config_import - dlg_inp_config_import - - - grb_basic - Basic - - - tooltip_grb_basic - grb_basic - - - grb_info - Info - - - tooltip_grb_info - grb_info - - - grb_mapzones - Mapzones - - - tooltip_grb_mapzones - grb_mapzones - - - label - Psector: - - - tooltip_label - label - - - label_2 - Exploitation: - - - tooltip_label_2 - label_2 - - - label_3 - Municipality: - - - tooltip_label_3 - label_3 - - - label_4 - Sector: - - - tooltip_label_4 - label_4 - - - lbl_arcs - Select the appropriate arccat_id for each arc combination from the options below. If you choose &quot;Create new&quot;, enter the new name in the &quot;New catalog name&quot; column. - - - tooltip_lbl_arcs - lbl_arcs - - - lbl_dscenario - Demands dscenario name: - - - tooltip_lbl_dscenario - lbl_dscenario - - - lbl_feature - Select the appropriate feature_id for each EPA type from the options below. If needed, you can add a new feature type in the Giswater catalog and click the &quot;Reload Options&quot; button below. - - - tooltip_lbl_feature - lbl_feature - - - lbl_flwreg - Select the appropriate catalog id for each flow regulator from the options below. If you choose &quot;Create new&quot;, enter the new name in the &quot;New catalog name&quot; column. - - - tooltip_lbl_flwreg - lbl_flwreg - - - lbl_material - Select the appropriate material for each roughness from the options below. If needed, you can add a new material in the Giswater catalog and click the &quot;Reload Options&quot; button below. - - - tooltip_lbl_material - lbl_material - - - lbl_nodes - Select the appropriate nodecat_id for each EPA type from the options below. If you choose &quot;Create new&quot;, enter the new name in the &quot;New catalog name&quot; column. - - - tooltip_lbl_nodes - lbl_nodes - - - lbl_raingage - Default raingage: - - - tooltip_lbl_raingage - lbl_raingage - - - lbl_workcat - Workcat_id: - - - tooltip_lbl_workcat - lbl_workcat - - - tab_arccat - Arcs - - - tooltip_tab_arccat - tab_arccat - - - tab_basic - Basic - - - tooltip_tab_basic - tab_basic - - - tab_feature - Features - - - tooltip_tab_feature - tab_feature - - - tab_flwreg - Flow regulators - - - tooltip_tab_flwreg - tab_flwreg - - - tab_infolog - Info log - - - tooltip_tab_infolog - tab_infolog - - - tab_material - Material - - - tooltip_tab_material - tab_material - - - tab_nodecat - Nodes - - - tooltip_tab_nodecat - tab_nodecat - - - tbl_arcs - New catalog name - - - tooltip_tbl_arcs - tbl_arcs - - - tbl_feature - Feature - - - tooltip_tbl_feature - tbl_feature - - - tbl_flwreg - New catalog name - - - tooltip_tbl_flwreg - tbl_flwreg - - - tbl_material - Material - - - tooltip_tbl_material - tbl_material - - - tbl_nodes - New catalog name - - - tooltip_tbl_nodes - tbl_nodes - - - - inp_parsing - - title - Parsing INP file - - - btn_accept - Accept - - - tooltip_btn_accept - btn_accept - - - dlg_inp_parsing - Parsing INP file - - - tooltip_dlg_inp_parsing - dlg_inp_parsing - - - tab_databaselog - Info log - - - tooltip_tab_databaselog - tab_databaselog - - - - interpolate - - title - Interpolate - - - btn_accept - Accept - - - tooltip_btn_accept - btn_accept - - - btn_close - Close - - - tooltip_btn_close - btn_close - - - dlg_interpolate - Interpolate - - - tooltip_dlg_interpolate - dlg_interpolate - - - rb_extrapolate - Extrapolate - - - tooltip_rb_extrapolate - rb_extrapolate - - - rb_interpolate - Interpolate - - - tooltip_rb_interpolate - rb_interpolate - - - - load_menu - - title - Dialog - - - btn_close - Close - - - tooltip_btn_close - btn_close - - - dlg_load_menu - Dialog - - - tooltip_dlg_load_menu - dlg_load_menu - - - - lot_management - - title - Lot Management - - - btn_cancel - Close - - - tooltip_btn_cancel - Close - - - btn_delete - Delete Lot - - - tooltip_btn_delete - Delete lot - - - btn_export - Export to csv - - - tooltip_btn_export - Export to csv - - - btn_lot_selector - Lots selector - - - tooltip_btn_lot_selector - Lots selector - - - btn_manage_load - Waste registration - - - tooltip_btn_manage_load - Waste registration - - - btn_open - Open Lot - - - tooltip_btn_open - Open lot - - - btn_work_register - Work logs - - - tooltip_btn_work_register - Work logs - - - chk_assignacio - Pendent assign works to OT - - - tooltip_chk_assignacio - Pendent assign works to OT - - - chk_show_nulls - Show null values - - - tooltip_chk_show_nulls - Show empty values - - - dlg_lot_management - Lot Management - - - tooltip_dlg_lot_management - dlg_lot_management - - - lbl_address - Address: - - - tooltip_lbl_address - Address: - - - lbl_column_filter - Filter dates column: - - - tooltip_lbl_column_filter - Data column filter: - - - lbl_data_event_from - From: - - - tooltip_lbl_data_event_from - From: - - - lbl_data_event_to - Until: - - - tooltip_lbl_data_event_to - To: - - - lbl_name - Name: - - - tooltip_lbl_name - lbl_name - - - lbl_performance_type - Performance type: - - - tooltip_lbl_performance_type - Performance type: - - - lbl_serie - Serie: - - - tooltip_lbl_serie - Serie: - - - lbl_state - State: - - - tooltip_lbl_state - State: - - - lot_management - Lot Management - - - tooltip_lot_management - lot_management - - - - lot_selector - - btn_ok - Close - - - tooltip_btn_ok - Close - - - lbl_performance_type - Performance type: - - - tooltip_lbl_performance_type - Performance type: - - - lbl_state - State: - - - tooltip_lbl_state - State: - - - - main_dbproject - - title - Create project - - - dlg_main_dbproject - Main dbproject: - - - tooltip_dlg_main_dbproject - dlg_main_dbproject - - - lbl_descript - Description: - - - tooltip_lbl_descript - lbl_descript - - - - mapzone_config - - title - Mapzone Config - - - btn_accept - OK - - - tooltip_btn_accept - btn_accept - - - btn_add_forceClosed - ADD - - - tooltip_btn_add_forceClosed - btn_add_forceClosed - - - btn_add_ignore - ADD - - - tooltip_btn_add_ignore - btn_add_ignore - - - btn_add_nodeParent - ADD - - - tooltip_btn_add_nodeParent - btn_add_nodeParent - - - btn_cancel - Cancel - - - tooltip_btn_cancel - btn_cancel - - - btn_clear_preview - Clear Preview - - - tooltip_btn_clear_preview - btn_clear_preview - - - btn_remove_forceClosed - REMOVE - - - tooltip_btn_remove_forceClosed - btn_remove_forceClosed - - - btn_remove_ignore - REMOVE - - - tooltip_btn_remove_ignore - btn_remove_ignore - - - btn_remove_nodeParent - REMOVE - - - tooltip_btn_remove_nodeParent - btn_remove_nodeParent - - - dlg_mapzone_config - Mapzone Config - - - tooltip_dlg_mapzone_config - dlg_mapzone_config - - - lbl_forceClosed - forceClosed: - - - tooltip_lbl_forceClosed - lbl_forceClosed - - - lbl_ignore - ignore - - - tooltip_lbl_ignore - lbl_ignore - - - lbl_nodeParent - nodeParent: - - - tooltip_lbl_nodeParent - lbl_nodeParent - - - lbl_preview - Preview: - - - tooltip_lbl_preview - lbl_preview - - - lbl_toArc - toArc: - - - tooltip_lbl_toArc - lbl_toArc - - - - mapzone_manager - - title - Mapzones manager - - - btn_cancel - Close - - - tooltip_btn_cancel - Cancel - - - btn_config - Config - - - tooltip_btn_config - Configure - - - btn_create - Create - - - tooltip_btn_create - Create - - - btn_delete - Delete - - - tooltip_btn_delete - Delete - - - btn_execute - btn_execute - - - tooltip_btn_execute - Execute mapzone analysis process - - - btn_toggle_active - Toggle active - - - tooltip_btn_toggle_active - Toggle active - - - btn_update - Update - - - tooltip_btn_update - Update - - - chk_active - Show inactive - - - tooltip_chk_active - Show inactive - - - chk_show_all - Show all mapzones - - - tooltip_chk_show_all - Show all mapzones - - - dlg_mapzone_manager - Mapzones manager - - - tooltip_dlg_mapzone_manager - dlg_mapzone_manager - - - lbl_mapzone_name - Filter by: Mapzone name, id or code - - - tooltip_lbl_mapzone_name - Filter by: Mapzone name, id or code - - - - massive_composer - - title - Print composer pages automatically - - - btn_accept - Accept - - - tooltip_btn_accept - btn_accept - - - btn_close - Close - - - tooltip_btn_close - btn_close - - - btn_path - ... - - - tooltip_btn_path - btn_path - - - dlg_massive_composer - Print composer pages automatically - - - tooltip_dlg_massive_composer - dlg_massive_composer - - - grb_comp - Composers list - - - tooltip_grb_comp - grb_comp - - - lbl_composers - Select composer: - - - tooltip_lbl_composers - lbl_composers - - - lbl_folder - Select folder: - - - tooltip_lbl_folder - lbl_folder - - - lbl_prefix - Prefix file: - - - tooltip_lbl_prefix - lbl_prefix - - - lbl_single - Single file: - - - tooltip_lbl_single - lbl_single - - - lbl_sleep - Sleep time: - - - tooltip_lbl_sleep - lbl_sleep - - - - mincut - - title - Mincut - - - actionAddConnec - Connec Mincut - - - tooltip_actionAddConnec - actionAddConnec - - - actionAddHydrometer - Hydrometer Mincut - - - tooltip_actionAddHydrometer - actionAddHydrometer - - - actionChangeValveStatus - Change valve status - - - tooltip_actionChangeValveStatus - actionChangeValveStatus - - - actionComposer - Composer - - - tooltip_actionComposer - actionComposer - - - actionCustomMincut - Custom Mincut - - - tooltip_actionCustomMincut - actionCustomMincut - - - actionExportHydroCsv - Export Hydro Csv - - - tooltip_actionExportHydroCsv - actionExportHydroCsv - - - actionMincut - Automatic Mincut - - - tooltip_actionMincut - actionMincut - - - actionRefreshMincut - Refresh Mincut - - - tooltip_actionRefreshMincut - actionRefreshMincut - - - btn_accept - Accept - - - tooltip_btn_accept - Accept - - - btn_cancel - Cancel - - - tooltip_btn_cancel - Cancel - - - btn_cancel_task - Cancel task - - - tooltip_btn_cancel_task - btn_cancel_task - - - btn_end - End - - - tooltip_btn_end - btn_end - - - btn_start - Start - - - tooltip_btn_start - btn_start - - - cbx_date_end - dd/MM/yyyy - - - tooltip_cbx_date_end - cbx_date_end - - - cbx_date_end_predict - dd/MM/yyyy - - - tooltip_cbx_date_end_predict - cbx_date_end_predict - - - cbx_date_start - dd/MM/yyyy - - - tooltip_cbx_date_start - cbx_date_start - - - cbx_date_start_predict - dd/MM/yyyy - - - tooltip_cbx_date_start_predict - cbx_date_start_predict - - - cbx_recieved_day - dd/MM/yyyy - - - tooltip_cbx_recieved_day - cbx_recieved_day - - - chk_use_planified - Use planified network - - - tooltip_chk_use_planified - chk_use_planified - - - dlg_mincut - Mincut - - - tooltip_dlg_mincut - dlg_mincut - - - grb_exec_realdates - Real dates - - - tooltip_grb_exec_realdates - grb_exec_realdates - - - grb_location - Location - - - tooltip_grb_location - grb_location - - - grb_plan_details - Details - - - tooltip_grb_plan_details - grb_plan_details - - - grb_plan_forecasted_dates - Forecasted dates - - - tooltip_grb_plan_forecasted_dates - grb_plan_forecasted_dates - - - lbl_assigned_to - Assigned to: - - - tooltip_lbl_assigned_to - lbl_assigned_to - - - lbl_cause - Cause: - - - tooltip_lbl_cause - lbl_cause - - - lbl_chlorine - Chlorine: - - - tooltip_lbl_chlorine - lbl_chlorine - - - lbl_depth - Depth: - - - tooltip_lbl_depth - lbl_depth - - - lbl_descript_pd - Description: - - - tooltip_lbl_descript_pd - lbl_descript_pd - - - lbl_descript_rd - Description: - - - tooltip_lbl_descript_rd - lbl_descript_rd - - - lbl_dist_from_plot - Distance from plot: - - - tooltip_lbl_dist_from_plot - lbl_dist_from_plot - - - lbl_end - To: - - - tooltip_lbl_end - lbl_end - - - lbl_equipment_code - Chlorine measurement equipment: - - - tooltip_lbl_equipment_code - lbl_equipment_code - - - lbl_exec_appropriate - Appropriate: - - - tooltip_lbl_exec_appropriate - If true, the actual location matches the mincut scheduled information - - - lbl_exec_enddate - End date: - - - tooltip_lbl_exec_enddate - lbl_exec_enddate - - - lbl_exec_startdate - Start date: - - - tooltip_lbl_exec_startdate - Visit ID - - - lbl_exec_user - Exec user: - - - tooltip_lbl_exec_user - lbl_exec_user - - - lbl_id - Id: - - - tooltip_lbl_id - lbl_id - - - lbl_msg - No results found - - - tooltip_lbl_msg - lbl_msg - - - lbl_reagent_lot - Chlorine reagent lot: - - - tooltip_lbl_reagent_lot - lbl_reagent_lot - - - lbl_received_date - Received date: - - - tooltip_lbl_received_date - lbl_received_date - - - lbl_start - From: - - - tooltip_lbl_start - lbl_start - - - lbl_state - State: - - - tooltip_lbl_state - lbl_state - - - lbl_turbidity - Turbidity: - - - tooltip_lbl_turbidity - lbl_turbidity - - - lbl_type - Type: - - - tooltip_lbl_type - lbl_type - - - lbl_work_order - Work order: - - - tooltip_lbl_work_order - lbl_work_order - - - tab - Exec - - - tooltip_tab - tab - - - tab_config - Plan - - - tooltip_tab_config - tab_config - - - tab_hydro - Hydro - - - tooltip_tab_hydro - tab_hydro - - - tab_loginfo - Log - - - tooltip_tab_loginfo - tab_loginfo - - - toolBar - toolBar - - - tooltip_toolBar - toolBar - - - - mincut_composer - - title - Mincut composer - - - btn_cancel - Cancel - - - tooltip_btn_cancel - Cancel - - - btn_ok - Open - - - tooltip_btn_ok - btn_ok - - - dlg_mincut_composer - Mincut composer - - - tooltip_dlg_mincut_composer - dlg_mincut_composer - - - groupBox_2 - Mincut composer - - - tooltip_groupBox_2 - groupBox_2 - - - lbl_rotation - Rotation: - - - tooltip_lbl_rotation - lbl_rotation - - - lbl_template - Template: - - - tooltip_lbl_template - lbl_template - - - lbl_title - Title: - - - tooltip_lbl_title - lbl_title - - - - mincut_connec - - title - Mincut connec - - - btn_accept - Accept - - - tooltip_btn_accept - Accept - - - btn_delete - btn_delete - - - tooltip_btn_delete - Delete - - - btn_insert - btn_insert - - - tooltip_btn_insert - Insert - - - btn_snapping - btn_snapping - - - tooltip_btn_snapping - Snapping - - - dlg_mincut_connec - Mincut connec - - - tooltip_dlg_mincut_connec - dlg_mincut_connec - - - lbl_search - Search by customer code: - - - tooltip_lbl_search - lbl_search - - - - mincut_end - - title - Mincut end - - - btn_accept - Accept - - - tooltip_btn_accept - Accept - - - btn_cancel - Cancel - - - tooltip_btn_cancel - btn_cancel - - - btn_set_real_location - Set real location - - - tooltip_btn_set_real_location - btn_set_real_location - - - cbx_date_end_fin - dd/MM/yyyy - - - tooltip_cbx_date_end_fin - cbx_date_end_fin - - - cbx_date_start_fin - dd/MM/yyyy - - - tooltip_cbx_date_start_fin - cbx_date_start_fin - - - cbx_hours_start_fin - H:mm:ss - - - tooltip_cbx_hours_start_fin - cbx_hours_start_fin - - - dlg_mincut_end - Mincut end - - - tooltip_dlg_mincut_end - dlg_mincut_end - - - grb_close_mincut - Close mincut - - - tooltip_grb_close_mincut - grb_close_mincut - - - groupBox - Dates - - - tooltip_groupBox - groupBox - - - lbl_end_date - To: - - - tooltip_lbl_end_date - lbl_end_date - - - lbl_end_hour - End hour: - - - tooltip_lbl_end_hour - lbl_end_hour - - - lbl_executed - Executed by: - - - tooltip_lbl_executed - lbl_executed - - - lbl_mincut - Mincut: - - - tooltip_lbl_mincut - lbl_mincut - - - lbl_msg - No results found - - - tooltip_lbl_msg - lbl_msg - - - lbl_municipality - Municipality: - - - tooltip_lbl_municipality - lbl_municipality - - - lbl_number - Number: - - - tooltip_lbl_number - lbl_number - - - lbl_start_date - From: - - - tooltip_lbl_start_date - lbl_start_date - - - lbl_start_hour - Start hour: - - - tooltip_lbl_start_hour - lbl_start_hour - - - lbl_street - Street: - - - tooltip_lbl_street - lbl_street - - - lbl_work_order - Work order: - - - tooltip_lbl_work_order - lbl_work_order - - - - mincut_hydrometer - - title - Mincut hydrometer - - - btn_accept - Accept - - - tooltip_btn_accept - Accept - - - btn_delete - btn_delete - - - tooltip_btn_delete - Delete - - - btn_insert - btn_insert - - - tooltip_btn_insert - Insert - - - dlg_mincut_hydrometer - Mincut hydrometer - - - tooltip_dlg_mincut_hydrometer - dlg_mincut_hydrometer - - - lbl_ccc - Connec customer code: - - - tooltip_lbl_ccc - lbl_ccc - - - lbl_hcc - Hydrometer customer code: - - - tooltip_lbl_hcc - lbl_hcc - - - - mincut_manager - - title - Mincut management - - - btn_cancel - Close - - - tooltip_btn_cancel - btn_cancel - - - btn_cancel_mincut - Cancel mincut - - - tooltip_btn_cancel_mincut - btn_cancel_mincut - - - btn_delete - Delete - - - tooltip_btn_delete - btn_delete - - - btn_next_days - Next days - - - tooltip_btn_next_days - btn_next_days - - - btn_notify - Send sms - - - tooltip_btn_notify - btn_notify - - - btn_selector_mincut - btn_selector_mincut - - - tooltip_btn_selector_mincut - btn_selector_mincut - - - dlg_mincut_manager - Mincut management - - - tooltip_dlg_mincut_manager - dlg_mincut_manager - - - lbl_date_from - From: - - - tooltip_lbl_date_from - lbl_date_from - - - lbl_date_to - To: - - - tooltip_lbl_date_to - lbl_date_to - - - lbl_exploitation - Exploitation: - - - tooltip_lbl_exploitation - lbl_exploitation - - - lbl_filter - Filter by: - - - tooltip_lbl_filter - lbl_filter - - - lbl_mincut_type - Type: - - - tooltip_lbl_mincut_type - lbl_mincut_type - - - lbl_state - State: - - - tooltip_lbl_state - lbl_state - - - lbl_streetaxis - Streetaxis: - - - tooltip_lbl_streetaxis - lbl_streetaxis - - - - netscenario - - title - Dialog - - - btn_config - Config - - - tooltip_btn_config - btn_config - - - btn_create - Create - - - tooltip_btn_create - btn_create - - - btn_delete - Delete - - - tooltip_btn_delete - btn_delete - - - btn_toggle_active - Toggle active - - - tooltip_btn_toggle_active - btn_toggle_active - - - btn_toggle_closed - Toggle closed - - - tooltip_btn_toggle_closed - btn_toggle_closed - - - btn_update - Update - - - tooltip_btn_update - btn_update - - - dlg_netscenario - Dialog - - - tooltip_dlg_netscenario - dlg_netscenario - - - lbl_mapzone_id - Mapzone id: - - - tooltip_lbl_mapzone_id - lbl_mapzone_id - - - - netscenario_manager - - title - Netscenario manager - - - btn_cancel - Close - - - tooltip_btn_cancel - Close - - - btn_create - Create - - - tooltip_btn_create - Create - - - btn_delete - Delete - - - tooltip_btn_delete - Delete - - - btn_duplicate - Duplicate - - - tooltip_btn_duplicate - Duplicate - - - btn_execute - btn_execute - - - tooltip_btn_execute - Execute mapzones analysis - - - btn_toc - btn_toc - - - tooltip_btn_toc - Load Giswater layer - - - btn_toggle_active - Toggle active - - - tooltip_btn_toggle_active - Toggle active - - - btn_update - Update - - - tooltip_btn_update - Update - - - btn_update_netscenario - Current netscenario - - - tooltip_btn_update_netscenario - Current netscenario - - - chk_active - Show inactive - - - tooltip_chk_active - Show inactive - - - dlg_netscenario_manager - Netscenario manager - - - tooltip_dlg_netscenario_manager - dlg_netscenario_manager - - - lbl_netscenario_name - Filter by: Netscenario name - - - tooltip_lbl_netscenario_name - Filter by: Netscenario name - - - - nodetype_change - - title - Change node type - - - btn_accept - Accept - - - tooltip_btn_accept - Accept - - - btn_cancel - Cancel - - - tooltip_btn_cancel - btn_cancel - - - dlg_nodetype_change - Change node type - - - tooltip_dlg_nodetype_change - dlg_nodetype_change - - - lbl_catalog_id - Catalog id: - - - tooltip_lbl_catalog_id - lbl_catalog_id - - - lbl_custom_node_type - New node type: - - - tooltip_lbl_custom_node_type - lbl_custom_node_type - - - lbl_node_type - Current node type: - - - tooltip_lbl_node_type - lbl_node_type - - - - nonvisual_controls - - title - Simple Controls Editor - - - btn_accept - OK - - - tooltip_btn_accept - btn_accept - - - btn_cancel - Cancel - - - tooltip_btn_cancel - btn_cancel - - - chk_active - Active - - - tooltip_chk_active - chk_active - - - dlg_nonvisual_controls - Simple Controls Editor - - - tooltip_dlg_nonvisual_controls - dlg_nonvisual_controls - - - lbl_sector_id - Sector ID - - - tooltip_lbl_sector_id - lbl_sector_id - - - - nonvisual_curve - - title - Curve Editor - - - btn_accept - OK - - - tooltip_btn_accept - btn_accept - - - btn_cancel - Cancel - - - tooltip_btn_cancel - btn_cancel - - - dlg_nonvisual_curve - Curve Editor - - - tooltip_dlg_nonvisual_curve - dlg_nonvisual_curve - - - lbl_curve_id - Curve ID - - - tooltip_lbl_curve_id - lbl_curve_id - - - lbl_curve_type - Curve Type - - - tooltip_lbl_curve_type - lbl_curve_type - - - lbl_descript - Description - - - tooltip_lbl_descript - lbl_descript - - - lbl_expl_id - Exploitation ID - - - tooltip_lbl_expl_id - lbl_expl_id - - - tbl_curve_value - Y - - - tooltip_tbl_curve_value - tbl_curve_value - - - - nonvisual_lids - - btn_cancel - Cancel - - - tooltip_btn_cancel - btn_cancel - - - btn_help - Help - - - tooltip_btn_help - btn_help - - - btn_ok - OK - - - tooltip_btn_ok - btn_ok - - - Dialog - LIDS - - - tooltip_Dialog - Dialog - - - drain - Drain - - - tooltip_drain - drain - - - drainmat - Drainage Mat - - - tooltip_drainmat - drainmat - - - label_source_img - Source: SWMM 5.1 - - - tooltip_label_source_img - label_source_img - - - lbl_berm_height - Berm Height (in. or mm) - - - tooltip_lbl_berm_height - lbl_berm_height - - - lbl_clogging_factor_pavement - Clogging Factor - - - tooltip_lbl_clogging_factor_pavement - lbl_clogging_factor_pavement - - - lbl_clogging_factor_storage - Clogging Factor - - - tooltip_lbl_clogging_factor_storage - lbl_clogging_factor_storage - - - lbl_closed_level - Closed Level (in or mm) - - - tooltip_lbl_closed_level - lbl_closed_level - - - lbl_conducticity_slope - Conductivity Slope - - - tooltip_lbl_conducticity_slope - lbl_conducticity_slope - - - lbl_conductivity - Conductivity (in/hr or mm/hr) - - - tooltip_lbl_conductivity - lbl_conductivity - - - lbl_control_curve - Control Curve - - - tooltip_lbl_control_curve - lbl_control_curve - - - lbl_control_name - Control Name: - - - tooltip_lbl_control_name - lbl_control_name - - - lbl_drain_delay - Drain Delay (hrs) - - - tooltip_lbl_drain_delay - lbl_drain_delay - - - lbl_field_capacity - Field Capacity (volume fraction) - - - tooltip_lbl_field_capacity - lbl_field_capacity - - - lbl_flow_capacity - Flow Capacity (in/hr or mm/hr) - - - tooltip_lbl_flow_capacity - lbl_flow_capacity - - - lbl__flow_coefficient - Flow Coefficient* - - - tooltip_lbl__flow_coefficient - lbl__flow_coefficient - - - lbl_flow_description - *Flow is in in/hr or mm/hr; use 0 if there is no drain. - - - tooltip_lbl_flow_description - lbl_flow_description - - - lbl_flow_exponent - Flow Exponent - - - tooltip_lbl_flow_exponent - lbl_flow_exponent - - - lbl_imprevious_surface - Imprevious Surface Fraction - - - tooltip_lbl_imprevious_surface - lbl_imprevious_surface - - - lbl_lid_type - LID Type: - - - tooltip_lbl_lid_type - lbl_lid_type - - - lbl_offset - Offset (in or mm) - - - tooltip_lbl_offset - lbl_offset - - - lbl_open_level - Open Level (in or mm) - - - tooltip_lbl_open_level - lbl_open_level - - - lbl__permeability - Permeability (in/hr or mm/hr) - - - tooltip_lbl__permeability - lbl__permeability - - - lbl_porosity - Porosity (volume fraction) - - - tooltip_lbl_porosity - lbl_porosity - - - lbl_regeneration_fraction - Regeneration Fraction - - - tooltip_lbl_regeneration_fraction - lbl_regeneration_fraction - - - lbl_regeneration_interval - Regeneration Interval (days) - - - tooltip_lbl_regeneration_interval - lbl_regeneration_interval - - - lbl_roughness - Roughness (Mannings n) - - - tooltip_lbl_roughness - lbl_roughness - - - lbl_seepage_rate - Seepage Rate (in/hr or mm/hr) - - - tooltip_lbl_seepage_rate - lbl_seepage_rate - - - lbl_suction_head - Suction Head (in. or mm) - - - tooltip_lbl_suction_head - lbl_suction_head - - - lbl_surface_roughness - Surface Roughness (Mannings n) - - - tooltip_lbl_surface_roughness - lbl_surface_roughness - - - lbl_surface_slope - Surface Slope (percent) - - - tooltip_lbl_surface_slope - lbl_surface_slope - - - lbl_swale_side_slope - Swale Side Slope (run / rise) - - - tooltip_lbl_swale_side_slope - lbl_swale_side_slope - - - lbl_thickness - Thickness (in. or mm) - - - tooltip_lbl_thickness - lbl_thickness - - - lbl_thickness_drainage - Thickness (in. or mm) - - - tooltip_lbl_thickness_drainage - lbl_thickness_drainage - - - lbl_thickness_storage - Thickness (in. or mm) - - - tooltip_lbl_thickness_storage - lbl_thickness_storage - - - lbl_thinkness_pavement - Thickness (in. or mm) - - - tooltip_lbl_thinkness_pavement - lbl_thinkness_pavement - - - lbl_vegetation_volume - Vegetation Volume Fraction - - - tooltip_lbl_vegetation_volume - lbl_vegetation_volume - - - lbl_void_fraction - Void Fraction - - - tooltip_lbl_void_fraction - lbl_void_fraction - - - lbl_void_ratio_pavement - Void Ratio (Void / Solids) - - - tooltip_lbl_void_ratio_pavement - lbl_void_ratio_pavement - - - lbl_void_ratio_storage - Void Ratio (Voids / Solids) - - - tooltip_lbl_void_ratio_storage - lbl_void_ratio_storage - - - lbl_wilting_point - Wilting Point (volume fraction) - - - tooltip_lbl_wilting_point - lbl_wilting_point - - - pavement - Pavement - - - tooltip_pavement - pavement - - - rooftop - Roof Drain - - - tooltip_rooftop - rooftop - - - soil - Soil - - - tooltip_soil - soil - - - storage - Storage - - - tooltip_storage - storage - - - surface - Surface - - - tooltip_surface - surface - - - txt_1_berm_height - 0.0 - - - tooltip_txt_1_berm_height - txt_1_berm_height - - - txt_1_flow_coefficient - 0 - - - tooltip_txt_1_flow_coefficient - txt_1_flow_coefficient - - - txt_1_thickness - 0 - - - tooltip_txt_1_thickness - txt_1_thickness - - - txt_1_thickness_drainage - 3 - - - tooltip_txt_1_thickness_drainage - txt_1_thickness_drainage - - - txt_1_thickness_pavement - 0 - - - tooltip_txt_1_thickness_pavement - txt_1_thickness_pavement - - - txt_1_thickness_storage - 0 - - - tooltip_txt_1_thickness_storage - txt_1_thickness_storage - - - txt_2_flow_exponent - 0.5 - - - tooltip_txt_2_flow_exponent - txt_2_flow_exponent - - - txt_2_porosity - 0.5 - - - tooltip_txt_2_porosity - txt_2_porosity - - - txt_2_vegetation_volume - 0.0 - - - tooltip_txt_2_vegetation_volume - txt_2_vegetation_volume - - - txt_2_void_fraction - 0.5 - - - tooltip_txt_2_void_fraction - txt_2_void_fraction - - - txt_2_void_ratio_pavement - 0.15 - - - tooltip_txt_2_void_ratio_pavement - txt_2_void_ratio_pavement - - - txt_2_void_ratio_storage - 0.75 - - - tooltip_txt_2_void_ratio_storage - txt_2_void_ratio_storage - - - txt_3_field_capacity - 0.2 - - - tooltip_txt_3_field_capacity - txt_3_field_capacity - - - txt_3_imprevious_surface - 0 - - - tooltip_txt_3_imprevious_surface - txt_3_imprevious_surface - - - txt_3_offset - 6 - - - tooltip_txt_3_offset - txt_3_offset - - - txt_3_roughness - 0.1 - - - tooltip_txt_3_roughness - txt_3_roughness - - - txt_3_seepage_rate - 0.5 - - - tooltip_txt_3_seepage_rate - txt_3_seepage_rate - - - txt_3_surface_roughness - 0.1 - - - tooltip_txt_3_surface_roughness - txt_3_surface_roughness - - - txt_4_clogging_factor_storage - 0 - - - tooltip_txt_4_clogging_factor_storage - txt_4_clogging_factor_storage - - - txt_4_drain_delay - 6 - - - tooltip_txt_4_drain_delay - txt_4_drain_delay - - - txt_4_permeability - 100 - - - tooltip_txt_4_permeability - txt_4_permeability - - - txt_4_surface_slope - 1.0 - - - tooltip_txt_4_surface_slope - txt_4_surface_slope - - - txt_4_wilting_point - 0.1 - - - tooltip_txt_4_wilting_point - txt_4_wilting_point - - - txt_5_clogging_factor_pavement - 0 - - - tooltip_txt_5_clogging_factor_pavement - txt_5_clogging_factor_pavement - - - txt_5_conductivity - 0.5 - - - tooltip_txt_5_conductivity - txt_5_conductivity - - - txt_5_open_level - 0 - - - tooltip_txt_5_open_level - txt_5_open_level - - - txt_5_swale_side_slope - 5 - - - tooltip_txt_5_swale_side_slope - txt_5_swale_side_slope - - - txt_6_closed_level - 0 - - - tooltip_txt_6_closed_level - txt_6_closed_level - - - txt_6_conducticity_slope - 10.0 - - - tooltip_txt_6_conducticity_slope - txt_6_conducticity_slope - - - txt_6_regeneration_interval - 0 - - - tooltip_txt_6_regeneration_interval - txt_6_regeneration_interval - - - txt_7_regeneration_fraction - 0 - - - tooltip_txt_7_regeneration_fraction - txt_7_regeneration_fraction - - - txt_7_suction_head - 3.5 - - - tooltip_txt_7_suction_head - txt_7_suction_head - - - txt_flow_capacity - 0 - - - tooltip_txt_flow_capacity - txt_flow_capacity - - - - nonvisual_manager - - title - Non-Visual Object Manager - - - btn_cancel - Close - - - tooltip_btn_cancel - Close - - - btn_create - Create - - - tooltip_btn_create - Create - - - btn_delete - Delete - - - tooltip_btn_delete - Delete - - - btn_duplicate - Duplicate - - - tooltip_btn_duplicate - Duplicate - - - btn_print - Shape to PNG - - - tooltip_btn_print - btn_print - - - btn_toggle_active - Toggle active - - - tooltip_btn_toggle_active - btn_toggle_active - - - cat_mat_roughness - Roughness - - - tooltip_cat_mat_roughness - cat_mat_roughness - - - chk_active - Show inactive - - - tooltip_chk_active - Show inactive - - - dlg_nonvisual_manager - Non-Visual Object Manager - - - tooltip_dlg_nonvisual_manager - dlg_nonvisual_manager - - - inp_lid - Lids - - - tooltip_inp_lid - inp_lid - - - lbl_curve_type - Curve type: - - - tooltip_lbl_curve_type - Curve type - - - lbl_filter - Filter by: - - - tooltip_lbl_filter - lbl_filter - - - lbl_pattern_type - Pattern type: - - - tooltip_lbl_pattern_type - Pattern type - - - lbl_timser_type - Timeseries type: - - - tooltip_lbl_timser_type - Timeseries type - - - ve_inp_controls - Controls - - - tooltip_ve_inp_controls - ve_inp_controls - - - ve_inp_curve - curves - - - tooltip_ve_inp_curve - ve_inp_curve - - - ve_inp_pattern - patterns - - - tooltip_ve_inp_pattern - ve_inp_pattern - - - ve_inp_rules - rules - - - tooltip_ve_inp_rules - ve_inp_rules - - - ve_inp_timeseries - timeseries - - - tooltip_ve_inp_timeseries - ve_inp_timeseries - - - - nonvisual_pattern_ud - - title - Pattern Editor - - - btn_accept - OK - - - tooltip_btn_accept - btn_accept - - - btn_cancel - Cancel - - - tooltip_btn_cancel - btn_cancel - - - dlg_nonvisual_pattern_ud - Pattern Editor - - - tooltip_dlg_nonvisual_pattern_ud - dlg_nonvisual_pattern_ud - - - lbl_expl_id - Exploitation ID - - - tooltip_lbl_expl_id - lbl_expl_id - - - lbl_observ - Observation - - - tooltip_lbl_observ - lbl_observ - - - lbl_pattern_id - Pattern ID - - - tooltip_lbl_pattern_id - lbl_pattern_id - - - lbl_pattern_type - Pattern Type - - - tooltip_lbl_pattern_type - lbl_pattern_type - - - tbl_daily - SUN - - - tooltip_tbl_daily - tbl_daily - - - tbl_hourly - 11PM - - - tooltip_tbl_hourly - tbl_hourly - - - tbl_monthly - DEC - - - tooltip_tbl_monthly - tbl_monthly - - - tbl_weekend - 11PM - - - tooltip_tbl_weekend - tbl_weekend - - - - nonvisual_pattern_ws - - title - Pattern Editor - - - btn_accept - OK - - - tooltip_btn_accept - btn_accept - - - btn_cancel - Cancel - - - tooltip_btn_cancel - btn_cancel - - - dlg_nonvisual_pattern_ws - Pattern Editor - - - tooltip_dlg_nonvisual_pattern_ws - dlg_nonvisual_pattern_ws - - - lbl_observ - Observation - - - tooltip_lbl_observ - lbl_observ - - - lbl_pattern_id - Pattern ID - - - tooltip_lbl_pattern_id - lbl_pattern_id - - - lbl_pattern_type - Exploitation ID - - - tooltip_lbl_pattern_type - lbl_pattern_type - - - tbl_pattern_value - 18 - - - tooltip_tbl_pattern_value - tbl_pattern_value - - - - nonvisual_print - - title - Non-Visual Object Print - - - btn_accept - Accept - - - tooltip_btn_accept - btn_accept - - - btn_close - Close - - - tooltip_btn_close - btn_close - - - btn_path - ... - - - tooltip_btn_path - btn_path - - - chk_cross_arccat - Cross with arccat - - - tooltip_chk_cross_arccat - chk_cross_arccat - - - dlg_nonvisual_print - Non-Visual Object Print - - - tooltip_dlg_nonvisual_print - dlg_nonvisual_print - - - - nonvisual_roughness - - title - Rule-Based Controls Editor - - - btn_accept - OK - - - tooltip_btn_accept - btn_accept - - - btn_cancel - Cancel - - - tooltip_btn_cancel - btn_cancel - - - chk_active - Active - - - tooltip_chk_active - chk_active - - - dlg_nonvisual_roughness - Rule-Based Controls Editor - - - tooltip_dlg_nonvisual_roughness - dlg_nonvisual_roughness - - - label - Period ID - - - tooltip_label - label - - - label_2 - Init age - - - tooltip_label_2 - label_2 - - - label_3 - End age - - - tooltip_label_3 - label_3 - - - label_4 - Roughness - - - tooltip_label_4 - label_4 - - - label_5 - Descript - - - tooltip_label_5 - label_5 - - - lbl_matcat_id - Matcat ID - - - tooltip_lbl_matcat_id - lbl_matcat_id - - - - nonvisual_rules - - title - Rule-Based Controls Editor - - - btn_accept - OK - - - tooltip_btn_accept - btn_accept - - - btn_cancel - Cancel - - - tooltip_btn_cancel - btn_cancel - - - chk_active - Active - - - tooltip_chk_active - chk_active - - - dlg_nonvisual_rules - Rule-Based Controls Editor - - - tooltip_dlg_nonvisual_rules - dlg_nonvisual_rules - - - lbl_sector_id - Sector ID - - - tooltip_lbl_sector_id - lbl_sector_id - - - - nonvisual_timeseries - - title - Time Series Editor - - - btn_accept - OK - - - tooltip_btn_accept - btn_accept - - - btn_cancel - Cancel - - - tooltip_btn_cancel - btn_cancel - - - dlg_nonvisual_timeseries - Time Series Editor - - - tooltip_dlg_nonvisual_timeseries - dlg_nonvisual_timeseries - - - label - Times Type - - - tooltip_label - label - - - label_2 - Description - - - tooltip_label_2 - label_2 - - - label_3 - Exploitation ID - - - tooltip_label_3 - label_3 - - - lbl_active - Active - - - tooltip_lbl_active - lbl_active - - - lbl_addparam - Addparam (json) - - - tooltip_lbl_addparam - lbl_addparam - - - lbl_curve_id - Time Series ID - - - tooltip_lbl_curve_id - lbl_curve_id - - - lbl_descript - Time Series Type - - - tooltip_lbl_descript - lbl_descript - - - lbl_fname - File name - - - tooltip_lbl_fname - lbl_fname - - - tbl_timeseries_value - Value - - - tooltip_tbl_timeseries_value - tbl_timeseries_value - - - - organization_create - - actionT - t - - - tooltip_actionT - actionT - - - organization_create - Create - - - tooltip_organization_create - organization_create - - - - plan_psector - - active - Active - - - tooltip_active - active - - - btn_accept - Accept - - - tooltip_btn_accept - btn_accept - - - btn_arc_fusion - btn_arc_fusion - - - tooltip_btn_arc_fusion - Arc fusion with planified arcs - - - btn_cancel - Cancel - - - tooltip_btn_cancel - btn_cancel - - - btn_delete - btn_delete - - - tooltip_btn_delete - Delete - - - btn_insert - btn_insert - - - tooltip_btn_insert - Insert - - - btn_rapports - Generate rapports - - - tooltip_btn_rapports - btn_rapports - - - btn_remove - Remove - - - tooltip_btn_remove - btn_remove - - - btn_reports - Generate report - - - tooltip_btn_reports - btn_reports - - - btn_select - Select - - - tooltip_btn_select - btn_select - - - btn_select_arc - btn_select_arc - - - tooltip_btn_select_arc - Replace on service for planified arc - - - btn_set_geom - Set geometry - - - tooltip_btn_set_geom - btn_set_geom - - - btn_snapping - btn_snapping - - - tooltip_btn_snapping - Select features - - - chk_enable_all - Enable all (visualize obsolete state on features related to psector) - - - tooltip_chk_enable_all - chk_enable_all - - - gexpenses_label - General expenses - - - tooltip_gexpenses_label - gexpenses_label - - - gexpenses_label_10 - Total arcs: - - - tooltip_gexpenses_label_10 - gexpenses_label_10 - - - gexpenses_label_3 - Total nodes: - - - tooltip_gexpenses_label_3 - gexpenses_label_3 - - - gexpenses_label_4 - Total other prices: - - - tooltip_gexpenses_label_4 - gexpenses_label_4 - - - gexpenses_label_5 - Total: - - - tooltip_gexpenses_label_5 - gexpenses_label_5 - - - gexpenses_label_6 - Total: - - - tooltip_gexpenses_label_6 - gexpenses_label_6 - - - gexpenses_label_7 - Total: - - - tooltip_gexpenses_label_7 - gexpenses_label_7 - - - gexpenses_label_8 - Total: - - - tooltip_gexpenses_label_8 - gexpenses_label_8 - - - grb_map_details - Map details - - - tooltip_grb_map_details - grb_map_details - - - groupBox - Map details - - - tooltip_groupBox - groupBox - - - label - Parent id: - - - tooltip_label - label - - - label_11 - Text 1: - - - tooltip_label_11 - label_11 - - - label_12 - Text 2: - - - tooltip_label_12 - label_12 - - - label_13 - Observation - - - tooltip_label_13 - label_13 - - - label_14 - Rotation: - - - tooltip_label_14 - label_14 - - - label_15 - Scale: - - - tooltip_label_15 - label_15 - - - label_16 - Atlas id: - - - tooltip_label_16 - label_16 - - - label_2 - Name: - - - tooltip_label_2 - label_2 - - - label_3 - Priority: - - - tooltip_label_3 - label_3 - - - label_4 - Ext code: - - - tooltip_label_4 - label_4 - - - label_5 - Exploitation: - - - tooltip_label_5 - label_5 - - - label_6 - Workcat id: - - - tooltip_label_6 - label_6 - - - label_7 - Descript: - - - tooltip_label_7 - label_7 - - - label_8 - Status: - - - tooltip_label_8 - label_8 - - - lbl_atlas_id - Atlas id: - - - tooltip_lbl_atlas_id - lbl_atlas_id - - - lbl_descript - Descript: - - - tooltip_lbl_descript - lbl_descript - - - lbl_exploitation - Exploitation: - - - tooltip_lbl_exploitation - lbl_exploitation - - - lbl_ext_code - Codigo ext: - - - tooltip_lbl_ext_code - lbl_ext_code - - - lbl_general_expenses - General expenses - - - tooltip_lbl_general_expenses - lbl_general_expenses - - - lbl_name - Name: - - - tooltip_lbl_name - lbl_name - - - lbl_num_value - Num value: - - - tooltip_lbl_num_value - lbl_num_value - - - lbl_observation - Observation: - - - tooltip_lbl_observation - lbl_observation - - - lbl_other_expenses - Other expenses - - - tooltip_lbl_other_expenses - lbl_other_expenses - - - lbl_parent_id - Parent id: - - - tooltip_lbl_parent_id - lbl_parent_id - - - lbl_priority - Priority: - - - tooltip_lbl_priority - lbl_priority - - - lbl_psector_id - Psector id: - - - tooltip_lbl_psector_id - lbl_psector_id - - - lbl_rotation - Rotation: - - - tooltip_lbl_rotation - lbl_rotation - - - lbl_scale - Scale: - - - tooltip_lbl_scale - lbl_scale - - - lbl_status - Status: - - - tooltip_lbl_status - lbl_status - - - lbl_text1 - Text 1: - - - tooltip_lbl_text1 - lbl_text1 - - - lbl_text2 - Text 2: - - - tooltip_lbl_text2 - lbl_text2 - - - lbl_text3 - Text 3: - - - tooltip_lbl_text3 - lbl_text3 - - - lbl_text4 - Text 4: - - - tooltip_lbl_text4 - lbl_text4 - - - lbl_text5 - Text 5: - - - tooltip_lbl_text5 - lbl_text5 - - - lbl_text6 - Text 6: - - - tooltip_lbl_text6 - lbl_text6 - - - lbl_total_arcs - Total arcs: - - - tooltip_lbl_total_arcs - lbl_total_arcs - - - lbl_total_nodes - Total nodes: - - - tooltip_lbl_total_nodes - lbl_total_nodes - - - lbl_type - Type: - - - tooltip_lbl_type - lbl_type - - - lbl_vat - VAT: - - - tooltip_lbl_vat - lbl_vat - - - lbl_workcat_id - Workcat id: - - - tooltip_lbl_workcat_id - lbl_workcat_id - - - other_label - % - - - tooltip_other_label - other_label - - - other_label_2 - Other expenses - - - tooltip_other_label_2 - other_label_2 - - - other_label_3 - % - - - tooltip_other_label_3 - other_label_3 - - - other_label_4 - % - - - tooltip_other_label_4 - other_label_4 - - - tab_additional_info - Additional info - - - tooltip_tab_additional_info - Additional info - - - tab_arc - Arc - - - tooltip_tab_arc - Arc - - - tab_budget - Budget - - - tooltip_tab_budget - Budget - - - tab_connec - Connec - - - tooltip_tab_connec - Connec - - - tab_document - Document - - - tooltip_tab_document - Document - - - tab_general - General - - - tooltip_tab_general - General - - - tab_gully - Gully - - - tooltip_tab_gully - Gully - - - tab_node - Node - - - tooltip_tab_node - Node - - - tab_other_prices - Other prices - - - tooltip_tab_other_prices - Other prices - - - tab_relations - Relations - - - tooltip_tab_relations - Relations - - - vat_label - VAT: - - - tooltip_vat_label - vat_label - - - - price_manager - - title - Price result management - - - btn_cancel - Close - - - tooltip_btn_cancel - btn_cancel - - - btn_delete - Delete - - - tooltip_btn_delete - btn_delete - - - btn_update_result - Current result - - - tooltip_btn_update_result - btn_update_result - - - dlg_price_manager - Price result management - - - tooltip_dlg_price_manager - dlg_price_manager - - - lbl_result_id - Filter by: - - - tooltip_lbl_result_id - lbl_result_id - - - - print - - title - Fastprint - - - btn_close - Close - - - tooltip_btn_close - btn_close - - - btn_preview - Preview - - - tooltip_btn_preview - btn_preview - - - btn_print - Print - - - tooltip_btn_print - btn_print - - - dlg_print - Fastprint - - - tooltip_dlg_print - dlg_print - - - grb_map_options - Map options: - - - tooltip_grb_map_options - grb_map_options - - - grb_option_values - Optional values: - - - tooltip_grb_option_values - grb_option_values - - - - priority - - title - Priority Calculation - - - btn_accept - Calculate - - - tooltip_btn_accept - btn_accept - - - btn_again - Next - - - tooltip_btn_again - btn_again - - - btn_close - Cancel - - - tooltip_btn_close - btn_close - - - btn_save2file - Save results to an Excel file... - - - tooltip_btn_save2file - btn_save2file - - - btn_snapping - Select features on canvas - - - tooltip_btn_snapping - Select features on canvas - - - dlg_priority - Priority Calculation - - - tooltip_dlg_priority - dlg_priority - - - grb_engine_1 - grb_engine_1 - - - tooltip_grb_engine_1 - grb_engine_1 - - - grb_engine_2 - grb_engine_2 - - - tooltip_grb_engine_2 - grb_engine_2 - - - grb_global - Calculation parameters - - - tooltip_grb_global - grb_global - - - grb_selection - Selection of features - - - tooltip_grb_selection - grb_selection - - - lbl_budget - Yearly budget: - - - tooltip_lbl_budget - lbl_budget - - - lbl_descript - Description: - - - tooltip_lbl_descript - lbl_descript - - - lbl_dnom - Diameter: - - - tooltip_lbl_dnom - lbl_dnom - - - lbl_expl_selection - Exploitation: - - - tooltip_lbl_expl_selection - lbl_expl_selection - - - lbl_material - Material: - - - tooltip_lbl_material - lbl_material - - - lbl_presszone - Presszone: - - - tooltip_lbl_presszone - lbl_presszone - - - lbl_result_id - Result name: - - - tooltip_lbl_result_id - lbl_result_id - - - lbl_status - Status: - - - tooltip_lbl_status - lbl_status - - - lbl_year - Horizon year: - - - tooltip_lbl_year - lbl_year - - - tab_calc - Calculation - - - tooltip_tab_calc - tab_calc - - - tab_catalog - Catalog - - - tooltip_tab_catalog - tab_catalog - - - tab_engine - Engine - - - tooltip_tab_engine - tab_engine - - - tab_infolog - Info Log - - - tooltip_tab_infolog - tab_infolog - - - tab_material - Material - - - tooltip_tab_material - tab_material - - - - priority_manager - - title - Results Manager - - - btn_close - Close - - - tooltip_btn_close - btn_close - - - btn_corporate - Set Corporate - - - tooltip_btn_corporate - btn_corporate - - - btn_delete - Delete - - - tooltip_btn_delete - btn_delete - - - btn_duplicate - Duplicate - - - tooltip_btn_duplicate - btn_duplicate - - - btn_edit - Edit - - - tooltip_btn_edit - btn_edit - - - btn_status - Change status - - - tooltip_btn_status - btn_status - - - dlg_priority_manager - Results Manager - - - tooltip_dlg_priority_manager - dlg_priority_manager - - - lbl_expl - Exploitation: - - - tooltip_lbl_expl - lbl_expl - - - lbl_filter - Filter by: Result name - - - tooltip_lbl_filter - lbl_filter - - - lbl_info - Info: - - - tooltip_lbl_info - lbl_info - - - lbl_status - Status: - - - tooltip_lbl_status - lbl_status - - - lbl_type - Type: - - - tooltip_lbl_type - lbl_type - - - - profile - - title - Draw Profile - - - actionAddPoint - Add additional point - - - tooltip_actionAddPoint - actionAddPoint - - - actionProfile - Set nodes - - - tooltip_actionProfile - actionProfile - - - btn_add_additional_point - Add additional point - - - tooltip_btn_add_additional_point - btn_add_additional_point - - - btn_add_end_point - Add end point - - - tooltip_btn_add_end_point - btn_add_end_point - - - btn_add_start_point - Add start point - - - tooltip_btn_add_start_point - btn_add_start_point - - - btn_clear_profile - Clear profile - - - tooltip_btn_clear_profile - btn_clear_profile - - - btn_close - Close - - - tooltip_btn_close - btn_close - - - btn_delete_additional_point - btn_delete_additional_point - - - tooltip_btn_delete_additional_point - btn_delete_additional_point - - - btn_draw_profile - Draw profile - - - tooltip_btn_draw_profile - btn_draw_profile - - - btn_export_pdf - Open composer - - - tooltip_btn_export_pdf - btn_export_pdf - - - btn_load_profile - Load profile - - - tooltip_btn_load_profile - btn_load_profile - - - btn_save_profile - Save profile - - - tooltip_btn_save_profile - btn_save_profile - - - btn_update_path - ... - - - tooltip_btn_update_path - btn_update_path - - - date - dd/MM/yyyy - - - tooltip_date - date - - - dlg_profile - Draw Profile - - - tooltip_dlg_profile - dlg_profile - - - grb_composer - Parameters - - - tooltip_grb_composer - grb_composer - - - grb_profile - Profile - - - tooltip_grb_profile - grb_profile - - - lbl_additional_point - Additional point: - - - tooltip_lbl_additional_point - lbl_additional_point - - - lbl_date - Date: - - - tooltip_lbl_date - lbl_date - - - lbl_end_point - End point: - - - tooltip_lbl_end_point - lbl_end_point - - - lbl_min_distance - Vnode Min Dist: - - - tooltip_lbl_min_distance - lbl_min_distance - - - lbl_path - Path: - - - tooltip_lbl_path - lbl_path - - - lbl_profile_id - Profile id: - - - tooltip_lbl_profile_id - lbl_profile_id - - - lbl_rotation - Rotation: - - - tooltip_lbl_rotation - lbl_rotation - - - lbl_sh - Horizontal scale: - - - tooltip_lbl_sh - lbl_sh - - - lbl_start_point - Start point: - - - tooltip_lbl_start_point - lbl_start_point - - - lbl_sv - Vertical scale: - - - tooltip_lbl_sv - lbl_sv - - - lbl_template - Template: - - - tooltip_lbl_template - lbl_template - - - lbl_title - Title: - - - tooltip_lbl_title - lbl_title - - - toolBar - toolBar - - - tooltip_toolBar - toolBar - - - txt_profile_id - Optional profile ID - - - tooltip_txt_profile_id - txt_profile_id - - - - profile_list - - title - Load profiles - - - btn_delete_profile - Delete - - - tooltip_btn_delete_profile - btn_delete_profile - - - btn_open - Open - - - tooltip_btn_open - btn_open - - - dlg_profile_list - Load profiles - - - tooltip_dlg_profile_list - dlg_profile_list - - - groupBox_2 - List of profiles - - - tooltip_groupBox_2 - groupBox_2 - - - - project_check - - title - Check project - - - btn_accept - Accept - - - tooltip_btn_accept - Accept - - - dlg_project_check - Check project - - - tooltip_dlg_project_check - dlg_project_check - - - tab_databaselog - Database log - - - tooltip_tab_databaselog - tab_databaselog - - - tab_qgis_projlog - Qgis project log - - - tooltip_tab_qgis_projlog - tab_qgis_projlog - - - - psector - - title - Plan psector - - - btn_remove - Remove - - - tooltip_btn_remove - btn_remove - - - btn_reports - Generate report - - - tooltip_btn_reports - btn_reports - - - btn_select - Add - - - tooltip_btn_select - btn_select - - - btn_set_geom - Set geometry - - - tooltip_btn_set_geom - btn_set_geom - - - dlg_psector - Plan psector - - - tooltip_dlg_psector - dlg_psector - - - gexpenses_label - General expenses - - - tooltip_gexpenses_label - gexpenses_label - - - gexpenses_label_10 - Total arcs: - - - tooltip_gexpenses_label_10 - gexpenses_label_10 - - - gexpenses_label_3 - Total nodes: - - - tooltip_gexpenses_label_3 - gexpenses_label_3 - - - gexpenses_label_4 - Total other prices: - - - tooltip_gexpenses_label_4 - gexpenses_label_4 - - - gexpenses_label_5 - Total: - - - tooltip_gexpenses_label_5 - gexpenses_label_5 - - - gexpenses_label_6 - Total: - - - tooltip_gexpenses_label_6 - gexpenses_label_6 - - - gexpenses_label_7 - Total: - - - tooltip_gexpenses_label_7 - gexpenses_label_7 - - - gexpenses_label_8 - Total: - - - tooltip_gexpenses_label_8 - gexpenses_label_8 - - - lbl_num_value - Num value: - - - tooltip_lbl_num_value - lbl_num_value - - - lbl_text3 - Text 3: - - - tooltip_lbl_text3 - lbl_text3 - - - lbl_text4 - Text 4: - - - tooltip_lbl_text4 - lbl_text4 - - - lbl_text5 - Text 5: - - - tooltip_lbl_text5 - lbl_text5 - - - lbl_text6 - Text 6: - - - tooltip_lbl_text6 - lbl_text6 - - - lbl_total - Total : - - - tooltip_lbl_total - lbl_total - - - lbl_total_count - 0 - - - tooltip_lbl_total_count - lbl_total_count - - - other_label - % - - - tooltip_other_label - other_label - - - other_label_2 - Other expenses - - - tooltip_other_label_2 - other_label_2 - - - other_label_3 - % - - - tooltip_other_label_3 - other_label_3 - - - other_label_4 - % - - - tooltip_other_label_4 - other_label_4 - - - tab_additional_info - Additional info - - - tooltip_tab_additional_info - tab_additional_info - - - tab_arc - Arc - - - tooltip_tab_arc - tab_arc - - - tab_budget - Budget - - - tooltip_tab_budget - tab_budget - - - tab_connec - Connec - - - tooltip_tab_connec - tab_connec - - - tab_document - Document - - - tooltip_tab_document - tab_document - - - tab_general - General - - - tooltip_tab_general - tab_general - - - tab_gully - Gully - - - tooltip_tab_gully - tab_gully - - - tab_node - Node - - - tooltip_tab_node - tab_node - - - tab_other_prices - Other prices - - - tooltip_tab_other_prices - tab_other_prices - - - tab_relations - Relations - - - tooltip_tab_relations - tab_relations - - - vat_label - VAT: - - - tooltip_vat_label - vat_label - - - - psector_duplicate - - title - Duplicate psector - - - btn_accept - Accept - - - tooltip_btn_accept - Accept - - - btn_cancel - Cancel - - - tooltip_btn_cancel - btn_cancel - - - dlg_psector_duplicate - Duplicate psector - - - tooltip_dlg_psector_duplicate - dlg_psector_duplicate - - - lbl_duplicate_psector - Duplicate psector: - - - tooltip_lbl_duplicate_psector - lbl_duplicate_psector - - - lbl_new_psector - New psector name: - - - tooltip_lbl_new_psector - lbl_new_psector - - - tab_duplicate_psector - Duplicate psector - - - tooltip_tab_duplicate_psector - tab_duplicate_psector - - - tab_info_log - Info log - - - tooltip_tab_info_log - tab_info_log - - - - psector_manager - - title - Psector management - - - btn_cancel - Close - - - tooltip_btn_cancel - btn_cancel - - - btn_create - Create - - - tooltip_btn_create - Create - - - btn_delete - Delete - - - tooltip_btn_delete - btn_delete - - - btn_duplicate - Duplicate - - - tooltip_btn_duplicate - btn_duplicate - - - btn_merge - Merge - - - tooltip_btn_merge - To merge various psectors into only one, you have to previously select them using Ctrl and then click this button - - - btn_restore - Restore - - - tooltip_btn_restore - btn_restore - - - btn_show - Show - - - tooltip_btn_show - btn_show - - - btn_toggle_active - Toggle active - - - tooltip_btn_toggle_active - btn_toggle_active - - - btn_update_psector - Toggle current - - - tooltip_btn_update_psector - btn_update_psector - - - chk_active - Show inactive - - - tooltip_chk_active - Show inactive - - - chk_archived - Show archived - - - tooltip_chk_archived - chk_archived - - - chk_filter_canvas - Filter from Canvas - - - tooltip_chk_filter_canvas - Only show psectors visible in canvas - - - dlg_psector_manager - Psector management - - - tooltip_dlg_psector_manager - dlg_psector_manager - - - label - Info: - - - tooltip_label - label - - - lbl_psector_name - Filter by: Psector name - - - tooltip_lbl_psector_name - lbl_psector_name - - - - psector_rapport - - title - Psector rapport - - - btn_cancel - Cancel - - - tooltip_btn_cancel - Cancel - - - btn_ok - Create - - - tooltip_btn_ok - btn_ok - - - btn_path - ... - - - tooltip_btn_path - btn_path - - - chk_composer - Composer pdf file - - - tooltip_chk_composer - chk_composer - - - dlg_psector_rapport - Psector rapport - - - tooltip_dlg_psector_rapport - dlg_psector_rapport - - - grb_rapport - Rapport - - - tooltip_grb_rapport - grb_rapport - - - lbl_composer_disabled - Composer disabled - - - tooltip_lbl_composer_disabled - lbl_composer_disabled - - - lbl_detail_csv - Prices detail csv file: - - - tooltip_lbl_detail_csv - lbl_detail_csv - - - lbl_prices_list - Prices csv file: - - - tooltip_lbl_prices_list - lbl_prices_list - - - lbl_template - Template - - - tooltip_lbl_template - lbl_template - - - - psector_repair - - title - Dialog - - - btn_close - Close - - - tooltip_btn_close - btn_close - - - btn_repair - Repair - - - tooltip_btn_repair - btn_repair - - - dlg_psector_repair - Dialog - - - tooltip_dlg_psector_repair - dlg_psector_repair - - - - quantized_demands - - title - Quantized Demands - - - btn_cancel - Cancel - - - tooltip_btn_cancel - btn_cancel - - - btn_ok - OK - - - tooltip_btn_ok - btn_ok - - - dlg_quantized_demands - Quantized Demands - - - tooltip_dlg_quantized_demands - dlg_quantized_demands - - - lbl_config_file - Configuration file: - - - tooltip_lbl_config_file - lbl_config_file - - - lbl_filename - File name: - - - tooltip_lbl_filename - lbl_filename - - - lbl_input_file - Input INP file: - - - tooltip_lbl_input_file - lbl_input_file - - - lbl_output_folder - Output folder: - - - tooltip_lbl_output_folder - lbl_output_folder - - - - recursive_epa - - title - Epa Multi Calls - - - btn_accept - OK - - - tooltip_btn_accept - btn_accept - - - btn_close - Close - - - tooltip_btn_close - btn_close - - - dlg_recursive_epa - Epa Multi Calls - - - tooltip_dlg_recursive_epa - dlg_recursive_epa - - - lbl_config_file - Configuration file: - - - tooltip_lbl_config_file - lbl_config_file - - - lbl_filename - File name: - - - tooltip_lbl_filename - lbl_filename - - - lbl_output_folder - Output folder: - - - tooltip_lbl_output_folder - lbl_output_folder - - - - replace_arc - - title - Plan psector - - - btn_accept - Accept - - - tooltip_btn_accept - btn_accept - - - btn_cancel - Cancel - - - tooltip_btn_cancel - btn_cancel - - - dlg_replace_arc - Plan psector - - - tooltip_dlg_replace_arc - dlg_replace_arc - - - label - Current arc catalog: - - - tooltip_label - label - - - lbl_arccat - New arc catalog: - - - tooltip_lbl_arccat - lbl_arccat - - - tab_general - General - - - tooltip_tab_general - tab_general - - - tab_loginfo - Info log - - - tooltip_tab_loginfo - tab_loginfo - - - - replace_in_file - - title - Replace text in file - - - btn_accept - Accept - - - tooltip_btn_accept - btn_accept - - - btn_cancel - Cancelar - - - tooltip_btn_cancel - btn_cancel - - - dlg_replace_in_file - Replace text in file - - - tooltip_dlg_replace_in_file - dlg_replace_in_file - - - lbl_subtitle - There are objects with more than 16 characters in their name - - - tooltip_lbl_subtitle - lbl_subtitle - - - lbl_title - Replace these names with new ones: - - - tooltip_lbl_title - lbl_title - - - - reports - - btn_close - Close - - - tooltip_btn_close - btn_close - - - btn_export - Export - - - tooltip_btn_export - btn_export - - - grb_filters - Filters - - - tooltip_grb_filters - grb_filters - - - grb_info - Info - - - tooltip_grb_info - grb_info - - - label - Query: - - - tooltip_label - label - - - label_2 - Description: - - - tooltip_label_2 - label_2 - - - lbl_export_path - Path: - - - tooltip_lbl_export_path - lbl_export_path - - - - resources_management - - title - Resource Management - - - actionT - t - - - tooltip_actionT - actionT - - - btn_assign_team - Assign Team - - - tooltip_btn_assign_team - btn_assign_team - - - btn_close - Close - - - tooltip_btn_close - Close - - - btn_organi_create - Create - - - tooltip_btn_organi_create - Create - - - btn_organi_delete - Delete - - - tooltip_btn_organi_delete - Delete - - - btn_organi_update - Update - - - tooltip_btn_organi_update - Modify - - - btn_remove_team - Remove Team - - - tooltip_btn_remove_team - btn_remove_team - - - btn_team_create - Create - - - tooltip_btn_team_create - Create - - - btn_team_delete - Delete - - - tooltip_btn_team_delete - Delete - - - btn_team_selector - Selector - - - tooltip_btn_team_selector - Selector - - - btn_team_toggle_active - Toggle active - - - tooltip_btn_team_toggle_active - btn_team_toggle_active - - - btn_team_update - Update - - - tooltip_btn_team_update - Modify - - - btn_user_create - Create - - - tooltip_btn_user_create - btn_user_create - - - btn_user_delete - Delete - - - tooltip_btn_user_delete - btn_user_delete - - - btn_user_toggle_active - Toggle active - - - tooltip_btn_user_toggle_active - btn_user_toggle_active - - - btn_user_update - Modify - - - tooltip_btn_user_update - btn_user_update - - - cmb_team - Select team - - - tooltip_cmb_team - cmb_team - - - dlg_resources_management - Resource Management - - - tooltip_dlg_resources_management - dlg_resources_management - - - groupBox - Management: - - - tooltip_groupBox - Management: - - - groupBox_2 - Management: - - - tooltip_groupBox_2 - Management: - - - label - Filter by name: - - - tooltip_label - label - - - label_2 - Filter by team name: - - - tooltip_label_2 - label_2 - - - label_3 - Filter by team: - - - tooltip_label_3 - label_3 - - - organizations - Organizations - - - tooltip_organizations - Organizations - - - resource_management - Resource Management - - - tooltip_resource_management - resource_management - - - tab_organizations - Organizations - - - tooltip_tab_organizations - tab_organizations - - - tab_teams - Teams - - - tooltip_tab_teams - tab_teams - - - tab_users - Users - - - tooltip_tab_users - tab_users - - - team - Teams - - - tooltip_team - Teams - - - - result_selector - - title - Result Selector - - - btn_accept - Accept - - - tooltip_btn_accept - btn_accept - - - btn_cancel - Cancel - - - tooltip_btn_cancel - btn_cancel - - - dlg_result_selector - Result Selector - - - tooltip_dlg_result_selector - dlg_result_selector - - - lbl_descript - Description: - - - tooltip_lbl_descript - lbl_descript - - - lbl_descript_compare - Description: - - - tooltip_lbl_descript_compare - lbl_descript_compare - - - lbl_result_compare - Result to compare: - - - tooltip_lbl_result_compare - lbl_result_compare - - - lbl_result_main - Result to show: - - - tooltip_lbl_result_main - lbl_result_main - - - tab_result - Result - - - tooltip_tab_result - tab_result - - - - search - - title - Search - - - Check all - Check all - - - tooltip_Check all - Check all - - - dlg_search - Search - - - tooltip_dlg_search - dlg_search - - - lbl_msg - No results found - - - tooltip_lbl_msg - lbl_msg - - - - search_workcat - - title - Workcat search - - - btn_close - Close - - - tooltip_btn_close - btn_close - - - btn_export_to_csv - Export to csv - - - tooltip_btn_export_to_csv - btn_export_to_csv - - - btn_path - ... - - - tooltip_btn_path - btn_path - - - btn_state0 - Activate - - - tooltip_btn_state0 - btn_state0 - - - btn_state1 - Activate - - - tooltip_btn_state1 - btn_state1 - - - dlg_search_workcat - Workcat search - - - tooltip_dlg_search_workcat - dlg_search_workcat - - - lbl_destination_path - Destination path: - - - tooltip_lbl_destination_path - lbl_destination_path - - - lbl_end - Filter by: code - - - tooltip_lbl_end - lbl_end - - - lbl_feat_end - Features removed with the selected workcat - - - tooltip_lbl_feat_end - lbl_feat_end - - - lbl_feat_ini - Features installed with the selected workcat - - - tooltip_lbl_feat_ini - lbl_feat_ini - - - lbl_init - Filter by: code - - - tooltip_lbl_init - lbl_init - - - lbl_total1 - &lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; font-weight:600;&quot;&gt;Total numbers:&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt; - - - tooltip_lbl_total1 - lbl_total1 - - - lbl_total2 - &lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; font-weight:600;&quot;&gt;Total numbers:&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt; - - - tooltip_lbl_total2 - lbl_total2 - - - tab_doc - Documents - - - tooltip_tab_doc - tab_doc - - - tab_ended - Removed - - - tooltip_tab_ended - tab_ended - - - tab_init - Installed - - - tooltip_tab_init - tab_init - - - - selector - - title - Selector - - - btn_close - Close - - - tooltip_btn_close - Close - - - chk_all_ - Check all - - - tooltip_chk_all_ - Shift+Click to uncheck all - - - dlg_selector - Selector - - - tooltip_dlg_selector - dlg_selector - - - lbl_filter - Filter: - - - tooltip_lbl_filter - lbl_filter - - - - selector_date - - title - Date selector - - - btn_accept - OK - - - tooltip_btn_accept - btn_accept - - - btn_close - Close - - - tooltip_btn_close - Close - - - date_from - dd/MM/yyyy - - - tooltip_date_from - date_from - - - date_to - dd/MM/yyyy - - - tooltip_date_to - date_to - - - dlg_selector_date - Date selector - - - tooltip_dlg_selector_date - dlg_selector_date - - - lbl_date_from - Date from: - - - tooltip_lbl_date_from - lbl_date_from - - - lbl_date_to - Date to: - - - tooltip_lbl_date_to - lbl_date_to - - - - show_info - - title - Dialog - - - btn_accept - Accept - - - tooltip_btn_accept - btn_accept - - - btn_close - Close - - - tooltip_btn_close - btn_close - - - dlg_show_info - Dialog - - - tooltip_dlg_show_info - dlg_show_info - - - - snapshot_view - - title - Audit - - - Audit - Audit - - - tooltip_Audit - Audit - - - Calculate from exploitation - Calculate from exploitation - - - tooltip_Calculate from exploitation - Calculate from exploitation - - - Calculate from municipality - Calculate from municipality - - - tooltip_Calculate from municipality - Calculate from municipality - - - dlg_snapshot_view - Audit - - - tooltip_dlg_snapshot_view - Audit - - - Draw on map canvas - Draw on map canvas - - - tooltip_Draw on map canvas - Draw on map canvas - - - groupBox - Features to recover - - - tooltip_groupBox - Features to recover - - - groupBox_2 - Temporal and spatial selection - - - tooltip_groupBox_2 - Temporal and spatial selection - - - Use current map canvas extent - Use current map canvas extent - - - tooltip_Use current map canvas extent - Use current map canvas extent - - - - static_calibration - - title - Static Calibration - - - btn_cancel - Cancel - - - tooltip_btn_cancel - btn_cancel - - - btn_ok - OK - - - tooltip_btn_ok - btn_ok - - - dlg_static_calibration - Static Calibration - - - tooltip_dlg_static_calibration - dlg_static_calibration - - - lbl_config_file - Configuration file: - - - tooltip_lbl_config_file - lbl_config_file - - - lbl_filename - File name: - - - tooltip_lbl_filename - lbl_filename - - - lbl_inp_input_file - Input INP file: - - - tooltip_lbl_inp_input_file - lbl_inp_input_file - - - lbl_output_folder - Output files name: - - - tooltip_lbl_output_folder - lbl_output_folder - - - - status_selector - - title - Status Selector - - - btn_accept - Accept - - - tooltip_btn_accept - btn_accept - - - btn_cancel - Cancel - - - tooltip_btn_cancel - btn_cancel - - - dlg_status_selector - Status Selector - - - tooltip_dlg_status_selector - dlg_status_selector - - - lbl_new_status - New status: - - - tooltip_lbl_new_status - lbl_new_status - - - lbl_result - result_id: result_name - - - tooltip_lbl_result - lbl_result - - - lbl_result_main - You are changing the status of the following result: - - - tooltip_lbl_result_main - lbl_result_main - - - - style - - title - Add category - - - btn_add - Accept - - - tooltip_btn_add - btn_add - - - btn_cancel - Cancel - - - tooltip_btn_cancel - btn_cancel - - - dlg_style - Add category - - - tooltip_dlg_style - dlg_style - - - lbl_cat_id - Category ID: - - - tooltip_lbl_cat_id - lbl_cat_id - - - lbl_cat_name - Category name: - - - tooltip_lbl_cat_name - lbl_cat_name - - - lbl_descript - Description: - - - tooltip_lbl_descript - lbl_descript - - - lbl_role - Role: - - - tooltip_lbl_role - lbl_role - - - tab_del_feature - Data - - - tooltip_tab_del_feature - tab_del_feature - - - - style_manager - - title - Style management - - - btn_addGroup - btn_addGroup - - - tooltip_btn_addGroup - Add new category - - - btn_add_style - Add style - - - tooltip_btn_add_style - Add style - - - btn_addStyle - Add style - - - tooltip_btn_addStyle - Adds a layer to the selected category - - - btn_cancel - Close - - - tooltip_btn_cancel - Close - - - btn_close - Close - - - tooltip_btn_close - Close - - - btn_deleteGroup - btn_deleteGroup - - - tooltip_btn_deleteGroup - Delete selected category - - - btn_delete_style - Delete style - - - tooltip_btn_delete_style - btn_delete_style - - - btn_deleteStyle - Delete style - - - tooltip_btn_deleteStyle - Removes a style from the category - - - btn_refresh_all - Refresh all - - - tooltip_btn_refresh_all - Refresh all - - - btn_refreshAll - Refresh all - - - tooltip_btn_refreshAll - Reloads the styles loaded into the project - - - btn_update_group - Update - - - tooltip_btn_update_group - Update selected category - - - btn_update_style - Update style - - - tooltip_btn_update_style - Update style - - - btn_updateStyle - Update style - - - tooltip_btn_updateStyle - Updates the selected layer style with the style in the corresponding project layer - - - Delete style - Delete style - - - tooltip_Delete style - Delete style - - - dlg_style_manager - Style management - - - tooltip_dlg_style_manager - dlg_style_manager - - - lbl_filter_category - Filter by: Category - - - tooltip_lbl_filter_category - lbl_filter_category - - - lbl_filter_name - Filter by: layername - - - tooltip_lbl_filter_name - lbl_filter_name - - - stylegroup - stylegroup - - - tooltip_stylegroup - All your style categories - - - style_name - style_name - - - tooltip_style_name - Introduce the layer name to filter - - - - style_update_category - - title - Rename category - - - btn_accept - Accept - - - tooltip_btn_accept - btn_accept - - - btn_cancel - Cancel - - - tooltip_btn_cancel - btn_cancel - - - dlg_style_update_category - Rename category - - - tooltip_dlg_style_update_category - dlg_style_update_category - - - lbl_rename_copy - Please, select a new category name: - - - tooltip_lbl_rename_copy - lbl_rename_copy - - - - team_create - - title - Create team - - - actionT - t - - - tooltip_actionT - actionT - - - btn_accept - Accept - - - tooltip_btn_accept - Accept - - - btn_cancel - Cancel - - - tooltip_btn_cancel - Cancel - - - dlg_team_create - Create team - - - tooltip_dlg_team_create - dlg_team_create - - - grb_team - Team: - - - tooltip_grb_team - grb_team - - - lbl_active - Active: - - - tooltip_lbl_active - Active: - - - lbl_descript - Description: - - - tooltip_lbl_descript - Description: - - - lbl_name - Team name: - - - tooltip_lbl_name - Team name: - - - team_create - Create team - - - tooltip_team_create - team_create - - - TeamTab - Team - - - tooltip_TeamTab - TeamTab - - - - team_management - - title - Team management - - - actionT - t - - - tooltip_actionT - actionT - - - btn_close - Close - - - tooltip_btn_close - btn_close - - - btn_user_select - &gt;&gt; - - - tooltip_btn_user_select - btn_user_select - - - btn_user_unselect - &lt;&lt; - - - tooltip_btn_user_unselect - btn_user_unselect - - - btn_vehicle_select - &gt;&gt; - - - tooltip_btn_vehicle_select - btn_vehicle_select - - - btn_vehicle_unselect - &lt;&lt; - - - tooltip_btn_vehicle_unselect - btn_vehicle_unselect - - - btn_visitclass_select - &gt;&gt; - - - tooltip_btn_visitclass_select - btn_visitclass_select - - - btn_visitclass_unselect - &lt;&lt; - - - tooltip_btn_visitclass_unselect - btn_visitclass_unselect - - - dlg_team_management - Team management - - - tooltip_dlg_team_management - dlg_team_management - - - tab_user - Users - - - tooltip_tab_user - Users - - - tab_vehicles - Vehicles - - - tooltip_tab_vehicles - Vehicles - - - tab_visit_class - Visit class - - - tooltip_tab_visit_class - Visit class - - - team_management - Team management - - - tooltip_team_management - team_management - - - - toolbox - - title - Dialog - - - btn_cancel - Cancel - - - tooltip_btn_cancel - btn_cancel - - - btn_close - Close - - - tooltip_btn_close - btn_close - - - btn_run - Run - - - tooltip_btn_run - btn_run - - - dlg_toolbox - Dialog - - - tooltip_dlg_toolbox - dlg_toolbox - - - grb_input_layer - Input layer: - - - tooltip_grb_input_layer - grb_input_layer - - - grb_parameters - Option parameters: - - - tooltip_grb_parameters - grb_parameters - - - grb_selection_type - Selection type: - - - tooltip_grb_selection_type - grb_selection_type - - - groupBox - Info: - - - tooltip_groupBox - groupBox - - - rbt_layer - All features - - - tooltip_rbt_layer - rbt_layer - - - rbt_previous - Selected features only - - - tooltip_rbt_previous - rbt_previous - - - tab_config - Config - - - tooltip_tab_config - tab_config - - - tab_loginfo - Info log - - - tooltip_tab_loginfo - tab_loginfo - - - trv_processes - Processes - - - tooltip_trv_processes - trv_processes - - - trv_reports - Raports - - - tooltip_trv_reports - trv_reports - - - - toolbox_reports - - title - Reports - - - btn_close - Close - - - tooltip_btn_close - btn_close - - - btn_export - Export - - - tooltip_btn_export - btn_export - - - btn_export_path - ... - - - tooltip_btn_export_path - btn_export_path - - - dlg_toolbox_reports - Reports - - - tooltip_dlg_toolbox_reports - dlg_toolbox_reports - - - grb_filters - Filters - - - tooltip_grb_filters - grb_filters - - - grb_info - Info - - - tooltip_grb_info - grb_info - - - label - Query: - - - tooltip_label - label - - - label_2 - Description: - - - tooltip_label_2 - label_2 - - - lbl_export_path - Path: - - - tooltip_lbl_export_path - lbl_export_path - - - - toolbox_tool - - btn_cancel - Cancel - - - tooltip_btn_cancel - btn_cancel - - - btn_close - Close - - - tooltip_btn_close - btn_close - - - btn_run - Run - - - tooltip_btn_run - btn_run - - - grb_input_layer - Input layer: - - - tooltip_grb_input_layer - grb_input_layer - - - grb_parameters - Option parameters: - - - tooltip_grb_parameters - grb_parameters - - - grb_selection_type - Selection type: - - - tooltip_grb_selection_type - grb_selection_type - - - groupBox - Info: - - - tooltip_groupBox - groupBox - - - progressBar - %p% - - - tooltip_progressBar - progressBar - - - rbt_layer - All features - - - tooltip_rbt_layer - rbt_layer - - - rbt_previous - Selected features only - - - tooltip_rbt_previous - rbt_previous - - - tab_config - Config - - - tooltip_tab_config - tab_config - - - tab_loginfo - Info Log - - - tooltip_tab_loginfo - tab_loginfo - - - - update_style_group - - btn_accept - Accept - - - tooltip_btn_accept - Accept - - - btn_cancel - Cancel - - - tooltip_btn_cancel - Cancel - - - lbl_rename_copy - Please, select a new category name: - - - tooltip_lbl_rename_copy - Please, select a new category name: - - - - user_create - - title - Create - - - actionT - t - - - tooltip_actionT - actionT - - - dlg_user_create - Create - - - tooltip_dlg_user_create - dlg_user_create - - - user_create - Create user - - - tooltip_user_create - user_create - - - - valve_operation_check - - title - Valve Operation Check - - - btn_cancel - Cancel - - - tooltip_btn_cancel - btn_cancel - - - btn_ok - OK - - - tooltip_btn_ok - btn_ok - - - dlg_valve_operation_check - Valve Operation Check - - - tooltip_dlg_valve_operation_check - dlg_valve_operation_check - - - lbl_config_file - Configuration file: - - - tooltip_lbl_config_file - lbl_config_file - - - lbl_filename - File name: - - - tooltip_lbl_filename - lbl_filename - - - lbl_input_file - Input INP file: - - - tooltip_lbl_input_file - lbl_input_file - - - lbl_output_folder - Output folder: - - - tooltip_lbl_output_folder - lbl_output_folder - - - lbl_scenarios - Use scenarios from: - - - tooltip_lbl_scenarios - lbl_scenarios - - - rdb_scenarios_config - Configuration file: - - - tooltip_rdb_scenarios_config - rdb_scenarios_config - - - rdb_scenarios_database - Database - - - tooltip_rdb_scenarios_database - rdb_scenarios_database - - - - visit - - title - Visit - - - btn_accept - Accept - - - tooltip_btn_accept - Accept - - - btn_add_geom - Add geom - - - tooltip_btn_add_geom - btn_add_geom - - - btn_cancel - Cancel - - - tooltip_btn_cancel - btn_cancel - - - btn_doc_delete - btn_doc_delete - - - tooltip_btn_doc_delete - Delete document - - - btn_doc_insert - btn_doc_insert - - - tooltip_btn_doc_insert - Insert document - - - btn_doc_new - btn_doc_new - - - tooltip_btn_doc_new - Create new document - - - btn_event_delete - DELETE EVENT - - - tooltip_btn_event_delete - btn_event_delete - - - btn_event_insert - INSERT EVENT - - - tooltip_btn_event_insert - btn_event_insert - - - btn_event_update - UPDATE EVENT - - - tooltip_btn_event_update - btn_event_update - - - btn_feature_delete - btn_feature_delete - - - tooltip_btn_feature_delete - btn_feature_delete - - - btn_feature_insert - btn_feature_insert - - - tooltip_btn_feature_insert - btn_feature_insert - - - btn_feature_snapping - btn_feature_snapping - - - tooltip_btn_feature_snapping - btn_feature_snapping - - - btn_open_doc - btn_open_doc - - - tooltip_btn_open_doc - Open document - - - dlg_visit - Visit - - - tooltip_dlg_visit - dlg_visit - - - enddate - dd/MM/yyyy - - - tooltip_enddate - enddate - - - label - Feature type: - - - tooltip_label - label - - - lbl_code - Code: - - - tooltip_lbl_code - lbl_code - - - lbl_descript - Description: - - - tooltip_lbl_descript - lbl_descript - - - lbl_end_date - End date:* - - - tooltip_lbl_end_date - lbl_end_date - - - lbl_expl - Exploitation:* - - - tooltip_lbl_expl - lbl_expl - - - lbl_feature_type - Feature type: - - - tooltip_lbl_feature_type - lbl_feature_type - - - lbl_id - Id: - - - tooltip_lbl_id - lbl_id - - - lbl_info - From toolbar only STANDARD EVENTS are enabled. - - - tooltip_lbl_info - lbl_info - - - lbl_start_date - Start date:* - - - tooltip_lbl_start_date - lbl_start_date - - - lbl_status - Status: - - - tooltip_lbl_status - lbl_status - - - lbl_user_name - User name: - - - tooltip_lbl_user_name - lbl_user_name - - - lbl_visitcat_id - Visitcat id:* - - - tooltip_lbl_visitcat_id - lbl_visitcat_id - - - startdate - dd/MM/yyyy - - - tooltip_startdate - startdate - - - tab_arc - Arc - - - tooltip_tab_arc - tab_arc - - - tab_connec - Connec - - - tooltip_tab_connec - tab_connec - - - tab_document - Document - - - tooltip_tab_document - tab_document - - - tab_event - Event - - - tooltip_tab_event - tab_event - - - tab_gully - Gully - - - tooltip_tab_gully - tab_gully - - - tab_link - Link - - - tooltip_tab_link - tab_link - - - tab_node - Node - - - tooltip_tab_node - tab_node - - - tab_relations - Relations - - - tooltip_tab_relations - Relations - - - tab_visit - Visit - - - tooltip_tab_visit - tab_visit - - - - visit_document - - title - Load documents - - - btn_open - Open - - - tooltip_btn_open - btn_open - - - dlg_visit_document - Load documents - - - tooltip_dlg_visit_document - dlg_visit_document - - - groupBox_2 - List of documents - - - tooltip_groupBox_2 - groupBox_2 - - - lbl_visit_id - Visit id - - - tooltip_lbl_visit_id - Visit ID - - - - visit_event - - title - Standard event - - - btn_accept - Accept - - - tooltip_btn_accept - btn_accept - - - btn_add_file - Add file - - - tooltip_btn_add_file - btn_add_file - - - btn_cancel - Cancel - - - tooltip_btn_cancel - btn_cancel - - - btn_delete_file - Delete file - - - tooltip_btn_delete_file - btn_delete_file - - - dlg_visit_event - Standard event - - - tooltip_dlg_visit_event - dlg_visit_event - - - label - Event_code: - - - tooltip_label - label - - - lbl_files - Files: - - - tooltip_lbl_files - lbl_files - - - lbl_parameter_id - Parameter id: - - - tooltip_lbl_parameter_id - lbl_parameter_id - - - lbl_position_id - Position id: - - - tooltip_lbl_position_id - lbl_position_id - - - lbl_position_value - Position value: - - - tooltip_lbl_position_value - lbl_position_value - - - lbl_text - Text: - - - tooltip_lbl_text - lbl_text - - - lbl_value - Value: - - - tooltip_lbl_value - lbl_value - - - - visit_event_full - - title - Event - - - btn_close - Close - - - tooltip_btn_close - btn_close - - - dlg_visit_event_full - Event - - - tooltip_dlg_visit_event_full - dlg_visit_event_full - - - lbl_compass - Compass: - - - tooltip_lbl_compass - lbl_compass - - - lbl_event_code - Event code: - - - tooltip_lbl_event_code - lbl_event_code - - - lbl_files - Files: - - - tooltip_lbl_files - lbl_files - - - lbl_geom1 - Geom1: - - - tooltip_lbl_geom1 - lbl_geom1 - - - lbl_geom2 - Geom2: - - - tooltip_lbl_geom2 - lbl_geom2 - - - lbl_geom3 - Geom3: - - - tooltip_lbl_geom3 - lbl_geom3 - - - lbl_id - Id: - - - tooltip_lbl_id - lbl_id - - - lbl_index_val - Index val: - - - tooltip_lbl_index_val - lbl_index_val - - - lbl_is_last - Is last: - - - tooltip_lbl_is_last - lbl_is_last - - - lbl_parameter_id - Parameter id: - - - tooltip_lbl_parameter_id - lbl_parameter_id - - - lbl_position_id - Position id: - - - tooltip_lbl_position_id - lbl_position_id - - - lbl_position_value - Position value: - - - tooltip_lbl_position_value - lbl_position_value - - - lbl_text - Text: - - - tooltip_lbl_text - lbl_text - - - lbl_tstamp - Tstamp: - - - tooltip_lbl_tstamp - lbl_tstamp - - - lbl_value - Value: - - - tooltip_lbl_value - lbl_value - - - lbl_value1 - Value1: - - - tooltip_lbl_value1 - lbl_value1 - - - lbl_value2 - Value2: - - - tooltip_lbl_value2 - lbl_value2 - - - lbl_visit_id - Visit id: - - - tooltip_lbl_visit_id - Visit ID - - - lbl_xcoord - Xcoord: - - - tooltip_lbl_xcoord - lbl_xcoord - - - lbl_ycoord - Ycoord: - - - tooltip_lbl_ycoord - lbl_ycoord - - - tab_files - Files - - - tooltip_tab_files - tab_files - - - tab_info - Info - - - tooltip_tab_info - tab_info - - - - visit_event_rehab - - title - Rehabilitation arc event - - - btn_accept - Aceptar - - - tooltip_btn_accept - btn_accept - - - btn_add_file - Add file - - - tooltip_btn_add_file - btn_add_file - - - btn_cancel - Cancelar - - - tooltip_btn_cancel - btn_cancel - - - btn_delete_file - Delete file - - - tooltip_btn_delete_file - btn_delete_file - - - dlg_visit_event_rehab - Rehabilitation arc event - - - tooltip_dlg_visit_event_rehab - dlg_visit_event_rehab - - - lbl_files - Files: - - - tooltip_lbl_files - lbl_files - - - lbl_geom1 - Geom1: - - - tooltip_lbl_geom1 - lbl_geom1 - - - lbl_geom2 - Geom2: - - - tooltip_lbl_geom2 - lbl_geom2 - - - lbl_geom3 - Geom3: - - - tooltip_lbl_geom3 - lbl_geom3 - - - lbl_parameter_id - Parameter id: - - - tooltip_lbl_parameter_id - lbl_parameter_id - - - lbl_position_id - Position id: - - - tooltip_lbl_position_id - lbl_position_id - - - lbl_position_value - Position value: - - - tooltip_lbl_position_value - lbl_position_value - - - lbl_text - Text: - - - tooltip_lbl_text - lbl_text - - - lbl_value1 - Value1: - - - tooltip_lbl_value1 - lbl_value1 - - - lbl_value2 - Value2: - - - tooltip_lbl_value2 - lbl_value2 - - - - visit_gallery - - title - Gallery - - - btn_close - Close - - - tooltip_btn_close - btn_close - - - btn_next - btn_next - - - tooltip_btn_next - btn_next - - - btn_previous - btn_previous - - - tooltip_btn_previous - btn_previous - - - dlg_visit_gallery - Gallery - - - tooltip_dlg_visit_gallery - dlg_visit_gallery - - - lbl_event_id - Event id: - - - tooltip_lbl_event_id - lbl_event_id - - - lbl_visit_id - Visit id: - - - tooltip_lbl_visit_id - Visit ID - - - - visit_gallery_zoom - - title - Gallery zoom - - - btn_slideNext - btn_slideNext - - - tooltip_btn_slideNext - btn_slideNext - - - btn_slidePrevious - btn_slidePrevious - - - tooltip_btn_slidePrevious - btn_slidePrevious - - - dlg_visit_gallery_zoom - Gallery zoom - - - tooltip_dlg_visit_gallery_zoom - dlg_visit_gallery_zoom - - - lbl_event_id - Event id: - - - tooltip_lbl_event_id - lbl_event_id - - - lbl_img_zoom - Image zoom - - - tooltip_lbl_img_zoom - lbl_img_zoom - - - lbl_visit_id - Visit id: - - - tooltip_lbl_visit_id - Visit ID - - - - visit_manager - - title - Visit management - - - btn_close - Close - - - tooltip_btn_close - Close - - - btn_create - Create - - - tooltip_btn_create - Create - - - btn_delete - Delete visit - - - tooltip_btn_delete - btn_delete - - - btn_open - Open visit - - - tooltip_btn_open - btn_open - - - date_event_from - dd/MM/yyyy - - - tooltip_date_event_from - date_event_from - - - date_event_to - dd/MM/yyyy - - - tooltip_date_event_to - date_event_to - - - dlg_visit_manager - Visit management - - - tooltip_dlg_visit_manager - dlg_visit_manager - - - lbl_data_event_from - From: - - - tooltip_lbl_data_event_from - lbl_data_event_from - - - lbl_data_event_to - To: - - - tooltip_lbl_data_event_to - lbl_data_event_to - - - lbl_filter - Filter by code: - - - tooltip_lbl_filter - lbl_filter - - - - visit_picture - - title - Add picture - - - btn_accept - Accept - - - tooltip_btn_accept - Accept - - - btn_cancel - Cancel - - - tooltip_btn_cancel - btn_cancel - - - dlg_visit_picture - Add picture - - - tooltip_dlg_visit_picture - dlg_visit_picture - - - lbl_link - Link: - - - tooltip_lbl_link - Link - - - path_doc - ... - - - tooltip_path_doc - path_doc - - - - workcat_manager - - title - Workcat management - - - btn_cancel - Close - - - tooltip_btn_cancel - Close - - - btn_create - Create - - - tooltip_btn_create - Create - - - btn_delete - Delete - - - tooltip_btn_delete - Delete - - - dlg_workcat_manager - Workcat management - - - tooltip_dlg_workcat_manager - dlg_workcat_manager - - - lbl_filter_name - Filter by: Workcat name - - - tooltip_lbl_filter_name - lbl_filter_name - - - - work_management - - btn_accept - Save - - - tooltip_btn_accept - Save - - - btn_export_user - Export to csv - - - tooltip_btn_export_user - Export to csv - - - lbl_from - From: - - - tooltip_lbl_from - From: - - - lbl_team - Team: - - - tooltip_lbl_team - Team: - - - lbl_to - To: - - - tooltip_lbl_to - To: - - - - workorder_management - - title - Workorder Management - - - btn_cancel - Close - - - tooltip_btn_cancel - btn_cancel - - - btn_create - Create Workorder - - - tooltip_btn_create - btn_create - - - btn_create_wclass - Create Class - - - tooltip_btn_create_wclass - btn_create_wclass - - - btn_create_wtype - Create Type - - - tooltip_btn_create_wtype - btn_create_wtype - - - btn_delete - Delete Workorder - - - tooltip_btn_delete - btn_delete - - - campaign_management - Administrador de Campañas - - - tooltip_campaign_management - campaign_management - - - dlg_workorder_management - Workorder Management - - - tooltip_dlg_workorder_management - dlg_workorder_management - - - label - Filter by name: - - - tooltip_label - label - - - lbl_column_filter_dates - Workorder Type: - - - tooltip_lbl_column_filter_dates - lbl_column_filter_dates - - - lbl_state - Workorder Class: - - - tooltip_lbl_state - lbl_state - - - workorder_management - Workorder Management - - - tooltip_workorder_management - workorder_management - - - - workspace_create - - title - Create new workspace - - - btn_accept - Accept - - - tooltip_btn_accept - btn_accept - - - btn_cancel - Cancel - - - tooltip_btn_cancel - btn_cancel - - - btn_toggle_privacy - Toggle privacy - - - tooltip_btn_toggle_privacy - btn_toggle_privacy - - - btn_update - Update - - - tooltip_btn_update - btn_update - - - dlg_workspace_create - Create new workspace - - - tooltip_dlg_workspace_create - dlg_workspace_create - - - lbl_new_workspace - Workspace name: - - - tooltip_lbl_new_workspace - Workspace name - - - lbl_new_workspace_chk - Private workspace: - - - tooltip_lbl_new_workspace_chk - lbl_new_workspace_chk - - - lbl_new_workspace_descript - Description: - - - tooltip_lbl_new_workspace_descript - Workspace description - - - tab_info_log - Info log - - - tooltip_tab_info_log - tab_info_log - - - tab_new_workspace - Create new workspace - - - tooltip_tab_new_workspace - tab_new_workspace - - - txt_workspace_descript - Workspace description - - - tooltip_txt_workspace_descript - Use this to describe what the workspace is used for - - - txt_workspace_name - Workspace name - - - tooltip_txt_workspace_name - Workspace name *Required - - - - workspace_manager - - title - Workspace manager - - - btn_cancel - Close - - - tooltip_btn_cancel - btn_cancel - - - btn_create - Create - - - tooltip_btn_create - Create - - - btn_current - Set current - - - tooltip_btn_current - Set the current workspace - - - btn_delete - Delete - - - tooltip_btn_delete - Delete the selected workspace - - - btn_reset - Reset workspace - - - tooltip_btn_reset - Reset the values of the current workspace - - - btn_toggle_privacy - Toggle privacy - - - tooltip_btn_toggle_privacy - Update - - - btn_update - Update - - - tooltip_btn_update - Toggle privacy - - - dlg_workspace_manager - Workspace manager - - - tooltip_dlg_workspace_manager - dlg_workspace_manager - - - label - Info: - - - tooltip_label - label - - - lbl_vdefault_workspace - lbl_vdefault_workspace - - - tooltip_lbl_vdefault_workspace - Current workspace - - - lbl_workspace_name - Filter by: Workspace name - - - tooltip_lbl_workspace_name - lbl_workspace_name - - - txt_name - Name - - - tooltip_txt_name - Workspace name - - - + + + + + + giswater + + 18_text + Commercial connection + + + 19_text + Topo tools + + + 24_text + Go2EPA express + + + 301_text + Annual planner + + + 302_text + Monthly planner + + + 303_text + Prices generator + + + 304_text + Add visit + + + 305_text + Unit Planner + + + 309_text + Incident manager + + + 36_text + Giswater + + + 38_text + New network cost + + + 47_text + Psector selector + + + 74_text + Add new lot + + + 75_text + Lot manager + + + 76_text + Lot filter + + + 81_text + New psector + + + 82_text + Psector manager + + + 98_text + Config editor + + + Actions + Actions + + + Add drain GPKG project + Add drain GPKG project + + + Additional demand check + Additional demand check + + + Advanced + Advanced + + + AmBreakage + Administrative tool + + + AmPriority + Priority selection and Calculation + + + Analytics + Analytics + + + ARC + Arc + + + Breakdown Assignation + Breakdown Assignation + + + Calibration + Calibration + + + Closest arcs + Closest arcs + + + CONNEC + Connec + + + DRAG-DROP + Drag-Drop + + + Dscenario + Dscenario + + + DWF scenario + DWF scenario + + + Emitter calibration + Emitter calibration + + + EPA multi calls + EPA multi calls + + + Export + Export + + + Fast print + Fast print + + + Forced arcs + Forced arcs + + + Forced arcs (selecting only arcs) + Forced arcs (selecting only arcs) + + + Get help + Get help + + + Go2IBER + Go2IBER + + + GULLY + Gully + + + GwAddCampaignButton + Add Campaign + + + GwAddChildLayerButton + Load Giswater layer + + + GwAddLotButton + Add Lot + + + GwAmBreakageButton + Administrative tool + + + GwAmPriorityButton + Priority Calculation by Selection + + + GwArcAddButton + Insert arc + + + GwArcDivideButton + Arc divide + + + GwArcFusionButton + Arc fusion + + + GwAuxCircleAddButton + Create circle + + + GwAuxPointAddButton + Create point + + + GwConfigButton + Config + + + GwConnectLinkButton + Connect to network + + + GwCSVButton + Import CSV + + + GwDateSelectorButton + Date selector + + + GwDimensioningButton + Dimensioning + + + GwDocumentButton + Add document + + + GwDocumentManagerButton + Document manager + + + GwDscenarioManagerButton + Dscenario manager + + + GwElementButton + Add element + + + GwElementManagerButton + Element manager + + + GwEpaTools + EPA tools + + + GwFeatureDeleteButton + Delete feature + + + GwFeatureEndButton + End feature + + + GwFeatureReplaceButton + Replace feature + + + GwFeatureTypeChangeButton + Change object type + + + GwFlowExitButton + Flow exit + + + GwFlowTraceButton + Flow trace + + + GwGo2EpaButton + Go2EPA + + + GwGo2EpaManagerButton + EPA result manager + + + GwGo2EpaSelectorButton + EPA result selector + + + GwInfoButton + Info Giswater + + + GwLayerStyleChangeButton + Giswater styles + + + GwLotResourceManagementButton + Lot resource management + + + GwManageCampaignLotButton + Manage campaign lot + + + GwMincutButton + New mincut + + + GwMincutManagerButton + Mincut management + + + GwNetscenarioManagerButton + Netscenario manager + + + GwNonVisualManagerButton + Non-Visual objects manager + + + GwPointAddButton + Insert point + + + GwPriceManagerButton + Network cost manager + + + GwPrintButton + Print + + + GwProfileButton + Profile tool + + + GwProjectCheckButton + Check project + + + GwPsectorButton + New psector + + + GwPsectorManagerButton + Psector manager + + + GwResultManagerButton + Result manager + + + GwResultSelectorButton + Result selector + + + GwSearchButton + Search plus + + + GwSelectorButton + Selectors + + + GwSnapshotViewButton + Snapshot view + + + GwToolBoxButton + Toolbox + + + GwUtilsManagerButton + Utils manager + + + GwVisitButton + Add visit + + + GwVisitManagerButton + Visit manager + + + GwWorkspaceManagerButton + Workspace manager + + + Hydrology scenario + Hydrology scenario + + + Import + Import + + + Import CSV + Import CSV + + + Import INP file + Import INP file + + + Manage Campaign + Manage Campaign + + + Manage Campaign + Manage Campaign + + + Manage Lot + Manage Lot + + + Manage Lot + Manage Lot + + + Manage Workorder + Manage Workorder + + + Mapzones manager + Mapzones manager + + + Massive composer + Massive composer + + + menu_name + Giswater + + + Multi psector print + Multi psector print + + + NODE + Node + + + Open plugin folder + Open plugin folder + + + Open user folder + Open user folder + + + Priority Calculation (Global) + Priority Calculation (Global) + + + Quantized demands + Quantized demands + + + Reset dialogs + Reset dialogs + + + Reset plugin + Reset plugin + + + ResultManager + Result manager + + + ResultSelector + Result selector + + + Review + Review + + + SELECT + Select + + + Show current selectors + Show current selectors + + + Static calibration + Static calibration + + + Style manager + Style manager + + + Toggle Log DB + Toggle Log DB + + + toolbar_am_name + Giswater - Asset Manager + + + toolbar_basic_name + Giswater - Basic + + + toolbar_cm_name + Giswater - Campaign Manager + + + toolbar_custom_name + Giswater - Custom + + + toolbar_edit_name + Giswater - Edit + + + toolbar_epa_name + Giswater - Epa + + + toolbar_om_name + Giswater - O&M + + + toolbar_plan_name + Giswater - Masterplan + + + toolbar_utilities_name + Giswater - Utilities + + + Valve operation check + Valve operation check + + + Visit + Visit + + + Workcat manager + Workcat manager + + + + + giswater + + + + + + + + + + } + } + + + {0} + {0} + + + {0} --> {1} + {0} --> {1} + + + {0}: {1} + {0}: {1} + + + {0} --> {1} --> {2} + {0} --> {1} --> {2} + + + {0} ({1}) - {2} - Updating {3}... + {0} ({1}) - {2} - Updating {3}... + + + {0}: {1} Python function: tools_gw.set_widgets. WHERE columname='{2}' AND widgetname='{3}' AND widgettype='{4}' + {0}: {1} Python function: tools_gw.set_widgets. WHERE columname='{2}' AND widgetname='{3}' AND widgettype='{4}' + + + {0} ({1}) - python - Updating python files... + {0} ({1}) - python - Updating python files... + + + {0}: {1}. widgetname='{2}' AND widgettype='{3}' + {0}: {1}. widgetname='{2}' AND widgettype='{3}' + + + {0} campaign(s) deleted. + {0} campaign(s) deleted. + + + {0} campaign(s) deleted. + {0} campaign(s) deleted. + + + {0}: Config file is not set + {0}: Config file is not set + + + "{0}" does not exist. Please select a valid config file. + "{0}" does not exist. Please select a valid config file. + + + "{0}" does not exist. Please select a valid folder. + "{0}" does not exist. Please select a valid folder. + + + {0} error {1} + {0} error {1} + + + {0} error: {1} + {0} error: {1} + + + {0} exception: {1} + {0} exception: {1} + + + {0} Exception: {1} + {0} Exception: {1} + + + {0} exception [{1}]: {2} + {0} exception [{1}]: {2} + + + {0} folder not found + {0} folder not found + + + {0} folder not found, executing en_US folder + {0} folder not found, executing en_US folder + + + {0} id: + {0} id: + + + {0} is not a table name or {1} + {0} is not a table name or {1} + + + {0} is not defined in table cat_feature + {0} is not defined in table cat_feature + + + {0} lot(s) deleted. + {0} lot(s) deleted. + + + {0} lot(s) deleted. + {0} lot(s) deleted. + + + {0}: project type '{1}' not supported + {0}: project type '{1}' not supported + + + {0}: Reference {1} = '{2}' it is not managed + {0}: Reference {1} = '{2}' it is not managed + + + {0} successfully saved. + {0} successfully saved. + + + {0} task is already active! + {0} task is already active! + + + {0}: widget not found + {0}: widget not found + + + {0} workorder(s) deleted. + {0} workorder(s) deleted. + + + {0} workorder(s) deleted. + {0} workorder(s) deleted. + + + {1} + {1} + + + {2} + {2} + + + Action has no function!! + Action has no function!! + + + Activate water netowrk snapshot + Activate water netowrk snapshot + + + Add document + Add document + + + Added elevation data from raster to all nodes + Added elevation data from raster to all nodes + + + Added grade attributes to all edges + Added grade attributes to all edges + + + Added length attributes to graph edges + Added length attributes to graph edges + + + Add layers to schema + Add layers to schema + + + ADDRESS + ADDRESS + + + Add translator + Add translator + + + Add translator ({0}) + Add translator ({0}) + + + A diameter value is considered invalid if it is zero, negative, NULL or greater than the maximum diameter in the configuration table. As a result, these pipes will NOT be assigned a priority value. + A diameter value is considered invalid if it is zero, negative, NULL or greater than the maximum diameter in the configuration table. As a result, these pipes will NOT be assigned a priority value. + + + Administrative tools + Administrative tools + + + Adress configuration. Field not found + Adress configuration. Field not found + + + Advanced Menu + Advanced Menu + + + Alert + Alert + + + All dialogs updated correctly + All dialogs updated correctly + + + All edges must have 'length' and 'speed_kph' attributes. + All edges must have 'length' and 'speed_kph' attributes. + + + All layers have been successfully refreshed. + All layers have been successfully refreshed. + + + All messages updated correctly + All messages updated correctly + + + All the values in the column 'atlas_id' from the table 'plan_psector' have to be INTEGER. This is not the case for your table, please fix this before continuing. + All the values in the column 'atlas_id' from the table 'plan_psector' have to be INTEGER. This is not the case for your table, please fix this before continuing. + + + A material is considered invalid if it is not listed in the material configuration table. + A material is considered invalid if it is not listed in the material configuration table. + + + ANALYTICS + ANALYTICS + + + An arccat_id is considered invalid if it is not listed in the catalog configuration table. As a result, these pipes will NOT be assigned a priority value. + An arccat_id is considered invalid if it is not listed in the catalog configuration table. As a result, these pipes will NOT be assigned a priority value. + + + An error occurred saving the workorder. + An error occurred saving the workorder. + + + An error occurred while adding the style for layer '{0}': + An error occurred while adding the style for layer '{0}': + + + An error occurred while adding the style for layer '{0}':\n{1} + An error occurred while adding the style for layer '{0}':\n{1} + + + A new style has been added to '{0}' for the layer '{1}' using the 'GwBasic' style information. + A new style has been added to '{0}' for the layer '{1}' using the 'GwBasic' style information. + + + A new style has been added to '{0}' for the layer '{1}' using the 'GwBasic' style information.\nYou can change it and use 'Update Style' to create a personalized version. + A new style has been added to '{0}' for the layer '{1}' using the 'GwBasic' style information.\nYou can change it and use 'Update Style' to create a personalized version. + + + Any connec_id found with this customer_code + Any connec_id found with this customer_code + + + Any document selected + Any document selected + + + Any of the snapped features belong to selected layer + Any of the snapped features belong to selected layer + + + Any record found + Any record found + + + Any record found for current user in table + Any record found for current user in table + + + Any record found in table 'cat_node' related with selected 'node_type.type' + Any record found in table 'cat_node' related with selected 'node_type.type' + + + Any record found in table 'node_type' related with selected 'node_type.type' + Any record found in table 'node_type' related with selected 'node_type.type' + + + Any record selected + Any record selected + + + Any table has been selected + Any table has been selected + + + Applied styles for context + Applied styles for context + + + Arc + Arc + + + ARC + ARC + + + Arc fusion + Arc fusion + + + Are you sure to execute vacuum on selected schema? + Are you sure to execute vacuum on selected schema? + + + Are you sure to save this feature? + Are you sure to save this feature? + + + Are you sure to update the project schema to last version? + Are you sure to update the project schema to last version? + + + Are you sure you want delete schema '{0}'? + Are you sure you want delete schema '{0}'? + + + Are you sure you want to assign team '{0}' to {1} selected user(s)? + Are you sure you want to assign team '{0}' to {1} selected user(s)? + + + Are you sure you want to cancel these mincuts? + Are you sure you want to cancel these mincuts? + + + Are you sure you want to continue? + Are you sure you want to continue? + + + Are you sure you want to delete {0} campaign(s)? + Are you sure you want to delete {0} campaign(s)? + + + Are you sure you want to delete {0} campaign(s)? + Are you sure you want to delete {0} campaign(s)? + + + Are you sure you want to delete {0} lot(s)? + Are you sure you want to delete {0} lot(s)? + + + Are you sure you want to delete {0} lot(s)? + Are you sure you want to delete {0} lot(s)? + + + Are you sure you want to delete {0} workorder(s)? + Are you sure you want to delete {0} workorder(s)? + + + Are you sure you want to delete {0} workorder(s)? + Are you sure you want to delete {0} workorder(s)? + + + Are you sure you want to delete the selected styles? + Are you sure you want to delete the selected styles? + + + Are you sure you want to delete these mincuts? + Are you sure you want to delete these mincuts? + + + Are you sure you want to delete these profile? + Are you sure you want to delete these profile? + + + Are you sure you want to delete these records: + Are you sure you want to delete these records: + + + Are you sure you want to delete these records: + Are you sure you want to delete these records: + + + Are you sure you want to delete these records? + Are you sure you want to delete these records? + + + Are you sure you want to delete these records?\nSome events have documents + Are you sure you want to delete these records?\Some events have documents + + + Are you sure you want to delete the style group '{0}'? + Are you sure you want to delete the style group '{0}'? + + + Are you sure you want to delete the style group '{0}'?\n\nThis will also delete all related entries in the sys_style table.Confirm Cascade Delete + Are you sure you want to delete the style group '{0}'?\n\nThis will also delete all related entries in the sys_style table.Confirm Cascade Delete + + + Are you sure you want to disconnect this elements? + Are you sure you want to disconnect this elements? + + + Are you sure you want to override the configuration of this workspace? + Are you sure you want to override the configuration of this workspace? + + + Are you sure you want to overwrite this file? + Are you sure you want to overwrite this file? + + + Are you sure you want to overwrite this folder? + Are you sure you want to overwrite this folder? + + + ARE YOU SURE YOU WANT TO PROCEED? + ARE YOU SURE YOU WANT TO PROCEED? + + + Are you sure you want to remove team assignment from {0} selected user(s)? + Are you sure you want to remove team assignment from {0} selected user(s)? + + + Are you sure you want to replace selected feature with a new one? + Are you sure you want to replace selected feature with a new one? + + + Are you sure you want to replace selected feature with a new one?\n If you have different addfields in your feature, they will be deleted. + Are you sure you want to replace selected feature with a new one?\n If you have different addfields in your feature, they will be deleted. + + + Are you sure you want to update the data? + Are you sure you want to update the data? + + + Are you sure you want to update the style of {0} ({1}) with the symbology of the layer in the project? + Are you sure you want to update the style of {0} ({1}) with the symbology of the layer in the project? + + + Are you sure you want to update the style of {0} ({1}) with the symbology of the layer in the project? \nYou are going to lose previous information! + Are you sure you want to update the style of {0} ({1}) with the symbology of the layer in the project? \nYou are going to lose previous information! + + + A rollback on schema will be done. + A rollback on schema will be done. + + + As a result, the material of these pipes will be treated as the configured unknown material, {0}. + As a result, the material of these pipes will be treated as the configured unknown material, {0}. + + + As a result, the material of these pipes will be treated as the configured unknown material, {unknown_material}. + As a result, the material of these pipes will be treated as the configured unknown material, {unknown_material}. + + + Assigning leaks to pipes + Assigning leaks to pipes + + + Assign Team + Assign Team + + + A style already exists for the layer '{0}' in the selected style group. + A style already exists for the layer '{0}' in the selected style group. + + + Atlas ID must be an integer. + Atlas ID must be an integer. + + + author = {Boeing, Geoff}, + author = {Boeing, Geoff}, + + + AUXILIAR + AUXILIAR + + + BASEMAP + BASEMAP + + + Begin plotting the graph... + Begin plotting the graph... + + + Begin topologically simplifying the graph... + Begin topologically simplifying the graph... + + + Boeing, G. (2024). Modeling and Analyzing Urban Networks and Amenities with OSMnx. Working paper. https://geoffboeing.com/publications/osmnx-paper/ + Boeing, G. (2024). Modeling and Analyzing Urban Networks and Amenities with OSMnx. Working paper. https://geoffboeing.com/publications/osmnx-paper/ + + + Boundaries must be a Polygon or MultiPolygon. If you requested `features_from_place`, ensure your query geocodes to a Polygon or MultiPolygon. See the documentation for details. + Boundaries must be a Polygon or MultiPolygon. If you requested `features_from_place`, ensure your query geocodes to a Polygon or MultiPolygon. See the documentation for details. + + + Calculate Priority + Calculate Priority + + + Calculating values + Calculating values + + + Campaign ID is missing. + Campaign ID is missing. + + + Campaign ID not found. + Campaign ID not found. + + + Campaign saved successfully. + Campaign saved successfully. + + + Campaign saved successfully. + Campaign saved successfully. + + + Canceling task... + Canceling task... + + + Cancel mincut + Cancel mincut + + + Cancel mincuts + Cancel mincuts + + + Cannot create file + Cannot create file, check if its open + + + Cannot create file, check if its open + Cannot create file, check if its open + + + Cannot create file, check if selected composer is the correct composer + Cannot create file, check if selected composer is the correct composer + + + Cannot create file, check if selected giswater_advancedtools is the correct giswater_advancedtools + Cannot create file, check if selected giswater_advancedtools is the correct giswater_advancedtools + + + Cannot get current Java version from windows registry + Cannot get current Java version from Windows registry + + + Cannot get giswater build version from windows registry + Cannot get giswater build version from Windows registry + + + Cannot get giswater folder from windows registry + Cannot get giswater folder from windows registry + + + Cannot get giswater major version from windows registry + Cannot get giswater major version from windows registry + + + Cannot get giswater minor version from windows registry + Cannot get giswater minor version from windows registry + + + Cannot get Java folder from windows registry + Cannot get Java folder from Windows registry + + + Cannot set inactive a current scenario. Please update current first. + Cannot set inactive a current scenario. Please update current first. + + + Cannot set the current {0} scenario of an inactive scenario. Please activate it first. + Cannot set the current {0} scenario of an inactive scenario. Please activate it first. + + + Cannot set the current netscenario of an inactive scenario. Please activate it first. + Cannot set the current netscenario of an inactive scenario. Please activate it first. + + + Cannot set the current psector of an inactive scenario. Please activate it first. + Cannot set the current psector of an inactive scenario. Please activate it first. + + + Can't create curve with only one value if flow is 0. Add more values or change the flow value. + Can't create curve with only one value if flow is 0. Add more values or change the flow value. + + + CATALOGS + CATALOGS + + + Category name already exists + Category name already exists + + + Category name cannot be empty. + Category name cannot be empty. + + + Category updated successfully! + Category updated successfully! + + + CAUTION! Deleting a dscenario will delete data from features related to the dscenario. + CAUTION! Deleting a dscenario will delete data from features related to the dscenario. + + + CAUTION! Deleting a dscenario will delete data from features related to the dscenario.\nAre you sure you want to delete these records? + CAUTION! Deleting a dscenario will delete data from features related to the dscenario.\nAre you sure you want to delete these records? + + + CAUTION! Deleting a netscenario will delete data from features related to the netscenario. + CAUTION! Deleting a netscenario will delete data from features related to the netscenario. + + + CAUTION! Deleting a netscenario will delete data from features related to the netscenario.\nAre you sure you want to delete these records? + CAUTION! Deleting a netscenario will delete data from features related to the netscenario.\nAre you sure you want to delete these records? + + + Change epa_type + Change epa_type + + + Changes applied to "{0}" successfully. + Changes applied to "{0}" successfully. + + + Changes on this page are dangerous and can break Giswater plugin in various ways. + Changes on this page are dangerous and can break Giswater plugin in various ways. + + + Changes on this page are dangerous and can break Giswater plugin in various ways. \nYou will need to restart QGIS or reload Giswater plugin to apply changes. Do you want continue? + Changes on this page are dangerous and can break Giswater plugin in various ways. \nYou will need to restart QGIS or reload Giswater plugin to apply changes. Do you want continue? + + + Check fields from table or view + Check fields from table or view + + + Checking any item will not uncheck any other item. + Checking any item will not uncheck any other item. + + + Checking any item will uncheck all other items. + Checking any item will uncheck all other items. + + + Checking any item will uncheck all other items unless Shift is pressed. + Checking any item will uncheck all other items unless Shift is pressed. + + + Choose dscenario + Choose dscenario + + + Clicking an item will check/uncheck it. + Clicking an item will check/uncheck it. + + + Click on 2 places on the map + Click on 2 places on the map, creating a line, then set the location of a point + + + Click on 2 places on the map, creating a line, then set a location of a point + Click on 2 places on the map, creating a line, then set a location of a point + + + Click on 2 places on the map, creating a line, then set the location of a point + Click on 2 places on the map, creating a line, then set the location of a point + + + Click on a feature to set mincut location and start the process + Click on a feature to set mincut location and start the process + + + Click on arcs to select them. Use Alt+click to unselect selected arcs. + Click on arcs to select them. Use Alt+click to unselect selected arcs. + + + Click on disconnected node + Click on disconnected node, move the pointer to the desired location on pipe to break it + + + Click on disconnected node, move the pointer to the desired location on pipe to break it + Click on disconnected node, move the pointer to the desired location on pipe to break it + + + Click on feature or any place on the map and set a radius of a circle + Click on feature or any place on the map and set a radius of a circle + + + Click on feature or any place on the map and set radius of a circle + Click on feature or any place on the map and set radius of a circle + + + Click on feature to replace it with a new one. You can select other layer to snapp diferent feature type. + Click on feature to replace it with a new one. You can select other layer to snap to a different feature type. + + + Click on node + Click on node, that joins two pipes, in order to remove it and merge pipes + + + Click on node, that joins two pipes, in order to remove it + Click on node, that joins two pipes, in order to remove it + + + Click on node, that joins two pipes, in order to remove it and merge pipes + Click on node, that joins two pipes, in order to remove it and merge pipes + + + Click on node to change it's type + Click on node to change it's type + + + Click on node to computed its downstream network + Click on node to computed its downstream network + + + Click on node to computed its upstream network + Click on node to computed its upstream network + + + Click on the object to change its class + Click on the object to change its class + + + Close + Close + + + Column name already exists. + Column name already exists. + + + Column name and Label fields are mandatory. Please set correct value. + Column name and Label fields are mandatory. Please set correct value. + + + Column not found + Column not found + + + _compare failed in ControlBase because + _compare failed in ControlBase because + + + Completed with no exception and no result + Completed with no exception and no result + + + Compliance Grade + Compliance Grade + + + Compliance value must be between 0 and 10 inclusive. + Compliance value must be between 0 and 10 inclusive. + + + Composer template not found. Name should be + Composer template not found. Name should be + + + Composer 'ud_profile' created + Composer 'ud_profile' created + + + Conexión + Connec + + + Config database file not found + Config database file not found + + + Config file not found at + Config file not found at + + + ConfigLayerFields task is already active! + ConfigLayerFields task is already active! + + + Configuration file couldn't be imported: + Configuration file couldn't be imported: + + + Configuration file couldn't be imported:\n{0} + Configuration file couldn't be imported:\n{0} + + + Configuration file not found, please make sure it is located in the correct directory and try again + Configuration file not found, please make sure it is located in the correct directory and try again + + + Configuration loaded successfully + Configuration loaded successfully + + + Configuration saved to {0} + Configuration saved to {0} + + + Confirm Deletion + Confirm Deletion + + + CONNEC + CONNEC + + + Connected to {0} + Connected to {0} + + + Connection '{0}' not found in the file '{1}' + Connection '{0}' not found in the file '{1}' + + + Connection '{0}' not found in the file '{1}'. Trying in '{2}'... + Connection '{0}' not found in the file '{1}'. Trying in '{2}'... + + + Connection Failed. Please + Connection Failed. Please, check connection parameters + + + Connection Failed. Please, check connection parameters + Connection Failed. Please, check connection parameters + + + Connect link task is already active! + Connect link task is already active! + + + Constructed place geometry polygon(s) to query Overpass + Constructed place geometry polygon(s) to query Overpass + + + Context + Context + + + Converted MultiDiGraph to DiGraph + Converted MultiDiGraph to DiGraph + + + Converted MultiDiGraph to undirected MultiGraph + Converted MultiDiGraph to undirected MultiGraph + + + Converting node, edge, and graph-level attribute data types + Converting node, edge, and graph-level attribute data types + + + Could not determine a valid role for team '{0}'. + Could not determine a valid role for team '{0}'. + + + Could not determine event point coordinates + Could not determine event point coordinates + + + Could not find an ID for the style group '{0}'. + Could not find an ID for the style group '{0}'. + + + Could not find config_style ID for idval '{0}'. + Could not find config_style ID for idval '{0}'. + + + Could not find the corresponding ID for the selected style {0}. + Could not find the corresponding ID for the selected style {0}. + + + Could not find the original user to update. + Could not find the original user to update. + + + Could not get feature ID from snapped point + Could not get feature ID from snapped point + + + Could not load EPA Results layers + Could not load EPA Results layers + + + Could not retrieve feature from layer + Could not retrieve feature from layer + + + Couldn't add group. + Couldn't add group. + + + Couldn't draw profile. You may need to select another exploitation. + Couldn't draw profile. You may need to select another exploitation. + + + Couldn't find layer to zoom to + Couldn't find layer to zoom to + + + Couldn't import scipy/numpy so the graph can't be shown. Please install it manually or try with another QGIS version + Couldn't import scipy/numpy so the graph can't be shown. Please install it manually or try with another QGIS version + + + Couldn't import swmm_api package. Try to reload the Giswater plugin. If the issue persists restart QGIS. + Couldn't import swmm_api package. Try to reload the Giswater plugin. If the issue persists restart QGIS. + + + Counted undirected street segments incident on each node + Counted undirected street segments incident on each node + + + Create {0} schema + Create {0} schema + + + Create base schema + Create base schema + + + Created edges GeoDataFrame from graph + Created edges GeoDataFrame from graph + + + Created graph from node/edge GeoDataFrames + Created graph from node/edge GeoDataFrames + + + Created nodes GeoDataFrame from graph + Created nodes GeoDataFrame from graph + + + Create example + Create example + + + Create parent schema + Create parent schema + + + Create {project} schema + Create {project} schema + + + Create schema of type '{0}': '{1}' + Create schema of type '{0}': '{1}' + + + Creating GIS file... {0} + Creating GIS file... {0} + + + Creating parser for file: {0} + Creating parser for file: {0} + + + Creating user config folder + Creating user config folder + + + Creating user config folder: {0} + Creating user config folder: {0} + + + Credentials will be stored in GIS project file + Credentials will be stored in GIS project file + + + Credentials will be stored in GIS project file. Do you want to continue? + Credentials will be stored in GIS project file. Do you want to continue? + + + Credentials will be stored in the GIS project file as plain text, and will apply to both existing and future layers. Do you want to proceed? + Credentials will be stored in the GIS project file as plain text, and will apply to both existing and future layers. Do you want to proceed? + + + CRITICAL ERROR in update_expl_sector_combos + CRITICAL ERROR in update_expl_sector_combos + + + CSV not generated. Check fields from table or view + CSV not generated. Check fields from table or view + + + Current feature has state '{0}'. Therefore it is not fusionable + Current feature has state '{0}'. Therefore it is not fusionable + + + Current feature has state '{0}'. Therefore it is not replaceable + Current feature has state '{0}'. Therefore it is not replaceable + + + Current feature is planified. You should activate plan mode to work with it. + Current feature is planified. You should activate plan mode to work with it. + + + Current layer not valid + Current layer not valid + + + Current node is not located over an arc. Please + Current node is not located over an arc. Please, select option 'DRAG-DROP' + + + Current node is not located over an arc. Please, select option 'DRAG-DROP' + Current node is not located over an arc. Please, select option 'DRAG-DROP' + + + Current psector + Current psector + + + Current psector: {1} + Current psector: {1} + + + Current user does not have 'plan_psector_current'. Value of current psector will be inserted. + Current user does not have 'plan_psector_current'. Value of current psector will be inserted. + + + Custom mincut executed successfully + Custom mincut executed successfully + + + Database connection error: {0} + Database connection error: {0} + + + Database connection error ({0 }): {1} + Database connection error ({0 }): {1} + + + Database connection error (PgDao). Please open plugin log file to get more details + Database connection error (PgDao). Please open plugin log file to get more details + + + Database connection error. Please check your connection parameters. + Database connection error. Please check your connection parameters. + + + Database connection error. Please open plugin log file to get more details + Database connection error. Please open plugin log file to get more details + + + Database connection error (psycopg2). Please open plugin log file to get more details + Database connection error (psycopg2). Please open plugin log file to get more details + + + Database connection error (QSqlDatabase). Please open plugin log file to get more details + Database connection error (QSqlDatabase). Please open plugin log file to get more details + + + Database connection reset, please try again + Database connection reset, please try again + + + Database connection was closed and reconnected + Database connection was closed and reconnected + + + Database error + Database error + + + Database Error + Database Error + + + Database execution failed + Database execution failed + + + Database name contains special characters that are not supported + Database name contains special characters that are not supported + + + Database returned null. Check postgres function '{0}' + Database returned null. Check postgres function '{0}' + + + Database translation canceled. + Database translation canceled. + + + Database translation failed. + Database translation failed. + + + Database translation successful to + Database translation successful to + + + Data insertion completed: {0} successful, {1} errors. + Data insertion completed: {0} successful, {1} errors. + + + Data is ok. You can try to generate the INP file + Data is ok. You can try to generate the INP file + + + Data retrieved and displayed successfully. + Data retrieved and displayed successfully. + + + Date + Date + + + Date from: + Date from: + + + Date interval not valid! + Date interval not valid! + + + Date of creation + Date of creation + + + Date of creation: {project_date_create} + Date of creation: {project_date_create} + + + Date of last update + Date of last update + + + Date of last update: {project_date_update} + Date of last update: {project_date_update} + + + Date to: + Date to: + + + Decode error reading inp file + Decode error reading inp file + + + Default Built Date + Default Built Date + + + Delete Lot(s) + Delete Lot(s) + + + Delete mincut + Delete mincut + + + Delete profile + Delete profile + + + Delete records + Delete records + + + Delete records + Delete records + + + Delete Workorder(s) + Delete Workorder(s) + + + Description + Description + + + Detail + Detail + + + Diameter + Diameter + + + Did not save to cache because HTTP status code is not OK + Did not save to cache because HTTP status code is not OK + + + Discarding the `gdf_nodes` 'geometry' column, though its values differ from the coordinates in the 'x' and 'y' columns. + Discarding the `gdf_nodes` 'geometry' column, though its values differ from the coordinates in the 'x' and 'y' columns. + + + Disconnect elements + Disconnect elements + + + `dist_type` must be 'bbox' or 'network'. + `dist_type` must be 'bbox' or 'network'. + + + Document already exist + Document already exist + + + Document already exists + Document already exists + + + Document deleted + Document deleted + + + Document inserted successfully + Document inserted successfully + + + Document name not found + Document name not found + + + Document PDF created in + Document PDF created in + + + Documents deleted successfully + Documents deleted successfully + + + DOWNGRADE NODE + DOWNGRADE NODE + + + Do you want change it and continue? + Do you want change it and continue? + + + Do you want to continue? + Do you want to continue? + + + Do you want to copy its values to the current node? + Do you want to copy its values to the current node? + + + Do you want to insert {0} selected features? (First 50: {1} ...) + Do you want to insert {0} selected features? (First 50: {1} ...) + + + Do you want to insert the selected features? + Do you want to insert the selected features? + + + Do you want to insert the selected features? {0} + Do you want to insert the selected features? {0} + + + Do you want to open GIS project? + Do you want to open GIS project? + + + Do you want to overwrite custom values? + Do you want to overwrite custom values? + + + Do you want to overwrite file? + Do you want to overwrite file? + + + Do you want to proceed? + Do you want to proceed? + + + Do you want to save changes to dscenario + Do you want to save changes to dscenario + + + Do you want to set this psector as current? + Do you want to set this psector as current? + + + DRAIN plugin not found + DRAIN plugin not found + + + Draw a pipe connected to two nodes + Draw a pipe connected to two nodes + + + Draw a point on the map inside created map zones + Draw a point on the map inside created map zones + + + Draw Profile + Draw Profile + + + Dscenario manager + Dscenario manager + + + During task '{0}, function {1} returned False + During task '{0}, function {1} returned False + + + DWF scenario manager + DWF scenario manager + + + Each query must be a dict or a string. + Each query must be a dict or a string. + + + Edge 'length' and 'speed_kph' values must be non-null. + Edge 'length' and 'speed_kph' values must be non-null. + + + Either `node_size` or `edge_linewidth` must be > 0 to plot something. + Either `node_size` or `edge_linewidth` must be > 0 to plot something. + + + Element + Element + + + ELEMENT + ELEMENT + + + Element does not exist + Element does not exist + + + Elevation API did not return a dict of results. + Elevation API did not return a dict of results. + + + Empty coordinate list + Empty coordinate list + + + Empty data + Empty data + + + Empty value detected in 'Diameter' tab. Please enter a value for diameter. + Empty value detected in 'Diameter' tab. Please enter a value for diameter. + + + Encode error reading inp file + Encode error reading inp file + + + End date + End date + + + English locale not found + English locale not found + + + Epa2data execution failed. See logs for more details... + Epa2data execution failed. See logs for more details... + + + Epa2data execution successful. + Epa2data execution successful. + + + EPA model finished. + EPA model finished. + + + Epatools Plugin + Epatools Plugin + + + EPSG: {self.project_epsg} + EPSG: {self.project_epsg} + + + (Error {}) + (Error {}) + + + Error + Error + + + Error + Error + + + Error: '{0}' or '{1}' field is missing in the result. + Error: '{0}' or '{1}' field is missing in the result. + + + Error assigning team: {0} + Error assigning team: {0} + + + Error connecting to database (layer) + Error connecting to database (layer) + + + Error connecting to database (settings) + Error connecting to database (settings) + + + Error connecting to i18n dataabse + Error connecting to i18n dataabse + + + Error connecting to i18n database + Error connecting to i18n database + + + Error connecting to origin database + Error connecting to origin database + + + Error: Could not extract message from line: {0} + Error: Could not extract message from line: {0} + + + Error creating auxiliary connection for vacuum + Error creating auxiliary connection for vacuum + + + Error creating composer + Error creating composer + + + Error creating dynamic dialog: {0} + Error creating dynamic dialog: {0} + + + Error creating or updating organization + Error creating or updating organization + + + Error creating or updating team + Error creating or updating team + + + Error creating or updating team + Error creating or updating team + + + Error creating or updating user in cat_user table. + Error creating or updating user in cat_user table. + + + Error creating Workcat. + Error creating Workcat. + + + Error. Database returned null. Check postgres function '{0}' + Error. Database returned null. Check postgres function '{0}' + + + Error deleting data + Error deleting data + + + Error deleting profile + Error deleting profile + + + Error deleting records + Error deleting records + + + Error deleting row + Error deleting row + + + Error deleting row: {0} - Query: {1} + Error deleting row: {0} - Query: {1} + + + Error during point selection: {0} + Error during point selection: {0} + + + Error executing gw_fct_create_dscenario_empty + Error executing gw_fct_create_dscenario_empty + + + Error executing gw_fct_import_swmm_flwreg + Error executing gw_fct_import_swmm_flwreg + + + Error executing vacuum: {0} + Error executing vacuum: {0} + + + Error fetching existing primary keys + Error fetching existing primary keys + + + Error fetching existing primary keys: {0} + Error fetching existing primary keys: {0} + + + Error finding string + Error finding string + + + Error fusing arcs + Error fusing arcs + + + Error getting current psector + Error getting current psector + + + Error getting database parameters + Error getting database parameters + + + Error getting default connection (settings) + Error getting default connection (settings) + + + Error getting exploitation + Error getting exploitation + + + Error getting locale from schema: {0} + Error getting locale from schema: {0} + + + Error getting pgRouting version + Error getting pgRouting version + + + Error getting table name from selected layer + Error getting table name from selected layer + + + Error getting table values: {0} + Error getting table values: {0} + + + Error importing IBERGIS project + Error importing IBERGIS project + + + Error inserting element in table, you need to review data + Error inserting element in table, you need to review data + + + Error inserting node + Error inserting node + + + Error inserting profile table, you need to review data + Error inserting profile table, you need to review data + + + Error inserting row: {0} + Error inserting row: {0} + + + Error logging + Error logging + + + Error near line + Error near line + + + Error near line {0} -> {1} + Error near line {0} -> {1} + + + Error on create auto mincut + Error on create auto mincut, you need to review data + + + Error on create auto mincut, you need to review data + Error on create auto mincut, you need to review data + + + Error parsing file: {0} + Error parsing file: {0} + + + Error processing muni_id {0}: {1} + Error processing muni_id {0}: {1} + + + Error reading configuration file: {0} + Error reading configuration file: {0} + + + Error reading file + Error reading file + + + Error reading file '{0}': {1} + Error reading file '{0}': {1} + + + Error reading file {0}: {1} + Error reading file {0}: {1} + + + Error removing team assignment: {0} + Error removing team assignment: {0} + + + Error replacing feature + Error replacing feature + + + Error replacing feature. Chose a valid catalog. + Error replacing feature. Chose a valid catalog. + + + Error saving lot. + Error saving lot. + + + Error saving lot. + Error saving lot. + + + Error saving the configuration + Error saving the configuration + + + Error setting node + Error setting node + + + Error toggling state: {0} + Error toggling state: {0} + + + Error translating: {0} + Error translating: {0} + + + Error type + Error type + + + Error updating: {0}. + Error updating: {0}. + + + Error updating: {0}.\n + Error updating: {0}.\n + + + Error updating element in table + Error updating element in table, you need to review data + + + Error updating element in table, you need to review data + Error updating element in table, you need to review data + + + Error updating expl_id: {0} + Error updating expl_id: {0} + + + Error updating message + Error updating message + + + Error updating messages + Error updating messages + + + Error updating table + Error updating table + + + Event deleted + Event deleted + + + EXCEPTION + EXCEPTION + + + Exception: {0} + Exception: {0} + + + Exception: {0}. + Exception: {0}. + + + EXCEPTION: {0}, {1} + EXCEPTION: {0}, {1} + + + Exception error: {0} + Exception error: {0} + + + Exception in {0} + Exception in {0} + + + Exception in {0} (executing {1} from {2}): {3} + Exception in {0} (executing {1} from {2}): {3} + + + Exception in info + Exception in info + + + Exception in info (def _get_id) + Exception in info (def _get_id) + + + Exception in unload when {0} + Exception in unload when {0} + + + Exception in unload when deleting {0} + Exception in unload when deleting {0} + + + Exception in unload when disconnecting {0} signal + Exception in unload when disconnecting {0} signal + + + Exception in unload when reset values for {0} + Exception in unload when reset values for {0} + + + Exception in unload when unset signals + Exception in unload when unset signals + + + Exception message not shown to user + Exception message not shown to user + + + Exception when replacing inp strings + Exception when replacing inp strings + + + Exception while moving/deleting old user config files + Exception while moving/deleting old user config files + + + Execute '{0}' + Execute '{0}' + + + Execute epa model + Execute epa model + + + Execute EPA software + Execute EPA software + + + Execute failed. + Execute failed. + + + Execute function '{0}' + Execute function '{0}' + + + Executing + Executing + + + Executing vacuum + Executing vacuum + + + Execution of {0} failed. + Execution of {0} failed. + + + Export done succesfully + Export done succesfully + + + Export INP file into PostgreSQL + Export INP file into PostgreSQL + + + Export INP finished. + Export INP finished. + + + Expression Error + Expression Error + + + FAIL {0} + FAIL {0} + + + Failed to add feature + Failed to add feature + + + Failed to configure layer '{0}'. Skipping... + Failed to configure layer '{0}'. Skipping... + + + Failed to create database user '{0}'. The user might already exist in the database. + Failed to create database user '{0}'. The user might already exist in the database. + + + Failed to delete records from {0}. + Failed to delete records from {0}. + + + Failed to delete style group + Failed to delete style group + + + Failed to delete styles + Failed to delete styles + + + Failed to drop database user '{0}'. It may need to be removed manually. + Failed to drop database user '{0}'. It may need to be removed manually. + + + Failed to execute the mapzones analysis. + Failed to execute the mapzones analysis. + + + Failed to fetch dialog configuration + Failed to fetch dialog configuration + + + Failed to fetch dialog configuration + Failed to fetch dialog configuration + + + Failed to get a valid response from gw_fct_config_mapzones. + Failed to get a valid response from gw_fct_config_mapzones. + + + Failed to load campaign form. + Failed to load campaign form. + + + Failed to load campaign form. + Failed to load campaign form. + + + Failed to load layers + Failed to load layers + + + Failed to load layers. + Failed to load layers. + + + Failed to load lot form. + Failed to load lot form. + + + Failed to load lot form. + Failed to load lot form. + + + Failed to load team creation dialog configuration. Please check database configuration. + Failed to load team creation dialog configuration. Please check database configuration. + + + Failed to load workorder form. + Failed to load workorder form. + + + Failed to load workorder form. + Failed to load workorder form. + + + Failed to rename user from '{0}' to '{1}'. The new name might already be in use in the database. + Failed to rename user from '{0}' to '{1}'. The new name might already be in use in the database. + + + Failed to retrieve GeoJSON data. + Failed to retrieve GeoJSON data. + + + Failed to retrieve graph configuration. + Failed to retrieve graph configuration. + + + Failed to retrieve mapzone styles. + Failed to retrieve mapzone styles. + + + Failed to retrieve sector features. + Failed to retrieve sector features. + + + Failed to retrieve the temporal layer + Failed to retrieve the temporal layer + + + Failed to save campaign + Failed to save campaign + + + Failed to save campaign + Failed to save campaign + + + Failed to set {0} scenario + Failed to set {0} scenario + + + Failed to set netscenario + Failed to set netscenario + + + Failed to set psector + Failed to set psector + + + Failed to set ValueRelation for field '{0}': {1} + Failed to set ValueRelation for field '{0}': {1} + + + Failed to update category + Failed to update category + + + Failed to update category: + Failed to update category: + + + Failed to update password for user '{0}'. + Failed to update password for user '{0}'. + + + Failed to update styles + Failed to update styles + + + Failing data: {0} + Failing data: {0} + + + Feature added successfully! + Feature added successfully! + + + Feature already in the list + Feature already in the list + + + Feature has not been updated because no catalog has been selected + Feature has not been updated because no catalog has been selected + + + Feature ID and Idval cannot be empty. + Feature ID and Idval cannot be empty. + + + Feature_id is mandatory. + Feature_id is mandatory. + + + Feature not upserted + Feature not upserted + + + Feature replaced successfully + Feature replaced successfully + + + Feature upserted + Feature upserted + + + Field catalog_id required! + Field catalog_id required! + + + Field child_layer of id: + Field child_layer of id: + + + File '{0}' not found in: {1} + File '{0}' not found in: {1} + + + File cannot be created. Check if it is already opened + File cannot be created. Check if it is already opened + + + File created successfully + File created successfully + + + File extension not valid + File extension not valid + + + File INP not found + File INP not found + + + File name + File name + + + File name is required + File name is required + + + File not found + File not found + + + File not found: {0} + File not found: {0} + + + File path doesn't exist + File path doesn't exist + + + File path doesn't exist or you dont have permission or file is opened + File path doesn't exist or you dont have permission or file is opened + + + File path not found + File path not found + + + File RPT not found + File RPT not found + + + Files defined in environment variables '{0}' and '{1}' not found. + Files defined in environment variables '{0}' and '{1}' not found. + + + Fill table + Fill table + + + Filter + Filter + + + Filter by code + Filter by code + + + Filter by ext_code + Filter by ext_code + + + Finished plotting the graph + Finished plotting the graph + + + First iteration + First iteration + + + First node already selected with id: {0}. Select second one. + First node already selected with id: {0}. Select second one. + + + Flood analysis will start from node ID + Flood analysis will start from node ID + + + FLOW REGULATORS + FLOW REGULATORS + + + FLOWTRACE + FLOWTRACE + + + Folder not found + Folder not found + + + Folder path + Folder path + + + Force commit + Force commit + + + For select on canvas is mandatory to load v_asset_arc_input layer + For select on canvas is mandatory to load v_asset_arc_input layer + + + Found no graph nodes within the requested polygon. + Found no graph nodes within the requested polygon. + + + Fragility curve + Fragility curve + + + From {0}, updating {1}... + From {0}, updating {1}... + + + Full Example + Full Example + + + Function {0} error: {1} from last function is invalid + Function {0} error: {1} from last function is invalid + + + Function {0} error: {1} returned null + Function {0} error: {1} returned null + + + Function {0} error: missing key {1} + Function {0} error: missing key {1} + + + Function {0} failed + Function {0} failed + + + Function {0} finished successfully + Function {0} finished successfully + + + Function {0} returned {1} + Function {0} returned {1} + + + Function '{0}' returned False + Function '{0}' returned False + + + Function {0} returned False + Function {0} returned False + + + Function error: {0} + Function error: {0} + + + Function failed finished + Function failed finished + + + Function gw_fct_create_dscenario_empty returned no dscenario_id + Function gw_fct_create_dscenario_empty returned no dscenario_id + + + Function gw_fct_duplicate_psector executed with no result + Function gw_fct_duplicate_psector executed with no result + + + Function gw_fct_psector_duplicate executed with no result + Function gw_fct_psector_duplicate executed with no result + + + Function gw_fct_setfeaturedelete executed with no result + Function gw_fct_setfeaturedelete executed with no result + + + Function name + Function name + + + Function not found + Function not found + + + Function not found in database + Function not found in database + + + Function not found in database: {0} + Function not found in database: {0} + + + G. Boeing, + G. Boeing, + + + `gdf_edges` must be multi-indexed by `(u, v, key)`. + `gdf_edges` must be multi-indexed by `(u, v, key)`. + + + `gdf` must have a valid CRS and cannot be empty. + `gdf` must have a valid CRS and cannot be empty. + + + `gdf_nodes` and `gdf_edges` must each be uniquely indexed. + `gdf_nodes` and `gdf_edges` must each be uniquely indexed. + + + `gdf_nodes` must contain 'x' and 'y' columns. + `gdf_nodes` must contain 'x' and 'y' columns. + + + Generating markdown for {0}. + Generating markdown for {0}. + + + Generating markdown from {0}... + Generating markdown from {0}... + + + Generating result stats + Generating result stats + + + Generation of atlas uses v_edit_plan_psector as coverage layer ordered by atlas_id column. Please update the atlas' coverage layer before continuing. + Generation of atlas uses v_edit_plan_psector as coverage layer ordered by atlas_id column. Please update the atlas' coverage layer before continuing. + + + Generation of atlas uses ve_plan_psector as coverage layer ordered by atlas_id column. Please update the atlas' coverage layer before continuing. + Generation of atlas uses ve_plan_psector as coverage layer ordered by atlas_id column. Please update the atlas' coverage layer before continuing. + + + Geometry has been added! + Geometry has been added! + + + Geometry must be a shapely Polygon or MultiPolygon. + Geometry must be a shapely Polygon or MultiPolygon. + + + Geometry must be a shapely Polygon or MultiPolygon. If you requested graph from place name, make sure your query resolves to a Polygon or MultiPolygon, and not some other geometry, like a Point. See OSMnx documentation for details. + Geometry must be a shapely Polygon or MultiPolygon. If you requested graph from place name, make sure your query resolves to a Polygon or MultiPolygon, and not some other geometry, like a Point. See OSMnx documentation for details. + + + Geometry set correctly. + Geometry set correctly. + + + Geometry type ({0}) not found in layer: {1} + Geometry type ({0}) not found in layer: {1} + + + `geom` must be a LineString. + `geom` must be a LineString. + + + Getting {0} from .{1} file + Getting {0} from .{1} file + + + Getting auxiliary data from DB + Getting auxiliary data from DB + + + Getting leak data from DB + Getting leak data from DB + + + Getting pipe data from DB + Getting pipe data from DB + + + `G` is a MultiDiGraph, so edge bearings will be directional (one per edge). If you want bidirectional edge bearings (two reciprocal bearings per edge), pass a MultiGraph instead. Use `convert.to_undirected`. + `G` is a MultiDiGraph, so edge bearings will be directional (one per edge). If you want bidirectional edge bearings (two reciprocal bearings per edge), pass a MultiGraph instead. Use `convert.to_undirected`. + + + GIS file generated successfully + GIS file generated successfully + + + GIS file name not set + GIS file name not set + + + GIS folder not set + GIS folder not set + + + Giswater executable file not found + Giswater executable file not found + + + Giswater folder not found + Giswater folder not found + + + Giswater plugin cannot be loaded + Giswater plugin cannot be loaded + + + GitHub Issues + GitHub Issues + + + GLOBAL + GLOBAL + + + Go2Epa + Go2Epa + + + Go2Epa task is already active! + Go2Epa task is already active! + + + Go2Iber task is already active! + Go2Iber task is already active! + + + Graph contains no edges. + Graph contains no edges. + + + Graph contains no nodes. + Graph contains no nodes. + + + Graph must be unprojected to add edge bearings. + Graph must be unprojected to add edge bearings. + + + Graph must be unprojected to analyze edge bearings. + Graph must be unprojected to analyze edge bearings. + + + Graph must be unsimplified to save as OSM XML. + Graph must be unsimplified to save as OSM XML. + + + Graph nodes changed since `street_count`s were calculated + Graph nodes changed since `street_count`s were calculated + + + Graph should be unprojected to save as OSM XML: the existing projected x-y coordinates will be saved as lat-lon node attributes. Project your graph back to lat-lon to avoid this. + Graph should be unprojected to save as OSM XML: the existing projected x-y coordinates will be saved as lat-lon node attributes. Project your graph back to lat-lon to avoid this. + + + Group '{0}' not found in layer tree. + Group '{0}' not found in layer tree. + + + `G` should be undirected to avoid oversampling bidirectional edges. + `G` should be undirected to avoid oversampling bidirectional edges. + + + GSW file not found + GSW file not found + + + Gully + Gully + + + GULLY + GULLY + + + `Gu` must be undirected. + `Gu` must be undirected. + + + gw_fct_setlinktonetwork (Check log messages) + gw_fct_setlinktonetwork (Check log messages) + + + gw_fct_set_rpt_archived execution failed. See logs for more details... + gw_fct_set_rpt_archived execution failed. See logs for more details... + + + Gw Selectors: + Gw Selectors: + + + Hemisphere of the node has been updated. Value is + Hemisphere of the node has been updated. Value is + + + Here you can choose how the pumps and valves will be imported, either left as arcs (virual arcs) or converted to nodes. + Here you can choose how the pumps and valves will be imported, either left as arcs (virual arcs) or converted to nodes. + + + Here you can choose how the pumps, weirs, orifices, and outlets will be imported, either left as arcs (virual arcs) or converted to flwreg. + Here you can choose how the pumps, weirs, orifices, and outlets will be imported, either left as arcs (virual arcs) or converted to flwreg. + + + {hostname!r} responded {response.status_code} {response.reason}: we'll retry in {error_pause} secs + {hostname!r} responded {response.status_code} {response.reason}: we'll retry in {error_pause} secs + + + {hostname!r} responded {response.status_code} {response.reason}: we'll retry in {this_pause} secs + {hostname!r} responded {response.status_code} {response.reason}: we'll retry in {this_pause} secs + + + Hydrology scenario manager + Hydrology scenario manager + + + IBERGIS plugin not found + IBERGIS plugin not found + + + IBERGIS project imported successfully + IBERGIS project imported successfully + + + Id already selected + Id already selected + + + Identify all + Identify all + + + Identifying all nodes that lie outside the polygon... + Identifying all nodes that lie outside the polygon... + + + If not, you can ignore the tab. + If not, you can ignore the tab. + + + If you chose to import the flow regulators as flwreg objects, the sixth tab is where you can select the catalog for each flow regulator (pumps, weirs, orifices, outlets) on the network. + If you chose to import the flow regulators as flwreg objects, the sixth tab is where you can select the catalog for each flow regulator (pumps, weirs, orifices, outlets) on the network. + + + If you have any questions, please contact the Giswater team via + If you have any questions, please contact the Giswater team via + + + If you have different addfields in your feature, they will be deleted. + If you have different addfields in your feature, they will be deleted. + + + Ignoring cache file {str(cache_filepath)!r} because it contains a remark: {response_json['remark']!r} + Ignoring cache file {str(cache_filepath)!r} because it contains a remark: {response_json['remark']!r} + + + Import failed + Import failed + + + IMPORT INP + IMPORT INP + + + Import INP is only available on Python 3.10 or higher. Please update your QGIS's Python version. + Import INP is only available on Python 3.10 or higher. Please update your QGIS's Python version. + + + Import INP is still in developement. It may not work as intended yet. Please report any unexpected behaviour to the Giswater team. + Import INP is still in developement. It may not work as intended yet. Please report any unexpected behaviour to the Giswater team. + + + Import OSM Streetaxis is only available on Python 3.10 or higher. + Import OSM Streetaxis is only available on Python 3.10 or higher. + + + Import OSM Streetaxis its only for WS projects + Import OSM Streetaxis its only for WS projects + + + Import RPT file + Import RPT file + + + Import rpt file........: {0} + Import rpt file........: {0} + + + Import RPT file finished. + Import RPT file finished. + + + Incompatible version of PostgreSQL + Incompatible version of PostgreSQL + + + Incorrect languages, make sure to have the giswater project in english + Incorrect languages, make sure to have the giswater project in english + + + Incorrect user or password + Incorrect user or password + + + Info + Info + + + Info + Info + + + Info Message + Info Message + + + Information about exception + Information about exception + + + Initialize plugin + Initialize plugin + + + In order to create a qgis project you have to create a schema first . + In order to create a qgis project you have to create a schema first . + + + In order to create a qgis project you have to create a schema first. + In order to create a qgis project you have to create a schema first. + + + INP file couldn't be imported: + INP file couldn't be imported: + + + INP file couldn't be imported:\n{0} + INP file couldn't be imported:\n{0} + + + INP file not found + INP file not found + + + Inp Options + Inp Options + + + In schema + In schema + + + Interpolate tool. + Interpolate tool. + + + Interpolate tool.\nTo modify columns (top_elev, ymax, elev among others) to be interpolated set variable edit_node_interpolate on table config_param_user + Interpolate tool.\nTo modify columns (top_elev, ymax, elev among others) to be interpolated set variable edit_node_interpolate on table config_param_user + + + Interrupted because `settings.cache_only_mode=True`. + Interrupted because `settings.cache_only_mode=True`. + + + Invalid {0} '{1}' provided. No configuration performed. + Invalid {0} '{1}' provided. No configuration performed. + + + Invalid arccat_ids: {0}. + Invalid arccat_ids: {0}. + + + Invalid arccat_ids: {1}. + Invalid arccat_ids: {1}. + + + Invalid arccat_ids: {list}. + Invalid arccat_ids: {list}. + + + Invalid buffer value. Please enter an integer less than 1000. + Invalid buffer value. Please enter an integer less than 1000. + + + Invalid buffer value. Please enter an valid integer. + Invalid buffer value. Please enter an valid integer. + + + Invalid campaign ID. + Invalid campaign ID. + + + Invalid campaign ID. + Invalid campaign ID. + + + Invalid campaign mode + Invalid campaign mode + + + Invalid compliance value for diameter + Invalid compliance value for diameter + + + Invalid compliance value for material + Invalid compliance value for material + + + Invalid diameters: {1}. + Invalid diameters: {1}. + + + Invalid diameters: {list}. + Invalid diameters: {list}. + + + Invalid lot ID. + Invalid lot ID. + + + Invalid lot ID. + Invalid lot ID. + + + Invalid materials: {3}. + Invalid materials: {3}. + + + Invalid materials: {list}. + Invalid materials: {list}. + + + Invalid value for field + Invalid value for field + + + Invalid value for scenario_results in [OPTIONS] section. + Invalid value for scenario_results in [OPTIONS] section. + + + Invalid value for type of priority dialog. Please pass either 'GLOBAL' or 'SELECTION'. Value passed: + Invalid value for type of priority dialog. Please pass either 'GLOBAL' or 'SELECTION'. Value passed: + + + Invalid WKT string + Invalid WKT string + + + Invalid workorder ID. + Invalid workorder ID. + + + Invalid workorder ID. + Invalid workorder ID. + + + INVENTORY + INVENTORY + + + Inventory Example + Inventory Example + + + is not defined in table cat_feature + is not defined in table cat_feature + + + It will then show the log of the process in the last tab. + It will then show the log of the process in the last tab. + + + IVI + IVI + + + Java executable file not found + Java executable file not found + + + Java folder not found + Java folder not found + + + Java Runtime executable file not found + Java Runtime executable file not found + + + KEEP OPERATIVE + KEEP OPERATIVE + + + Key + Key + + + key 'comboIds' or/and comboNames not found WHERE columname='{0}' AND + key 'comboIds' or/and comboNames not found WHERE columname='{0}' AND + + + key 'comboIds' or/and comboNames not found WHERE columname='{0}' AND widgetname='{1}' + key 'comboIds' or/and comboNames not found WHERE columname='{0}' AND widgetname='{1}' + + + key 'comboIds' or/and comboNames not found WHERE widgetname='{0}' AND widgettype='{1}' + key 'comboIds' or/and comboNames not found WHERE widgetname='{0}' AND widgettype='{1}' + + + Key container + Key container + + + Key not found + Key not found + + + Key not found: '{0}' + Key not found: '{0}' + + + Key on returned json from ddbb is missed + Key on returned json from ddbb is missed + + + Key on returned json from ddbb is missed. + Key on returned json from ddbb is missed. + + + Language + Language + + + Language: {self.project_language} + Language: {self.project_language} + + + Layer {0} does not found, therefore, not configured + Layer {0} does not found, therefore, not configured + + + Layer '{0}' is None and settings is None + Layer '{0}' is None and settings is None + + + Layer '{0}' not found in QGIS. + Layer '{0}' not found in QGIS. + + + Layer failed to load! + Layer failed to load! + + + Layer is broken + Layer is broken + + + Layer not found + Layer not found + + + Layer of CM project will be added to the project when create + Layer of CM project will be added to the project when create + + + Layers of your role not found + Layers of your role not found + + + Layout not found + Layout not found + + + layoutorder not found. + layoutorder not found. + + + Leak Assignation + Leak Assignation + + + Leaks assigned by diameter only: {leaks}. + Leaks assigned by diameter only: {leaks}. + + + Leaks assigned by material and diameter: {leaks}. + Leaks assigned by material and diameter: {leaks}. + + + Leaks assigned by material only: {leaks}. + Leaks assigned by material only: {leaks}. + + + Leaks assigned to any nearby pipes: {leaks}. + Leaks assigned to any nearby pipes: {leaks}. + + + Leaks within the indicated period: {leaks}. + Leaks within the indicated period: {leaks}. + + + Leaks without pipes intersecting its buffer: {leaks}. + Leaks without pipes intersecting its buffer: {leaks}. + + + levels + levels + + + LIDS + LIDS + + + Line number + Line number + + + Link + Link + + + LINK + LINK + + + Load all + Load all + + + .*loadtxt: input contained no data* + .*loadtxt: input contained no data* + + + Locale gis folder not found + Locale gis folder not found + + + Locale not found + Locale not found + + + Locale not found ({0}) + Locale not found ({0}) + + + Log file + Log file + + + Lot ID is missing. + Lot ID is missing. + + + Make sure graph was created with `ox.settings.all_oneway=True` to save as OSM XML. + Make sure graph was created with `ox.settings.all_oneway=True` to save as OSM XML. + + + Mandatory field is missing. Please + Mandatory field is missing. Please set a value + + + Mandatory field is missing. Please, set a value + Mandatory field is missing. Please, set a value + + + Mandatory field is missing. Please, set a value for field + Mandatory field is missing. Please, set a value for field + + + MAP ZONES + MAP ZONES + + + Mapzones analysis completed successfully. + Mapzones analysis completed successfully. + + + Markdown Generated from {0}. + Markdown Generated from {0}. + + + Marked values must be greater than 0 + Marked values must be greater than 0 + + + MASTERPLAN + MASTERPLAN + + + Material + Material + + + Matplotlib cannot be installed automatically. Please install Matplotlib manually. + Matplotlib cannot be installed automatically. Please install Matplotlib manually. + + + Matplotlib installed successfully. Please restart QGIS. + Matplotlib installed successfully. Please restart QGIS. + + + matplotlib must be installed as an optional dependency for visualization. + matplotlib must be installed as an optional dependency for visualization. + + + Matplotlib Python package not found. Do you want to install Matplotlib? + Matplotlib Python package not found. Do you want to install Matplotlib? + + + Max. Longevity + Max. Longevity + + + Max rleak: {rleak} leaks/km.year. + Max rleak: {rleak} leaks/km.year. + + + Med. Longevity + Med. Longevity + + + Merge requires at least 2 psectors to be selected + Merge requires at least 2 psectors to be selected + + + Message + Message + + + Message error + Message error + + + Metadata file not found + Metadata file not found + + + Method of calculation not defined in configuration file. Please check config file. + Method of calculation not defined in configuration file. Please check config file. + + + MINCUT + MINCUT + + + Mincut canceled! + Mincut canceled! + + + Mincut done + Mincut done, but has conflict and overlaps with + + + Mincut done, but has conflict and overlaps with + Mincut done, but has conflict and overlaps with + + + Mincut done, but has conflict and overlaps with other mincuts + Mincut done, but has conflict and overlaps with other mincuts + + + Mincut done, but has conflict. Take a look on the anl_arc and anl_node to see the details of the conflict + Mincut done, but has conflict. Take a look on the anl_arc and anl_node to see the details of the conflict + + + Mincut done successfully + Mincut done successfully + + + Mincut task is already active! + Mincut task is already active! + + + Min. Longevity + Min. Longevity + + + ...min_message_level + ...min_message_level + + + Min non-zero rleak: {rleak} leaks/km.year. + Min non-zero rleak: {rleak} leaks/km.year. + + + Missing Data + Missing Data + + + Missing required fields + Missing required fields + + + Missing required fields + Missing required fields + + + ... (more hidden) ... + ... (more hidden) ... + + + More than one feature selected. Only the first one will be processed! + More than one feature selected. Only the first one will be processed! + + + More then one document selected. Select just one document. + More then one document selected. Select just one document. + + + More then one event selected. Select just one + More than one event selected. Select just one + + + Move node: Error updating geometry + Move node: Error updating geometry + + + Multiple psectors selected. Please select only one. + Multiple psectors selected. Please select only one. + + + Municipality with ID: {0} deleted from selection + Municipality with ID: {0} deleted from selection + + + Municipality with id[{0}] is already imported on om_streetaxis. + Municipality with id[{0}] is already imported on om_streetaxis. + + + Municipality with id[{0}] is already imported on om_streetaxis.\n\rDo you want to overwrite it?\n\r(This decision will not cancel the other selections, the process will keep running) + Municipality with id[{0}] is already imported on om_streetaxis.\n\rDo you want to overwrite it?\n\r(This decision will not cancel the other selections, the process will keep running) + + + \n + \n + + + Name + Name + + + Name, description and code are required fields + Name, description and code are required fields + + + NETSCENARIO + NETSCENARIO + + + NETWORK + NETWORK + + + Newest leak + Newest leak + + + New feature type is null. Please + New feature type is null. Please, select a valid value + + + New feature type is null. Please, select a valid value + New feature type is null. Please, select a valid value + + + New feature type is null. Please, select a valid value. + New feature type is null. Please, select a valid value. + + + New value + New value + + + Next + Next + + + No action found + No action found + + + No campaign selected. + No campaign selected. + + + No campaign selected. + No campaign selected. + + + No composers found. + No composers found. + + + No current netscenario + No current netscenario + + + No current psector selected + No current psector selected + + + No data elements in server response. Check query location/filters and log. + No data elements in server response. Check query location/filters and log. + + + Node + Node + + + NODE + NODE + + + Node 1 selected + Node 1 selected + + + Node already selected + Node already selected + + + Node deleted successfully + Node deleted successfully + + + Node id: + Node id: + + + Node psector: {0} + Node psector: {0} + + + Node replaced successfully + Node replaced successfully + + + Node set correctly + Node set correctly + + + Node type has been updated! + Node type has been updated! + + + No document selected. + No document selected. + + + No event provided for point selection + No event provided for point selection + + + No features found in the selection for {0}. + No features found in the selection for {0}. + + + No features found in the selection for the enabled tabs ({0}). + No features found in the selection for the enabled tabs ({0}). + + + NO FEATURE TYPE DEFINED + NO FEATURE TYPE DEFINED + + + No function associated to + No function associated to + + + No help file found + No help file found + + + No listValues for + No listValues for + + + No matching features. Check query location, tags, and log. + No matching features. Check query location, tags, and log. + + + Nominatim API did not return a list of results. + Nominatim API did not return a list of results. + + + Nominatim `request_type` must be 'search', 'reverse', or 'lookup'. + Nominatim `request_type` must be 'search', 'reverse', or 'lookup'. + + + No municipalities selected + No municipalities selected + + + None + None + + + No new features to insert. All selected features already exist in the table. + No new features to insert. All selected features already exist in the table. + + + No node ID found at the snapped location. + No node ID found at the snapped location. + + + No parameters found in section {0} + No parameters found in section {0} + + + No pictures for this event. + No pictures for this event. + + + No pipes found matching your budget. + No pipes found matching your budget. + + + No pipes found matching your selected filters. + No pipes found matching your selected filters. + + + No primary key value set + No primary key value set + + + No psector selected. Please select at least one. + No psector selected. Please select at least one. + + + No psector values + No psector values + + + No records found with selected 'result_id' + No records found with selected 'result_id' + + + No records selected + No records selected + + + No records selected + No records selected + + + No results + No results + + + No results found. Please check values set on selector of state and exploitation + No results found. Please check values set on selector of state and exploitation + + + No sector selected. Please select at least one. + No sector selected. Please select at least one. + + + No snapshots available. Please create a snapshot first or wait for tomorrow to travel since today. + No snapshots available. Please create a snapshot first or wait for tomorrow to travel since today. + + + No SQL context available. + No SQL context available. + + + Not '{0}' + Not '{0}' + + + Note: You can force the import by activating the variable '{0}' on the {1} file. + Note: You can force the import by activating the variable '{0}' on the {1} file. + + + Not found: {0} + Not found: {0} + + + No valid data received from the SQL function. + No valid data received from the SQL function. + + + No valid mapzones with values were found to apply styles. + No valid mapzones with values were found to apply styles. + + + No valid psector IDs found + No valid psector IDs found + + + No valid snapping result. Please select a valid point. + No valid snapping result. Please select a valid point. + + + No visit values + No visit values + + + No workcat values + No workcat values + + + Number of features selected in the group of + Number of features selected in the group of + + + Number of SQL files '{0}': {1} + Number of SQL files '{0}': {1} + + + Number of SQL files 'TOTAL': {0} + Number of SQL files 'TOTAL': {0} + + + Object already associated with this feature + Object already associated with this feature + + + Object id not found + Object id not found + + + Oldest leak + Oldest leak + + + Old value + Old value + + + OM + OM + + + Once you have configured all the necessary catalogs, you can click on the 'Accept' button to start the import process. + Once you have configured all the necessary catalogs, you can click on the 'Accept' button to start the import process. + + + Only FRELEM can be added to dscenario + Only FRELEM can be added to dscenario + + + Only one record can be selected + Only one record can be selected + + + Only rows with values are allowed to be deleted. + Only rows with values are allowed to be deleted. + + + On tab workcat set details of changing features to obsolete, on tab relations select affected features + On tab workcat set details of changing features to obsolete, on tab relations select affected features + + + On the other hand you must know that traceability table will storage precedent information. + On the other hand you must know that traceability table will storage precedent information. + + + or + or + + + `orig` and `dest` must be of equal length. + `orig` and `dest` must be of equal length. + + + `orig` and `dest` must either both be iterable or neither must be iterable. + `orig` and `dest` must either both be iterable or neither must be iterable. + + + or they were created by another user: + or they were created by another user: + + + OTHER + OTHER + + + our website + our website + + + Overpass API did not return a dict of results. + Overpass API did not return a dict of results. + + + Overwrite + Overwrite + + + Overwrite file + Overwrite file + + + Overwrite values + Overwrite values + + + Overwriting cache for %s %s + Overwriting cache for %s %s + + + Page not found. + Page not found. + + + Parameter '{0}' is None + Parameter '{0}' is None + + + Parameter button_function is null for button + Parameter button_function is null for button + + + Parameter functionName is null for button + Parameter functionName is null for button + + + Parameter functionName is null for check + Parameter functionName is null for check + + + Parameter not found + Parameter not found + + + Parameter not found: {parameter} + Parameter not found: {parameter} + + + Parameter 'Query text:' is mandatory for 'combo' widgets. Please set value. + Parameter 'Query text:' is mandatory for 'combo' widgets. Please set value. + + + Parameters related with 'searchplus' not set in table 'config_param_system' + Parameters related with 'searchplus' not set in table 'config_param_system' + + + Parameter widgetfunction is null for widget + Parameter widgetfunction is null for widget + + + Parameter widgetfunction is null for widget hyperlink + Parameter widgetfunction is null for widget hyperlink + + + Parameter widgetfunction not found for widget type hyperlink + Parameter widgetfunction not found for widget type hyperlink + + + Parent ID does not exist. + Parent ID does not exist. + + + Parent ID must be an integer. + Parent ID must be an integer. + + + Parsing error fixed + Parsing error fixed + + + Period of leaks: {years:.4g} years. + Period of leaks: {years:.4g} years. + + + PgRouting version + PgRouting version + + + pgRouting version is not compatible with Giswater. Please check wiki + pgRouting version is not compatible with Giswater. Please check wiki + + + pgRouting version: {self.pgrouting_version} + pgRouting version: {self.pgrouting_version} + + + PgRouting version: {self.pgrouting_version} + PgRouting version: {self.pgrouting_version} + + + Pipes with invalid arccat_ids: {0}. + Pipes with invalid arccat_ids: {0}. + + + Pipes with invalid arccat_ids: {0}.\nInvalid arccat_ids: {1}.\n\nAn arccat_id is considered invalid if it is not listed in the catalog configuration table. As a result, these pipes will NOT be assigned a priority value.\n\nDo you want to proceed? + Pipes with invalid arccat_ids: {0}.\nInvalid arccat_ids: {1}.\n\nAn arccat_id is considered invalid if it is not listed in the catalog configuration table. As a result, these pipes will NOT be assigned a priority value.\n\nDo you want to proceed? + + + Pipes with invalid arccat_ids: {qtd}. + Pipes with invalid arccat_ids: {qtd}. + + + Pipes with invalid diameters: {0}. + Pipes with invalid diameters: {0}. + + + Pipes with invalid diameters: {0}.\nInvalid diameters: {1}.\n\nA diameter value is considered invalid if it is zero, negative, NULL or greater than the maximum diameter in the configuration table. As a result, these pipes will NOT be assigned a priority value.\n\nDo you want to proceed? + Pipes with invalid diameters: {0}.\nInvalid diameters: {1}.\n\nA diameter value is considered invalid if it is zero, negative, NULL or greater than the maximum diameter in the configuration table. As a result, these pipes will NOT be assigned a priority value.\n\nDo you want to proceed? + + + Pipes with invalid diameters: {qtd}. + Pipes with invalid diameters: {qtd}. + + + Pipes with invalid materials: {0}.qtd + Pipes with invalid materials: {0}.qtd + + + Pipes with invalid materials: {2}. + Pipes with invalid materials: {2}. + + + Pipes with invalid materials: {qtd}. + Pipes with invalid materials: {qtd}. + + + Pipes with invalid pressures: {0}. + Pipes with invalid pressures: {0}. + + + Pipes with invalid pressures: {0}.\nThese pipes have no pressure information for their nodes. This will result in them receiving the maximum longevity value for their material, which may affect the final priority value.\n\nDo you want to proceed? + Pipes with invalid pressures: {0}.\nThese pipes have no pressure information for their nodes. This will result in them receiving the maximum longevity value for their material, which may affect the final priority value.\n\nDo you want to proceed? + + + Pipes with invalid pressures: {qtd}. + Pipes with invalid pressures: {qtd}. + + + Pipes with zero leaks per km per year: {pipes}. + Pipes with zero leaks per km per year: {pipes}. + + + Planified features cannot be replaced + Planified features cannot be replaced + + + Planned end date + Planned end date + + + Planned start date + Planned start date + + + Please + Please, select a project to delete + + + Please choose a csv file + Please choose a csv file + + + Please choose a different name. + Please choose a different name. + + + Please choose a valid path + Please choose a valid path + + + Please ensure that features has no undelete value on true. + Please ensure that features has no undelete value on true. + + + Please enter a demands dscenario name to proceed with this import. + Please enter a demands dscenario name to proceed with this import. + + + Please enter a new catalog name when the "{0}" option is selected. + Please enter a new catalog name when the "{0}" option is selected. + + + Please enter a valid integer for the built date range. + Please enter a valid integer for the built date range. + + + Please enter a valid integer for the cluster length. + Please enter a valid integer for the cluster length. + + + Please enter a valid integer for the maximum distance. + Please enter a valid integer for the maximum distance. + + + Please enter a valid integer for the number of years. + Please enter a valid integer for the number of years. + + + Please enter a valid number. + Please enter a valid number. + + + Please enter a valid number for the budget. + Please enter a valid number for the budget. + + + Please enter a valid target year. + Please enter a valid target year. + + + Please enter a Workcat_id to proceed with this import. + Please enter a Workcat_id to proceed with this import. + + + Please enter the diameter range in this format: [minimum factor]-[maximum factor]. For example, 0.75-1.5 + Please enter the diameter range in this format: [minimum factor]-[maximum factor]. For example, 0.75-1.5 + + + Please fill all fields in the dialog + Please fill all fields in the dialog + + + Please fill all mandatory fields (highlighted in red). + Please fill all mandatory fields (highlighted in red). + + + Please fill link catalog field in the dialog + Please fill link catalog field in the dialog + + + Please, introduce a result name + Please, introduce a result name + + + Please provide a result name. + Please provide a result name. + + + Please provide the repairing cost for diameter + Please provide the repairing cost for diameter + + + Please provide the replacing cost for diameter + Please provide the replacing cost for diameter + + + Please select a catalog item for all elements in the tabs: Features, Nodes, Arcs, Materials. + Please select a catalog item for all elements in the tabs: Features, Nodes, Arcs, Materials. + + + Please select a catalog item for all elements in the tabs: Nodes, Arcs, Materials, Features. + Please select a catalog item for all elements in the tabs: Nodes, Arcs, Materials, Features. + + + Please select a category to update. + Please select a category to update. + + + Please select a default raingage to proceed with this import. + Please select a default raingage to proceed with this import. + + + Please, select a diferent project name than current. + Please, select a diferent project name than current. + + + Please select a feature to add + Please select a feature to add + + + Please select a feature to remove + Please select a feature to remove + + + Please select a lot to open. + Please select a lot to open. + + + Please select a lot to open. + Please select a lot to open. + + + Please select a municipality to proceed with this import. + Please select a municipality to proceed with this import. + + + Please select an exploitation to proceed with this import. + Please select an exploitation to proceed with this import. + + + Please, select a project to delete + Please, select a project to delete + + + Please select a result with not empty type + Please select a result with not empty type + + + Please select a sector to proceed with this import. + Please select a sector to proceed with this import. + + + Please select a style group before adding a new style. + Please select a style group before adding a new style. + + + Please select a style group to delete. + Please select a style group to delete. + + + Please select a target year. + Please select a target year. + + + Please select a team to assign. + Please select a team to assign. + + + Please select at least one user to assign a team. + Please select at least one user to assign a team. + + + Please select at least one user to remove team assignment. + Please select at least one user to remove team assignment. + + + Please select a valid team to assign. + Please select a valid team to assign. + + + Please select a workcat id end + Please select a workcat id end + + + Please select a workorder to open. + Please select a workorder to open. + + + Please select a workorder to open. + Please select a workorder to open. + + + Please select one or more styles to delete. + Please select one or more styles to delete. + + + Please select one or more styles to update. + Please select one or more styles to update. + + + Please select only one result before changing its status. + Please select only one result before changing its status. + + + Please select rows to remove from the table + Please select rows to remove from the table + + + Plugin version not found + Plugin version not found + + + POLYGON + POLYGON + + + PostGis version + PostGis version + + + PostGis version: {self.postgis_version} + PostGis version: {self.postgis_version} + + + PostgreSQL PID: {0} + PostgreSQL PID: {0} + + + PostgreSQL version + PostgreSQL version + + + PostgreSQL version is not compatible with Giswater. Please check wiki + PostgreSQL version is not compatible with Giswater. Please check wiki + + + PostgreSQL version: {self.postgresql_version} + PostgreSQL version: {self.postgresql_version} + + + PostgreSQL version: {self.postgresql_version}\nPostGis version: {self.postgis_version}\npgRouting version: {self.pgrouting_version}\n \n + PostgreSQL version: {self.postgresql_version}\nPostGis version: {self.postgis_version}\npgRouting version: {self.pgrouting_version}\n \n + + + PostgreSQL version: {self.postgresql_version}\nPostGis version: {self.postgis_version}\nPgRouting version: {self.pgrouting_version}\n \nSchema name: {schema_name}\nVersion: {self.project_version}\nEPSG: {self.project_epsg}\nLanguage: {self.project_language}\nDate of creation: {project_date_create}\nDate of last update: {project_date_update}\n + PostgreSQL version: {self.postgresql_version}\nPostGis version: {self.postgis_version}\nPgRouting version: {self.pgrouting_version}\n \nSchema name: {schema_name}\nVersion: {self.project_version}\nEPSG: {self.project_epsg}\nLanguage: {self.project_language}\nDate of creation: {project_date_create}\nDate of last update: {project_date_update}\n + + + prefer + prefer + + + Price list csv file name is required + Price list csv file name is required + + + Price list detail csv file name is required + Price list detail csv file name is required + + + PRICES + PRICES + + + Print + Print + + + Priority Calculation (Selection) + Priority Calculation (Selection) + + + Prob. of Failure + Prob. of Failure + + + Process completed + Process completed + + + Process finished. + Process finished. + + + Process finished.\n\n + Process finished.\n\n + + + Process finished successfully + Process finished successfully + + + Process finished successfully: Delete schema + Process finished successfully: Delete schema + + + Process finished with some errors + Process finished with some errors + + + Processing folder + Processing folder + + + Processing muni_id {0} + Processing muni_id {0} + + + Profile + Profile + + + Profile deleted + Profile deleted + + + Profile name is mandatory. + Profile name is mandatory. + + + Project read finished + Project read finished + + + Project read finished with different versions on plugin metadata ({0}) and PostgreSQL sys_version table ({1}). + Project read finished with different versions on plugin metadata ({0}) and PostgreSQL sys_version table ({1}). + + + Project read started + Project read started + + + Project read successfully + Project read successfully + + + Project type + Project type + + + PSECTOR + PSECTOR + + + Psector '{0}' has no workcat_id value set. Do you want to continue with the default value? + Psector '{0}' has no workcat_id value set. Do you want to continue with the default value? + + + Psector could not be updated because of the following errors: + Psector could not be updated because of the following errors: + + + Psector features loaded successfully on the map. + Psector features loaded successfully on the map. + + + Psector ID + Psector ID + + + Psector ID not found + Psector ID not found + + + Psector is not archived + Psector is not archived + + + Psector name not found + Psector name not found + + + Psector removed from selector + Psector removed from selector + + + Psector values updated successfully + Psector values updated successfully + + + Python file + Python file + + + Python function + Python function + + + Python translation canceled + Python translation canceled + + + Python translation failed + Python translation failed + + + Python translation successful + Python translation successful + + + QGIS project has more than one {0} layer coming from different schemas. If you are looking to manage two schemas, it is mandatory to define which is the master and which isn't. To do this, you need to configure the QGIS project setting this project's variables: {1} and {2}. + QGIS project has more than one {0} layer coming from different schemas. If you are looking to manage two schemas, it is mandatory to define which is the master and which isn't. To do this, you need to configure the QGIS project setting this project's variables: {1} and {2}. + + + QGIS project has more than one v_edit_node layer coming from different schemas. + QGIS project has more than one v_edit_node layer coming from different schemas. + + + QGIS project has more than one v_edit_node layer coming from different schemas. If you are looking to manage two schemas, it is mandatory to define which is the master and which isn't. To do this, you need to configure the QGIS project setting this project's variables: gwMainSchema and gwAddSchema. + QGIS project has more than one v_edit_node layer coming from different schemas. If you are looking to manage two schemas, it is mandatory to define which is the master and which isn't. To do this, you need to configure the QGIS project setting this project's variables: gwMainSchema and gwAddSchema. + + + QGIS version is not compatible with Giswater. Please check wiki + QGIS version is not compatible with Giswater. Please check wiki + + + QgsLayerTree not found for project. + QgsLayerTree not found for project. + + + `query` must be a string if `by_osmid` is True. + `query` must be a string if `by_osmid` is True. + + + rasterio must be installed as an optional dependency to query rasters. + rasterio must be installed as an optional dependency to query rasters. + + + \rDo you want to overwrite it? + \rDo you want to overwrite it? + + + Reading file + Reading file + + + Real end date + Real end date + + + Real location has been updated + Real location has been updated + + + Real start date + Real start date + + + Record deleted + Record deleted + + + Records deleted + Records deleted + + + Reload failed + Reload failed + + + Remove layer from project? + Remove layer from project? + + + REMOVE NODE + REMOVE NODE + + + Remove Team Assignment + Remove Team Assignment + + + Repair cost + Repair cost + + + Replace feature + Replace feature + + + Replace feature done successfully + Replace feature done successfully + + + Replacement cost + Replacement cost + + + Replacing template text + Replacing template text + + + Reports generated successfully + Reports generated successfully + + + Required fields are missing + Required fields are missing + + + Reset position form done successfully. + Reset position form done successfully. + + + Result Manager + Result Manager + + + Result name + Result name + + + Result name already exists + Result name already exists, do you want overwrite? + + + Result name already exists, do you want overwrite? + Result name already exists, do you want overwrite? + + + Result name already in use, please choose a different name. + Result name already in use, please choose a different name. + + + Result name not found. It's not possible to import RPT file into database + Result name not found. It's not possible to import RPT file into database + + + Result Selector + Result Selector + + + Retrieving process ({0}/{1})... + Retrieving process ({0}/{1})... + + + rio-vrt must be installed as an optional dependency to build VRTs. + rio-vrt must be installed as an optional dependency to build VRTs. + + + Rotation must be a number. + Rotation must be a number. + + + `route_colors` and `route_linewidths` must have same lengths as `routes`. + `route_colors` and `route_linewidths` must have same lengths as `routes`. + + + `routes` must be an iterable of route lists. + `routes` must be an iterable of route lists. + + + Rpt fail + Rpt fail + + + RPT file path is required when importing results or executing EPA + RPT file path is required when importing results or executing EPA + + + \r(This decision will not cancel the other selections, the process will keep running) + \r(This decision will not cancel the other selections, the process will keep running) + + + Satellite schemas + Satellite schemas + + + Save as + Save as + + + Save feature + Save feature + + + Saving results to DB + Saving results to DB + + + Scale must be a number. + Scale must be a number. + + + Schema audit not found, please create it first + Schema audit not found, please create it first + + + Schema name + Schema name + + + Schema name: {schema_name} + Schema name: {schema_name} + + + Schema Utils already exist. + Schema Utils already exist. + + + Schema vacuum executed + Schema vacuum executed + + + (Schema version is higher than plugin version. Please contact your administrator to update the plugin) + (Schema version is higher than plugin version. Please contact your administrator to update the plugin) + + + (Schema version is higher than plugin version, please update plugin) + (Schema version is higher than plugin version, please update plugin) + + + (Schema version is lower than plugin version. Please contact your administrator to update the schema) + (Schema version is lower than plugin version. Please contact your administrator to update the schema) + + + (Schema version is lower than plugin version, please update schema) + (Schema version is lower than plugin version, please update schema) + + + scikit-learn must be installed as an optional dependency to search an unprojected graph. + scikit-learn must be installed as an optional dependency to search an unprojected graph. + + + scipy must be installed as an optional dependency to calculate entropy. + scipy must be installed as an optional dependency to calculate entropy. + + + scipy must be installed as an optional dependency to search a projected graph. + scipy must be installed as an optional dependency to search a projected graph. + + + Second iteration + Second iteration + + + Select a campaign to delete. + Select a campaign to delete. + + + Select a campaign to delete. + Select a campaign to delete. + + + Select a Custom node Type + Select a custom node type + + + Select a lot to delete. + Select a lot to delete. + + + Select a valid date column to filter. + Select a valid date column to filter. + + + Select a valid path. + Select a valid path + + + Select a workcat id end + Select a workcat id end + + + Select a workorder to delete. + Select a workorder to delete. + + + Select a workorder to delete. + Select a workorder to delete. + + + Select connecs or gullies with qgis tool and use right click to connect them with network + Select connecs or gullies with qgis tool and use right click to connect them with network + + + Select connecs or gullies with qgis tool and use right click to connect them with network. CTRL + SHIFT over selection to remove it + Select connecs or gullies with qgis tool and use right click to connect them with network. CTRL + SHIFT over selection to remove it + + + Select CSV file + Select CSV file + + + Selected {0} + Selected {0} + + + Selected CSV has been imported successfully + Selected CSV has been imported successfully + + + Selected date interval is not valid + Selected date interval is not valid + + + Selected element already in the list + Selected element already in the list + + + Selected functions have been executed + Selected functions have been executed + + + Selected hydrometer_id not found + Selected hydrometer_id not found + + + Selected node + Selected node + + + Selected 'profile_id' already exist in database + Selected 'profile_id' already exist in database + + + Selected schema not found + Selected schema not found + + + Selected snapped feature_id to copy values from + Selected snapped feature_id to copy values from + + + Selected styles updated successfully! + Selected styles updated successfully! + + + Selected styles were successfully deleted. + Selected styles were successfully deleted. + + + Selected team not found. + Selected team not found. + + + Select feature type and id and check if it''s related to any other features. click delete to remove it completely + Select feature type and id and check if it's related to any other features. Click delete to remove it completely + + + Select file + Select file + + + Select folder + Select folder + + + Select INP file + Select INP file + + + SELECTION + SELECTION + + + Select just one document + Select just one document + + + Select just one visit + Select just one visit + + + Select one + Select one + + + Selector help + Selector help + + + Select RPT file + Select RPT file + + + Select UI file + Select UI file + + + Select valid INP file + Select valid INP file + + + Select valid RPT file + Select valid RPT file + + + Select visit to open + Select visit to open + + + SERVER RESPONSE + SERVER RESPONSE + + + Service database connection error (psycopg2). Please open plugin log file to get more details + Service database connection error (psycopg2). Please open plugin log file to get more details + + + Service database connection error (QSqlDatabase). Please open plugin log file to get more details + Service database connection error (QSqlDatabase). Please open plugin log file to get more details + + + Set rpt archived execution successful. + Set rpt archived execution successful. + + + Shamir-Howard parameters + Shamir-Howard parameters + + + Simplified graph: {initial_node_count:,} to {len(G):,} nodes, {initial_edge_count:,} to {len(G.edges):,} edges + Simplified graph: {initial_node_count:,} to {len(G):,} nodes, {initial_edge_count:,} to {len(G.edges):,} edges + + + Skipping muni_id {0}: Invalid geometry + Skipping muni_id {0}: Invalid geometry + + + Snapped feature is not in a valid layer + Snapped feature is not in a valid layer + + + Some data is missing + Some data is missing + + + Some data is missing. Check gis_length for arc + Some data is missing. Check gis_length for arc + + + Some edges missing nodes, possibly due to input data clipping issue. + Some edges missing nodes, possibly due to input data clipping issue. + + + Some events have documents + Some events have documents + + + Some layers of your role not found. Do you want to view them? + Some layers of your role not found. Do you want to view them? + + + Some mandatory fields are missing. Please fill the required fields (marked in red). + Some mandatory fields are missing. Please fill the required fields (marked in red). + + + Some mandatory fields are missing. Please fill the required fields (marked in red). + Some mandatory fields are missing. Please fill the required fields (marked in red). + + + Some mandatory values are missing. Please check the widgets marked in red. + Some mandatory values are missing. Please check the widgets marked in red. + + + Some mandatory values are missing. Please check the widgets marked in red. + Some mandatory values are missing. Please check the widgets marked in red. + + + Some parameters are missing for node + Some parameters are missing for node + + + Some parameters are missing (Values Defaults used for) + Some parameters are missing (Values Defaults used for) + + + SQL + SQL + + + SQL Context + SQL Context + + + SQL File + SQL File + + + SQL folder not found + SQL folder not found + + + %ss cannot be directly connected to a reservoir. Add a pipe to separate the valve from the reservoir. + %ss cannot be directly connected to a reservoir. Add a pipe to separate the valve from the reservoir. + + + %ss cannot be directly connected to a tank. Add a pipe to separate the valve from the tank. + %ss cannot be directly connected to a tank. Add a pipe to separate the valve from the tank. + + + Start date + Start date + + + Started task '{0}' + Started task '{0}' + + + Started task {0} + Started task {0} + + + Starting execute_vacuum method + Starting execute_vacuum method + + + Starting process... + Starting process... + + + Style group '{0}' and related entries have been deleted. + Style group '{0}' and related entries have been deleted. + + + Succesfully connected to {0} + Succesfully connected to {0} + + + Successful connection to {0} database + Successful connection to {0} database + + + Successfully assigned team '{0}' to {1} user(s). + Successfully assigned team '{0}' to {1} user(s). + + + Successfully removed team assignment from {0} user(s). + Successfully removed team assignment from {0} user(s). + + + SWMM Model + SWMM Model + + + Table not found + Table not found + + + Table not found: '{0}' + Table not found: '{0}' + + + Table not found: {0} + Table not found: {0} + + + Table_object is not a table name or QTableView + Table_object is not a table name or QTableView + + + Tab not found. + Tab not found. + + + Task '{0}' completed + Task '{0}' completed + + + Task {0} completed + Task {0} completed + + + Task {0} completed\n + Task {0} completed\n + + + Task '{0}' Exception: {1} + Task '{0}' Exception: {1} + + + Task '{0}' execute function '{1}' + Task '{0}' execute function '{1}' + + + Task '{0}' execute procedure '{1}' with parameters: '{2}', '{3}', '{4}' + Task '{0}' execute procedure '{1}' with parameters: '{2}', '{3}', '{4}' + + + Task '{0}' execute sql: '{1}' + Task '{0}' execute sql: '{1}' + + + Task '{0}' manage json response with parameters: '{1}', '{2}', '{3}' + Task '{0}' manage json response with parameters: '{1}', '{2}', '{3}' + + + Task '{0}' not successful but without exception + Task '{0}' not successful but without exception + + + Task '{0}' was cancelled + Task '{0}' was cancelled + + + Task aborted - {0} + Task aborted - {0} + + + Task aborted: {0}. + Task aborted: {0}. + + + Task canceled. + Task canceled. + + + Task canceled: + Task canceled: + + + Task canceled - {0} + Task canceled - {0} + + + Task canceled: The number of years is greater than the interval disponible. + Task canceled: The number of years is greater than the interval disponible. + + + Task 'Check project' execute function '{0}' + Task 'Check project' execute function '{0}' + + + task_completed + task_completed + + + Task 'Connect link' execute function '{0}' from '{1}' with parameters: '{2}' + Task 'Connect link' execute function '{0}' from '{1}' with parameters: '{2}' + + + Task 'Connect link' execute function '{0}' with parameters: '{1}', '{2}' + Task 'Connect link' execute function '{0}' with parameters: '{1}', '{2}' + + + Task 'Connect link' execute procedure '{0}' with parameters: '{1}', '{2}', '{3}' + Task 'Connect link' execute procedure '{0}' with parameters: '{1}', '{2}', '{3}' + + + Task failed: {0}. This is probably a DB error, check postgres function '{1}'. + Task failed: {0}. This is probably a DB error, check postgres function '{1}'. + + + Task finished! + Task finished! + + + Task 'Go2Epa' execute function '{0}' + Task 'Go2Epa' execute function '{0}' + + + Task 'Go2Epa' execute function '{0}' from '{1}' + Task 'Go2Epa' execute function '{0}' from '{1}' + + + Task 'Go2Epa' execute function 'def _exec_import_function' + Task 'Go2Epa' execute function 'def _exec_import_function' + + + Task 'Go2Epa' execute procedure '{0}' step {1} + Task 'Go2Epa' execute procedure '{0}' step {1} + + + Task 'Go2Epa' execute procedure '{0}' step {1}} + Task 'Go2Epa' execute procedure '{0}' step {1}} + + + Task 'Go2Epa' execute procedure '{1}' step {2} with parameters: '{1}', '{3}', '{4}', '{5}', '{6}' + Task 'Go2Epa' execute procedure '{1}' step {2} with parameters: '{1}', '{3}', '{4}', '{5}', '{6}' + + + Task 'Go2Epa' manage json response + Task 'Go2Epa' manage json response + + + Task 'Mincut execute' execute procedure '{0}' with parameters: '{1}', '{2}', '{3}' + Task 'Mincut execute' execute procedure '{0}' with parameters: '{1}', '{2}', '{3}' + + + Task 'Mincut execute' manage json response with parameters: '{0}', '{1}', '{2}' + Task 'Mincut execute' manage json response with parameters: '{0}', '{1}', '{2}' + + + @techreport{boeing_osmnx_2024, + @techreport{boeing_osmnx_2024, + + + @techreport{boeing_osmnx_2024,\n author = {Boeing, Geoff},\n title = {{Modeling and Analyzing Urban Networks and Amenities with OSMnx}},\n type = {Working paper},\n url = {https://geoffboeing.com/publications/osmnx-paper/},\n year = {2024}\n} + @techreport{boeing_osmnx_2024,\n author = {Boeing, Geoff},\n title = {{Modeling and Analyzing Urban Networks and Amenities with OSMnx}},\n type = {Working paper},\n url = {https://geoffboeing.com/publications/osmnx-paper/},\n year = {2024}\n} + + + Template GIS file not found + Template GIS file not found + + + Template not managed: {0} + Template not managed: {0} + + + Temporal layer created successfully. + Temporal layer created successfully. + + + The '{0}' field is required. + The '{0}' field is required. + + + The active state of the current psector cannot be changed. Current psector: {0} + The active state of the current psector cannot be changed. Current psector: {0} + + + The configuration file doesn't match the selected INP file. Some options may not be loaded. + The configuration file doesn't match the selected INP file. Some options may not be loaded. + + + The configuration file doesn't match the selected INP file. Some options may not be loaded or may be incorrect. Do you want to continue? + The configuration file doesn't match the selected INP file. Some options may not be loaded or may be incorrect. Do you want to continue? + + + The connection to the database is broken. + The connection to the database is broken. + + + The connection to the database is broken: {0} + The connection to the database is broken: {0} + + + The csv file has been successfully exported + The csv file has been successfully exported + + + The 'Description' field is required. + The 'Description' field is required. + + + The field layoutname is not configured for + The field layoutname is not configured for + + + The field layoutorder is not configured for + The field layoutorder is not configured for + + + The field widgettype is not configured for + The field widgettype is not configured for + + + The fifth tab is the 'Arcs' tab, where you can select the catalog for each type of arc on the network. + The fifth tab is the 'Arcs' tab, where you can select the catalog for each type of arc on the network. + + + The file {0} already exists. Do you want to overwrite it? + The file {0} already exists. Do you want to overwrite it? + + + The file "{0}.csv" already exists. Do you want to overwrite it? + The file "{0}.csv" already exists. Do you want to overwrite it? + + + The file "{0}.in" already exists. Do you want to overwrite it? + The file "{0}.in" already exists. Do you want to overwrite it? + + + The file "{0}.inp" already exists. Do you want to overwrite it? + The file "{0}.inp" already exists. Do you want to overwrite it? + + + The files {0} already exist. Do you want to overwrite them? + The files {0} already exist. Do you want to overwrite them? + + + The files "{0}.in" and "{1}.csv" already exist. Do you want to overwrite them? + The files "{0}.in" and "{1}.csv" already exist. Do you want to overwrite them? + + + The files "{0}.inp" and "{1}.csv" already exist. Do you want to overwrite them? + The files "{0}.inp" and "{1}.csv" already exist. Do you want to overwrite them? + + + The file selected is not a GPKG file + The file selected is not a GPKG file + + + The file selected is not an INP file + The file selected is not an INP file + + + The first tab is the 'Basic' tab, where you can select the exploitation, sector, municipality, and other basic information. + The first tab is the 'Basic' tab, where you can select the exploitation, sector, municipality, and other basic information. + + + The following fields differ between the selected arcs. You are about to merge them using the selected values. + The following fields differ between the selected arcs. You are about to merge them using the selected values. + + + The fourth tab is the 'Nodes' tab, where you can select the catalog for each type of node on the network. + The fourth tab is the 'Nodes' tab, where you can select the catalog for each type of node on the network. + + + The geometry of `polygon` is invalid. + The geometry of `polygon` is invalid. + + + The [JUNCTIONS] section of the configuration file is empty. + The [JUNCTIONS] section of the configuration file is empty. + + + The name is current in use + The name is current in use + + + The name is currently in use + The name is currently in use + + + The node has not been updated because no catalog has been selected + The node has not been updated because no catalog has been selected + + + The node is obsolete + The node is obsolete, this tool doesn't work with obsolete nodes. + + + The node is obsolete, this tool doesn't work with obsolete nodes. + The node is obsolete, this tool doesn't work with obsolete nodes. + + + The number of pages in your composition does not match the number of psectors + The number of pages in your composition does not match the number of psectors + + + The organization name already exists + The organization name already exists + + + The 'Path' field is required for Import INP data. + The 'Path' field is required for Import INP data. + + + The procedure will delete features on database unless it is a node that doesn't divide arc.\n + Please ensure that features has no undelete value on true.\n + On the other hand you must know that traceability table will storage precedent information. + The procedure will delete features on database unless it is a node that doesn't divide arc.\n + Please ensure that features has no undelete value on true.\n + On the other hand you must know that traceability table will storage precedent information. + + + The procedure will delete features on database unless it is a node that doesn't divide arcs. + The procedure will delete features on database unless it is a node that doesn't divide arcs. + + + The procedure will delete features on database unless it is a node that doesn't divide arcs.\nPlease ensure that features has no undelete value on true.\nOn the other hand you must know that traceability table will storage precedent information. + The procedure will delete features on database unless it is a node that doesn't divide arcs.\nPlease ensure that features has no undelete value on true.\nOn the other hand you must know that traceability table will storage precedent information. + + + The process has been executed. Files generated: + The process has been executed. Files generated: + + + The project name can't be a PostgreSQL reserved keyword + The project name can't be a PostgreSQL reserved keyword + + + The project name can't have any upper-case characters + The project name can't have any upper-case characters + + + The 'Project_name' field is required. + The 'Project_name' field is required. + + + The project name has invalid character + The project name has invalid character + + + The QGIS Projects templates was correctly created. + The QGIS Projects templates was correctly created. + + + The QML file is invalid + The QML file is invalid + + + The QML file is invalid. + The QML file is invalid. + + + There are missing values in these nodes: + There are missing values in these nodes: + + + There are multiple queries configured. These are the lists that will be used. Do you want to continue? + There are multiple queries configured. These are the lists that will be used. Do you want to continue? + + + There are multple tabs in order to configure all the necessary catalogs. + There are multple tabs in order to configure all the necessary catalogs. + + + There are no attribute values. + There are no attribute values. + + + There are no results available to display. + There are no results available to display. + + + There are no visible mincuts in the table. Try a different filter + There are no visible mincuts in the table. Try a different filter or make one + + + There are no visible mincuts in the table. Try a different filter or make one + There are no visible mincuts in the table. Try a different filter or make one + + + There are some error in the records with id + There are some error in the records with id + + + There have been errors translating: + There have been errors translating: + + + There is an error in the configuration of the pgservice file, please check it or consult your administrator + There is an error in the configuration of the pgservice file, please check it or consult your administrator + + + There is a partially completed file for this folder/file name. Would you like to resume the process? + There is a partially completed file for this folder/file name. Would you like to resume the process? + + + There is no data in table anl_arc for fid=491 and current user. + There is no data in table anl_arc for fid=491 and current user. + + + There is no data in table anl_arc for fid=493 and current user. + There is no data in table anl_arc for fid=493 and current user. + + + There is no project selected or it is not valid. Please check the first tab... + There is no project selected or it is not valid. Please check the first tab... + + + There is no valid shape curve in the list + There is no valid shape curve in the list + + + The report timestep must be an integer multiple of the hydraulic timestep. Reducing the hydraulic timestep from {0} seconds to {1} seconds for this simulation. + The report timestep must be an integer multiple of the hydraulic timestep. Reducing the hydraulic timestep from {0} seconds to {1} seconds for this simulation. + + + The report timestep must be an integer multiple of the hydraulic timestep. Reducing the report timestep from {0} seconds to {1} seconds for this simulation. + The report timestep must be an integer multiple of the hydraulic timestep. Reducing the report timestep from {0} seconds to {1} seconds for this simulation. + + + The result cannot be deleted + The result cannot be deleted + + + There was an error deleting object. + There was an error deleting object. + + + There was an error deleting object values. + There was an error deleting object values. + + + There was an error deleting old curve values. + There was an error deleting old curve values. + + + There was an error deleting old lid values. + There was an error deleting old lid values. + + + There was an error deleting old pattern values. + There was an error deleting old pattern values. + + + There was an error deleting old timeseries values. + There was an error deleting old timeseries values. + + + There was an error inserting control. + There was an error inserting control. + + + There was an error inserting curve. + There was an error inserting curve. + + + There was an error inserting curve value. + There was an error inserting curve value. + + + There was an error inserting lid. + There was an error inserting lid. + + + There was an error inserting pattern. + There was an error inserting pattern. + + + There was an error inserting pattern value. + There was an error inserting pattern value. + + + There was an error inserting timeseries. + There was an error inserting timeseries. + + + There were velocities >50 in the rpt file. You have activated the option to force the import + There were velocities >50 in the rpt file. You have activated the option to force the import + + + There were velocities >50 in the rpt file. You have activated the option to force the import so they have been set to 50. + There were velocities >50 in the rpt file. You have activated the option to force the import so they have been set to 50. + + + The rpt file is not valid to import. Because columns on rpt file are overlaped, it seems you need to improve your simulation. Please ckeck and fix it before continue. + The rpt file is not valid to import. Because columns on rpt file are overlaped, it seems you need to improve your simulation. Please ckeck and fix it before continue. + + + The rpt file is not valid to import. Because columns on rpt file are overlaped, it seems you need to improve your simulation. Please ckeck and fix it before continue. \n{0} + The rpt file is not valid to import. Because columns on rpt file are overlaped, it seems you need to improve your simulation. Please ckeck and fix it before continue. \n{0} + + + The rpt file is not valid to import. Because columns on rpt file are overlapped, it seems you need to improve your simulation. Please check and fix it before continuing. + The rpt file is not valid to import. Because columns on rpt file are overlapped, it seems you need to improve your simulation. Please check and fix it before continuing. + + + The rpt file is not valid to import. Because columns on rpt file are overlapped, it seems you need to improve your simulation. Please check and fix it before continuing.\n{0} + The rpt file is not valid to import. Because columns on rpt file are overlapped, it seems you need to improve your simulation. Please check and fix it before continuing.\n{0} + + + The rpt file is not valid to import. Because velocity has not numeric value (>50), it seems you need to improve your simulation. Please ckeck and fix it before continue. + The rpt file is not valid to import. Because velocity has not numeric value (>50), it seems you need to improve your simulation. Please ckeck and fix it before continue. + + + The rpt file is not valid to import. Because velocity has not numeric value (>50), it seems you need to improve your simulation. Please ckeck and fix it before continue. \n{0} + The rpt file is not valid to import. Because velocity has not numeric value (>50), it seems you need to improve your simulation. Please ckeck and fix it before continue. \n{0} + + + The rpt file is not valid to import. Because velocity has not numeric value (>50), it seems you need to improve your simulation. Please ckeck and fix it before continue. \nNote: You can force the import by activating the variable '{0}' on the {1} file. \n{2} + The rpt file is not valid to import. Because velocity has not numeric value (>50), it seems you need to improve your simulation. Please ckeck and fix it before continue. \nNote: You can force the import by activating the variable '{0}' on the {1} file. \n{2} + + + The [SCENARIOS] section of the configuration file is empty. + The [SCENARIOS] section of the configuration file is empty. + + + The schema ({0}) does not exists + The schema ({0}) does not exists + + + The schema '{0}' is being used in production! It can't be deleted. + The schema '{0}' is being used in production! It can't be deleted. + + + The schema version has to be updated to make rename + The schema version has to be updated to make rename + + + These are the lists that will be used. Do you want to continue? + These are the lists that will be used. Do you want to continue? + + + The second tab is the 'Features' tab, where you can select the corresponding feature classes for each type of feature on the network. + The second tab is the 'Features' tab, where you can select the corresponding feature classes for each type of feature on the network. + + + These items could not be downgrade to state 0 + These items could not be downgrade to state 0 + + + The selected INP file does not match with a 'UD' project.n + The selected INP file does not match with a 'UD' project.n + + + The selected INP file does not match with a 'UD' project. Please check it before continuing... + The selected INP file does not match with a 'UD' project. Please check it before continuing... + + + The selected INP file does not match with a 'WS' project.n + The selected INP file does not match with a 'WS' project.n + + + The selected INP file does not match with a 'WS' project. Please check it before continuing... + The selected INP file does not match with a 'WS' project. Please check it before continuing... + + + The selected node is planified in another psector. + The selected node is planified in another psector. + + + The selected node should have exactly two linked arcs. + The selected node should have exactly two linked arcs. + + + These links could not be located within the network: + These links could not be located within the network: + + + These pipes have been assigned as compliant by default, which may affect their priority value. + These pipes have been assigned as compliant by default, which may affect their priority value. + + + These pipes have been identified as the configured unknown material, {unknown_material}. + These pipes have been identified as the configured unknown material, {unknown_material}. + + + These pipes have no pressure information for their nodes. This will result in them receiving the maximum longevity value for their material, which may affect the final priority value. + These pipes have no pressure information for their nodes. This will result in them receiving the maximum longevity value for their material, which may affect the final priority value. + + + These pipes have NOT been assigned a priority value. + These pipes have NOT been assigned a priority value. + + + These pipes have NOT been assigned a priority value as the configured unknown material, {unknown_material}, is not listed in the configuration tab for materials. + These pipes have NOT been assigned a priority value as the configured unknown material, {unknown_material}, is not listed in the configuration tab for materials. + + + These pipes received the maximum longevity value for their material. + These pipes received the maximum longevity value for their material. + + + These pipes will NOT be assigned a priority value as the configured unknown material, {1}, is not listed in the configuration tab for materials. + These pipes will NOT be assigned a priority value as the configured unknown material, {1}, is not listed in the configuration tab for materials. + + + These pipes will NOT be assigned a priority value as the configured unknown material, {unknown_material}, is not listed in the configuration tab for materials. + These pipes will NOT be assigned a priority value as the configured unknown material, {unknown_material}, is not listed in the configuration tab for materials. + + + The start date must be before the end date + The start date must be before the end date + + + The start date real must be before the end date real + The start date real must be before the end date real + + + The state selector is empty + The state selector is empty + + + The sum of weights must equal 1. Please adjust the values accordingly. + The sum of weights must equal 1. Please adjust the values accordingly. + + + The table ({0}) does not exists + The table ({0}) does not exists + + + The table 'plan_psector' contains NULL values in the column 'atlas_id'. Please fix this before continuing. + The table 'plan_psector' contains NULL values in the column 'atlas_id'. Please fix this before continuing. + + + The target year must be between {0} and {1}. + The target year must be between {0} and {1}. + + + The team name already exists + The team name already exists + + + The team name already exists + The team name already exists + + + The third tab is the 'Materials' tab, where you can select the corresponding material for each roughness value. + The third tab is the 'Materials' tab, where you can select the corresponding material for each roughness value. + + + The third tab is the 'Materials' tab, where you can select the corresponding roughness value for each material. + The third tab is the 'Materials' tab, where you can select the corresponding roughness value for each material. + + + The update folder was not found in sql folder + The update folder was not found in sql folder + + + The user config files have been recreated. A backup of the broken ones have been created at + The user config files have been recreated. A backup of the broken ones have been created at + + + The user name already exists + The user name already exists + + + The WNTR numerical solution for flow rate has R2 + The WNTR numerical solution for flow rate has R2 + + + The WNTR numerical solution for tank head has R2 + The WNTR numerical solution for tank head has R2 + + + The Workcat_id "{0}" is already in use. Please enter a different ID. + The Workcat_id "{0}" is already in use. Please enter a different ID. + + + The XML file you are loading appears to have been generated by OSMnx: this use case is not supported and may not behave as expected. To save/load graphs to/from disk for later use in OSMnx, use the `io.save_graphml` and `io.load_graphml` functions instead. Refer to the documentation for details. + The XML file you are loading appears to have been generated by OSMnx: this use case is not supported and may not behave as expected. To save/load graphs to/from disk for later use in OSMnx, use the `io.save_graphml` and `io.load_graphml` functions instead. Refer to the documentation for details. + + + This arc has redundant data on both (elev & y) values. Review it and use only one. + This arc has redundant data on both (elev & y) values. Review it and use only one. + + + This area is {ratio:,} times your configured Overpass max query area size. It will automatically be divided up into multiple sub-queries accordingly. This may take a long time. + This area is {ratio:,} times your configured Overpass max query area size. It will automatically be divided up into multiple sub-queries accordingly. This may take a long time. + + + This behaviour can be configured in the table 'config_param_system' (parameter = 'basic_selector + This behaviour can be configured in the table 'config_param_system' (parameter = 'basic_selector + + + This dma doesn't exist + This dma doesn't exist + + + This feature already has ELEV & TOP_ELEV values! Review it and use at most two + This feature already has ELEV & TOP_ELEV values! Review it and use at most two + + + This feature already has ELEV values! Review it and use only one + This feature already has ELEV values! Review it and use only one + + + This feature already has Y & ELEV values! Review it and use at most two + This feature already has Y & ELEV values! Review it and use at most two + + + This feature already has Y & TOP_ELEV values! Review it and use at most two + This feature already has Y & TOP_ELEV values! Review it and use at most two + + + This feature already has Y values! Review it and use only one + This feature already has Y values! Review it and use only one + + + This feature has no log changes, please update this feature before. + This feature has no log changes, please update this feature before. + + + This functionality is only allowed with the locality 'en_US' and SRID 25831. + This functionality is only allowed with the locality 'en_US' and SRID 25831. + + + This functionality is only allowed with the locality 'en_US' and SRID 25831.\nDo you want change it and continue? + This functionality is only allowed with the locality 'en_US' and SRID 25831.\nDo you want change it and continue? + + + This graph has already been simplified, cannot simplify it again. + This graph has already been simplified, cannot simplify it again. + + + This graph's edges have no preexisting 'maxspeed' attribute values so you must pass `hwy_speeds` or `fallback` arguments. + This graph's edges have no preexisting 'maxspeed' attribute values so you must pass `hwy_speeds` or `fallback` arguments. + + + This id already exists + This id already exists + + + This is not a valid Giswater project + This is not a valid Giswater project + + + This is not a valid Giswater project. Do you want to view problem details? + This is not a valid Giswater project. Do you want to view problem details? + + + This node has redundant data on (top_elev, ymax & elev) values. Review it and use at most two. + This node has redundant data on (top_elev, ymax & elev) values. Review it and use at most two. + + + This parameter is mandatory. Please + This parameter is mandatory. Please, set a value + + + This parameter is mandatory. Please, set a value + This parameter is mandatory. Please, set a value + + + This param is mandatory. Please + This param is mandatory. Please, set a value + + + This param is mandatory. Please, set a value + This parameter is mandatory. Please, set a value + + + This presszone doesn't exist + This presszone doesn't exist + + + This process will active snapshot. Are you sure to continue? + This process will active snapshot. Are you sure to continue? + + + This process will take a few seconds. Are you sure to continue? + This process will take a few seconds. Are you sure to continue? + + + This process will take time (few minutes). Are you sure to continue? + This process will take time (few minutes). Are you sure to continue? + + + This 'Project_name' already exist. Do you want rename old schema to '{0}' + This 'Project_name' already exist. Do you want rename old schema to '{0}' + + + This project name alredy exist. + This project name alredy exist. + + + This psector does not match the current one. Value of current psector will be updated. + This psector does not match the current one. Value of current psector will be updated. + + + This result name already exists + This result name already exists + + + This SRID value does not exist on Postgres Database. Please select a diferent one. + This SRID value does not exist on Postgres Database. Please select a diferent one. + + + This task may take some time to complete, do you want to proceed? + This task may take some time to complete, do you want to proceed? + + + This tool is still in developement, it might not work as intended. + This tool is still in developement, it might not work as intended. + + + This will also delete all related entries in the sys_style table.Confirm Cascade Delete + This will also delete all related entries in the sys_style table.Confirm Cascade Delete + + + This will also delete the database user(s): + This will also delete the database user(s): + + + This will also delete the database user(s): + This will also delete the database user(s): + + + !!!!! THIS WILL DELETE ALL DATA IN THE DATABASE !!!!! + !!!!! THIS WILL DELETE ALL DATA IN THE DATABASE !!!!! + + + !!!!! THIS WILL DELETE ALL DATA IN THE DATABASE !!!!!\nARE YOU SURE YOU WANT TO PROCEED? + !!!!! THIS WILL DELETE ALL DATA IN THE DATABASE !!!!!\nARE YOU SURE YOU WANT TO PROCEED? + + + This will modify your inp file + This will modify your inp file, so a backup will be created.\n \ + + + This will modify your inp file, so a backup will be created. + This will modify your inp file, so a backup will be created. + + + This will modify your inp file, so a backup will be created.\nDo you want to proceed? + This will modify your inp file, so a backup will be created.\nDo you want to proceed? + + + This wizard will help with the process of importing a network from a {0} INP file into the Giswater database. + This wizard will help with the process of importing a network from a {0} INP file into the Giswater database. + + + This Workcat already exist + This Workcat already exist + + + This Workcat is already exist + This Workcat is already exist + + + title = {{Modeling and Analyzing Urban Networks and Amenities with OSMnx}}, + title = {{Modeling and Analyzing Urban Networks and Amenities with OSMnx}}, + + + To make the result id {0} corporate, is necessary to make not corporate the following result ids: {1}. Do you want to proceed? + To make the result id {0} corporate, is necessary to make not corporate the following result ids: {1}. Do you want to proceed? + + + To modify columns (top_elev, ymax, elev among others) to be interpolated set variable edit_node_interpolate on table config_param_user + To modify columns (top_elev, ymax, elev among others) to be interpolated set variable edit_node_interpolate on table config_param_user + + + Toolbox task is already active! + Toolbox task is already active! + + + {tools_qt.tr( + {tools_qt.tr( + + + {tools_qt.tr()} + {tools_qt.tr()} + + + {tools_qt.tr()}: {snapped_feature_attr[0]} + {tools_qt.tr()}: {snapped_feature_attr[0]} + + + {tools_qt.tr()}: {snapped_feature_attr[0]}\n{tools_qt.tr()}\n\n + {tools_qt.tr()}: {snapped_feature_attr[0]}\n{tools_qt.tr()}\n\n + + + To open psector {0}, it must be activated before. + To open psector {0}, it must be activated before. + + + To see the conflicts load the views + To see the conflicts, load the views + + + Total + Total + + + Total municipalities processed: {0} + Total municipalities processed: {0} + + + Total of pipes: {pipes}. + Total of pipes: {pipes}. + + + TRACEABILITY + TRACEABILITY + + + translation canceled + translation canceled + + + translation failed in table + translation failed in table + + + translation successful + translation successful + + + Tried to set {0} to '{1}' but it's not an integer. Defaulting to 4 threads. + Tried to set {0} to '{1}' but it's not an integer. Defaulting to 4 threads. + + + Triggers updated successfully + Triggers updated successfully + + + Truncated graph by bounding box + Truncated graph by bounding box + + + Truncated graph by polygon + Truncated graph by polygon + + + Try again + Try again + + + Typeahead '{0}' doesn't have neither a queryText nor comboIds/comboNames. + Typeahead '{0}' doesn't have neither a queryText nor comboIds/comboNames. + + + type = {Working paper}, + type = {Working paper}, + + + Uknown + Uknown + + + Unable to create '{extension}' extension. Packages must be installed, consult your administrator. + Unable to create '{extension}' extension. Packages must be installed, consult your administrator. + + + Unable to create fuzzystrmatch extension. Packages must be installed + Unable to create fuzzystrmatch extension. Packages must be installed, consult your administrator + + + (Unable to create one extension. Packages must be installed, consult your administrator) + (Unable to create one extension. Packages must be installed, consult your administrator) + + + Unable to create Postgis extension. Packages must be installed + Unable to create Postgis extension. Packages must be installed, consult your administrator + + + Unable to highlight the snapped node. + Unable to highlight the snapped node. + + + Undefined error + Undefined error + + + Unexpected json_data structure! + Unexpected json_data structure! + + + Unhandled Error + Unhandled Error + + + Unknown context: {0}, skipping. + Unknown context: {0}, skipping. + + + Unrecognised form type + Unrecognised form type + + + Unsuported geometry type + Unsuported geometry type + + + Update configuration + Update configuration + + + Update Confirmation + Update Confirmation + + + Update records + Update records + + + Updating {0}... + Updating {0}... + + + Updating tables + Updating tables + + + url = {https://geoffboeing.com/publications/osmnx-paper/}, + url = {https://geoffboeing.com/publications/osmnx-paper/}, + + + User + User + + + User '{0}' was created, but failed to grant roles ('{1}', 'role_basic'). + User '{0}' was created, but failed to grant roles ('{1}', 'role_basic'). + + + User not found + User not found + + + User set `doh_url_template=None`, requesting host by name + User set `doh_url_template=None`, requesting host by name + + + User settings file: {0} + User settings file: {0} + + + Vacuum executed: {0}.{1} + Vacuum executed: {0}.{1} + + + VALUE DOMAIN + VALUE DOMAIN + + + Value in addparam must be in a json format + Value in addparam must be in a json format + + + Values has been updated + Values has been updated + + + Values saved successfully. + Values saved successfully. + + + Valve analytics executed successfully + Valve analytics executed successfully + + + Variable log_sql from user config file has been disabled. + Variable log_sql from user config file has been disabled. + + + Variable log_sql from user config file has been enabled. + Variable log_sql from user config file has been enabled. + + + Version + Version + + + Version: {self.project_version} + Version: {self.project_version} + + + VISIT + VISIT + + + Warning + Warning + + + WARNING + WARNING + + + Warning: Are you sure to continue?. This button will update your plugin qgis templates file replacing all strings defined on the config/dev.config file. Be sure your config file is OK before continue + Warning: Are you sure to continue?. This button will update your plugin qgis templates file replacing all strings defined on the config/dev.config file. Be sure your config file is OK before continue + + + Warnings: + Warnings: + + + WARNING: This will remove the 'utils_workspace_current' variable for your user! + WARNING: This will remove the 'utils_workspace_current' variable for your user! + + + WARNING: This will remove the 'utils_workspace_current' variable for your user!\nAre you sure you want to delete these records? + WARNING: This will remove the 'utils_workspace_current' variable for your user!\nAre you sure you want to delete these records? + + + WARNING: You have updated the status value to CANCELED (Save Trace). If you click 'Accept' on + WARNING: You have updated the status value to CANCELED (Save Trace). If you click 'Accept' on + + + WARNING: You have updated the status value to EXECUTED (Save Trace). If you click 'Accept' on + WARNING: You have updated the status value to EXECUTED (Save Trace). If you click 'Accept' on + + + WARNING: You have updated the status value to EXECUTED (Set OPERATIVE and Save Trace). If you + WARNING: You have updated the status value to EXECUTED (Set OPERATIVE and Save Trace). If you + + + Weights + Weights + + + `which_result` length must equal `query` length. + `which_result` length must equal `query` length. + + + widget {0} has associated function {1}, but {2} not exist + widget {0} has associated function {1}, but {2} not exist + + + widget {0} has not columnname and can't be configured + widget {0} has not columnname and can't be configured + + + widget {0} has not columnname and cant be configured + widget {0} has not columnname and cant be configured + + + widget {0} have associated function {1}, but {2} not exist + widget {0} have associated function {1}, but {2} not exist + + + widget {0} in tab {1} has not columnname and can't be configured + widget {0} in tab {1} has not columnname and can't be configured + + + widget {0} in tab {1} has not columnname and cant be configured + widget {0} in tab {1} has not columnname and cant be configured + + + Widget {0} is not configured or have a bad config + Widget {0} is not configured or have a bad config + + + Widget: {0} not in form. + Widget: {0} not in form. + + + Widget expl_id not found + Widget expl_id not found + + + Widget is not a QTableView + Widget is not a QTableView + + + Widget model is none: {0} + Widget model is none: {0} + + + widgetname not found. + widgetname not found. + + + Widget not found + Widget not found + + + widgettype is wrongly configured. Needs to be in + widgettype is wrongly configured. Needs to be in + + + widgettype not found. + widgettype not found. + + + Without replacements + Without replacements + + + With replacements + With replacements + + + Workcat created successfully. + Workcat created successfully. + + + Work_id field is empty + Work_id field is empty + + + Write inp file........: {0} + Write inp file........: {0} + + + `X` and `Y` cannot contain nulls. + `X` and `Y` cannot contain nulls. + + + Year + Year + + + year = {2024} + year = {2024} + + + You are about to delete the result + You are about to delete the result + + + You are about to delete the result + You are about to delete the result + + + You are about to import the INP file in TESTING MODE. This will delete all the data in the database related to the network you are importing. Are you sure you want to proceed? + You are about to import the INP file in TESTING MODE. This will delete all the data in the database related to the network you are importing. Are you sure you want to proceed? + + + You are about to load some CM layers to the following file: {0} + You are about to load some CM layers to the following file: {0} + + + You are about to load some CM layers to the following file: {0}\n\nAre you sure you want to continue? + You are about to load some CM layers to the following file: {0}\n\nAre you sure you want to continue? + + + You are about to perform this action aiming to the following file: {0} + You are about to perform this action aiming to the following file: {0} + + + You are about to perform this action aiming to the following file: {0}\n\nAre you sure you want to continue? + You are about to perform this action aiming to the following file: {0}\n\nAre you sure you want to continue? + + + You are about to perform this action aiming to the following schema: {0} + You are about to perform this action aiming to the following schema: {0} + + + You are going to change the epa_type. With this operation you will lose information about current epa_type values of this object. Would you like to continue? + You are going to change the epa_type. With this operation you will lose information about current epa_type values of this object. Would you like to continue? + + + You are going to lose previous information! + You are going to lose previous information! + + + You are going to make this result corporate. From now on the result values will appear on feature form. Do you want to continue? + You are going to make this result corporate. From now on the result values will appear on feature form. Do you want to continue? + + + You are not enabled to modify this {0} widget + You are not enabled to modify this {0} widget + + + You are not enabled to modify this epa_type widget + You are not enabled to modify this epa_type widget + + + You are trying to add/remove a record from the table, with changes to the current records. If you continue, the changes will be discarded without saving. Do you want to continue? + You are trying to add/remove a record from the table, with changes to the current records. If you continue, the changes will be discarded without saving. Do you want to continue? + + + You are trying to add/remove a record from the table, with changes to the current records.If you continue, the changes will be discarded without saving. Do you want to continue? + You are trying to add/remove a record from the table, with changes to the current records.If you continue, the changes will be discarded without saving. Do you want to continue? + + + You are trying to delete your current psector. Please, change your current psector before delete. + You are trying to delete your current psector. Please, change your current psector before delete. + + + You are trying to enter different types + You are trying to enter different types + + + You can change it and use 'Update Style' to create a personalized version. + You can change it and use 'Update Style' to create a personalized version. + + + You cannot change the status of a result with status 'FINISHED'. + You cannot change the status of a result with status 'FINISHED'. + + + You cannot insert more than one feature at the same time + You cannot insert more than one feature at the same time, finish editing the previous feature + + + You cannot insert more than one feature at the same time, finish editing the previous feature + You cannot insert more than one feature at the same time, finish editing the previous feature + + + You can only delete results with the status 'CANCELED'. + You can only delete results with the status 'CANCELED'. + + + You can save the current configuration to a file and load it later, or load the last saved configuration. + You can save the current configuration to a file and load it later, or load the last saved configuration. + + + You can't delete these mincuts because they aren't planified + You can't delete these mincuts because they aren't planified + + + You can't delete these mincuts because they aren't planified \nor they were created by another user: + You can't delete these mincuts because they aren't planified \nor they were created by another user: + + + You closed a valve + You closed a valve, this will modify the current mapzones and it may take a little bit of time. + + + You closed a valve, this will modify the current mapzones and it may take a little bit of time. + You closed a valve, this will modify the current mapzones and it may take a little bit of time. + + + You closed a valve, this will modify the current mapzones and it may take a little bit of time. Would you like to continue? + You closed a valve, this will modify the current mapzones and it may take a little bit of time. Would you like to continue? + + + You closed a valve, this will modify the current mapzones and it may take a little bit of time.Would you like to continue? + You closed a valve, this will modify the current mapzones and it may take a little bit of time.Would you like to continue? + + + You do not have any connection to PostGIS database configurated. + You do not have any connection to PostGIS database configurated. + + + You do not have any connection to PostGIS database configurated. Check your QGIS data source manager and create at least one + You do not have any connection to PostGIS database configurated. Check your QGIS data source manager and create at least one + + + You do not have permissions to administrate project schemas on this connection + You do not have permissions to administrate project schemas on this connection + + + (You do not have permissions to administrate project schemas. Please contact your administrator) + (You do not have permissions to administrate project schemas. Please contact your administrator) + + + You do not have permission to execute this application + You do not have permission to execute this application + + + You don't have any connection to PostGIS database configurated. + You don't have any connection to PostGIS database configurated. + + + You don't have any connection to PostGIS database configurated. Check your QGIS data source manager and create at least one + You don't have any connection to PostGIS database configurated. Check your QGIS data source manager and create at least one + + + You don't have permissions to administrate project schemas on this connection + You don't have permissions to administrate project schemas on this connection + + + You have selected multiple documents. In this case, name will be a sequential number for all selected documents and your name won't be used. + You have selected multiple documents. In this case, name will be a sequential number for all selected documents and your name won't be used. + + + You have to fill in 'date' + You have to fill in 'time' and 'value' fields! + + + You have to fill in 'date', 'time' and 'value' fields! + You have to fill in 'date', 'time' and 'value' fields! + + + You have to fill in 'time' and 'value' fields! + You have to fill in 'time' and 'value' fields! + + + You have to import a ibergis GPKG project first + You have to import a ibergis GPKG project first + + + You have to select at least one feature! + You have to select at least one feature! + + + You have to set this parameter + You have to set this parameter + + + You have to set this parameter: INP file + You have to set this parameter: INP file + + + You have to set this parameter: RPT file + You have to set this parameter: RPT file + + + You must choose at least one action + You must choose at least one action + + + You must pass at least 1 route. + You must pass at least 1 route. + + + You must pass one and only one of `filepath` or `graphml_str`. + You must pass one and only one of `filepath` or `graphml_str`. + + + You must request nodes or edges or both. + You must request nodes or edges or both. + + + You must select two different points + You must select two different points + + + You need at least one row of values. + You need at least one row of values. + + + You need to enter a customer code + You need to enter a customer code + + + You need to enter a feature id + You need to enter a feature id + + + You need to enter a psector name + You need to enter a psector name + + + You need to enter a visit ID + You need to enter a visit ID + + + You need to enter a workcat id + You need to enter a workcat id + + + You need to enter hydrometer_id + You need to enter hydrometer_id + + + You need to have a mesh + You need to have a mesh + + + You need to have a ws and ud schema created to create a utils schema + You need to have a ws and ud schema created to create a utils schema + + + You need to insert a document name + You need to insert a document name + + + You need to insert data + You need to insert data + + + You need to insert doc_id + You need to insert doc_id + + + You need to insert doc_type + You need to insert doc_type + + + You need to insert psector_id + You need to insert psector_id + + + You need to insert value for field + You need to insert value for field + + + You need to insert visit_id + You need to insert visit_id + + + You need to select a template + You need to select a template + + + You need to select at least one process + You need to select at least one process + + + You need to select a valid parameter id + You need to select a valid parameter id + + + You need to select same version for ws and ud projects. Versions: WS - {} ; UD - {} + You need to select same version for ws and ud projects. Versions: WS - {} ; UD - {} + + + You need to select some sector + You need to select some sector + + + You need to upgrade your version of pg_routing! + You need to upgrade your version of pg_routing! + + + You need to upgrade your version of pgRouting + You need to upgrade your version of pgRouting + + + Your composer's path is bad configured. Please + Your composer's path is bad configured. Please, modify it and try again. + + + Your composer's path is bad configured. Please, modify it and try again. + Your composer's path is bad configured. Please, modify it and try again. + + + Your exploitation selector has been updated + Your exploitation selector has been updated + + + You should inform a file name! + You should inform a file name! + + + You should select a config file! + You should select a config file! + + + You should select an config file! + You should select an config file! + + + You should select an input INP file! + You should select an input INP file! + + + You should select an output folder! + You should select an output folder! + + + You will need to restart QGIS or reload Giswater plugin to apply changes. Do you want continue? + You will need to restart QGIS or reload Giswater plugin to apply changes. Do you want continue? + + + You will need to restart QGIS to apply changes. Do you want continue? + You will need to restart QGIS to apply changes. Do you want continue? + + + Zoom unavailable. Doesn't exist the geometry for the street + Zoom unavailable. Doesn't exist the geometry for the street + + + + + add_campaign + + title + Campaign + + + btn_accept + Accept + + + tooltip_btn_accept + Accept + + + btn_cancel + Cancel + + + tooltip_btn_cancel + Cancel + + + dlg_add_campaign + Campaign + + + tooltip_dlg_add_campaign + dlg_add_campaign + + + tab_arc + Arc + + + tooltip_tab_arc + Arc + + + tab_connec + Connec + + + tooltip_tab_connec + Connec + + + tab_data + Campaign + + + tooltip_tab_data + Campaign + + + tab_gully + Gully + + + tooltip_tab_gully + Gully + + + tab_link + Link + + + tooltip_tab_link + Link + + + tab_node + Node + + + tooltip_tab_node + Node + + + tab_relations + Elements relation + + + tooltip_tab_relations + Elements relation + + + + add_campaign_inventory + + add_campaign + Campaign + + + tooltip_add_campaign + add_campaign + + + btn_accept + Accept + + + tooltip_btn_accept + btn_accept + + + btn_cancel + Cancel + + + tooltip_btn_cancel + btn_cancel + + + tab_arc + Arc + + + tooltip_tab_arc + tab_arc + + + tab_connec + Connec + + + tooltip_tab_connec + tab_connec + + + tab_data + Campaign + + + tooltip_tab_data + tab_data + + + tab_gully + Gully + + + tooltip_tab_gully + tab_gully + + + tab_link + Link + + + tooltip_tab_link + tab_link + + + tab_node + Node + + + tooltip_tab_node + tab_node + + + tab_relations + Element relations + + + tooltip_tab_relations + tab_relations + + + + add_campaign_review + + actionT + t + + + tooltip_actionT + actionT + + + add_campaign + Campaign + + + tooltip_add_campaign + add_campaign + + + btn_accept + Accept + + + tooltip_btn_accept + btn_accept + + + btn_cancel + Cancel + + + tooltip_btn_cancel + btn_cancel + + + tab_arc + Arc + + + tooltip_tab_arc + tab_arc + + + tab_connec + Connec + + + tooltip_tab_connec + tab_connec + + + tab_data + Campaign + + + tooltip_tab_data + tab_data + + + tab_gully + Gully + + + tooltip_tab_gully + tab_gully + + + tab_link + Link + + + tooltip_tab_link + tab_link + + + tab_node + Node + + + tooltip_tab_node + tab_node + + + tab_relations + Element relations + + + tooltip_tab_relations + tab_relations + + + + add_campaign_review_old + + action_selector + ... + + + tooltip_action_selector + action_selector + + + actionT + t + + + tooltip_actionT + actionT + + + active + Active: + + + tooltip_active + active + + + add_campaign + Campaign + + + tooltip_add_campaign + add_campaign + + + btn_accept + Accept + + + tooltip_btn_accept + btn_accept + + + btn_cancel + Cancel + + + tooltip_btn_cancel + btn_cancel + + + campaign_btn_export_rel + Export to csv + + + tooltip_campaign_btn_export_rel + campaign_btn_export_rel + + + campaign_btn_path_rel + ... + + + tooltip_campaign_btn_path_rel + campaign_btn_path_rel + + + CampaignTab + Campaign + + + tooltip_CampaignTab + CampaignTab + + + grb_campaign + Campaign: + + + tooltip_grb_campaign + grb_campaign + + + label + Exercise: + + + tooltip_label + label + + + label_2 + Serie: + + + tooltip_label_2 + label_2 + + + label_3 + Inici real: + + + tooltip_label_3 + label_3 + + + label_4 + Fi real: + + + tooltip_label_4 + label_4 + + + label_5 + Organization: + + + tooltip_label_5 + label_5 + + + label_6 + Duration: + + + tooltip_label_6 + label_6 + + + label_7 + Status: + + + tooltip_label_7 + label_7 + + + label_8 + Address: + + + tooltip_label_8 + label_8 + + + label_feature_type + Element type: + + + tooltip_label_feature_type + label_feature_type + + + label_flexunion_code_5 + Descripció: + + + tooltip_label_flexunion_code_5 + label_flexunion_code_5 + + + label_node_type + Id: + + + tooltip_label_node_type + label_node_type + + + label_node_type_2 + Planified end: + + + tooltip_label_node_type_2 + label_node_type_2 + + + label_node_type_3 + Planified start: + + + tooltip_label_node_type_3 + label_node_type_3 + + + label_node_type_5 + Rotation: + + + tooltip_label_node_type_5 + label_node_type_5 + + + RelationsTab + Elements relations + + + tooltip_RelationsTab + RelationsTab + + + reviewclass_id + Reviewclass: + + + tooltip_reviewclass_id + reviewclass_id + + + + add_campaign_visit + + actionT + t + + + tooltip_actionT + actionT + + + add_campaign + Visit + + + tooltip_add_campaign + add_campaign + + + btn_accept + Accept + + + tooltip_btn_accept + btn_accept + + + btn_cancel + Cancel + + + tooltip_btn_cancel + btn_cancel + + + tab_arc + Arc + + + tooltip_tab_arc + tab_arc + + + tab_connec + Connec + + + tooltip_tab_connec + tab_connec + + + tab_data + Campaign + + + tooltip_tab_data + tab_data + + + tab_gully + Gully + + + tooltip_tab_gully + tab_gully + + + tab_link + Link + + + tooltip_tab_link + tab_link + + + tab_node + Node + + + tooltip_tab_node + tab_node + + + tab_relations + Element relations + + + tooltip_tab_relations + tab_relations + + + + add_campaign_visit_old + + action_selector + ... + + + tooltip_action_selector + action_selector + + + actionT + t + + + tooltip_actionT + actionT + + + active + Active: + + + tooltip_active + active + + + add_campaign + Lot + + + tooltip_add_campaign + add_campaign + + + btn_accept + Accept + + + tooltip_btn_accept + btn_accept + + + btn_cancel + Close + + + tooltip_btn_cancel + btn_cancel + + + campaign_btn_export_rel + Export to csv + + + tooltip_campaign_btn_export_rel + campaign_btn_export_rel + + + campaign_btn_path_rel + ... + + + tooltip_campaign_btn_path_rel + campaign_btn_path_rel + + + CampaignTab + Campaign + + + tooltip_CampaignTab + CampaignTab + + + grb_campaign + Campaign: + + + tooltip_grb_campaign + grb_campaign + + + label + Exercise: + + + tooltip_label + label + + + label_2 + Serie: + + + tooltip_label_2 + label_2 + + + label_3 + Real start: + + + tooltip_label_3 + label_3 + + + label_4 + Real end: + + + tooltip_label_4 + label_4 + + + label_5 + Organization: + + + tooltip_label_5 + label_5 + + + label_6 + Duration: + + + tooltip_label_6 + label_6 + + + label_7 + Status: + + + tooltip_label_7 + label_7 + + + label_8 + Address: + + + tooltip_label_8 + label_8 + + + label_feature_type + Type of element + + + tooltip_label_feature_type + label_feature_type + + + label_flexunion_code_5 + Description: + + + tooltip_label_flexunion_code_5 + label_flexunion_code_5 + + + label_node_type + Id: + + + tooltip_label_node_type + label_node_type + + + label_node_type_2 + Planified end: + + + tooltip_label_node_type_2 + label_node_type_2 + + + label_node_type_3 + Planified start: + + + tooltip_label_node_type_3 + label_node_type_3 + + + label_node_type_5 + Rotation: + + + tooltip_label_node_type_5 + label_node_type_5 + + + RelationsTab + Elements relations + + + tooltip_RelationsTab + RelationsTab + + + visitclass_id + Visitclass: + + + tooltip_visitclass_id + visitclass_id + + + + add_demand_check + + title + Additional Demand Check + + + btn_cancel + Cancel + + + tooltip_btn_cancel + btn_cancel + + + btn_ok + OK + + + tooltip_btn_ok + btn_ok + + + dlg_add_demand_check + Additional Demand Check + + + tooltip_dlg_add_demand_check + dlg_add_demand_check + + + lbl_config + Configuration file: + + + tooltip_lbl_config + lbl_config + + + lbl_filename + File name: + + + tooltip_lbl_filename + lbl_filename + + + lbl_input_file + Input INP file: + + + tooltip_lbl_input_file + lbl_input_file + + + lbl_nodes + Use nodes from: + + + tooltip_lbl_nodes + lbl_nodes + + + lbl_output_folder + Output folder: + + + tooltip_lbl_output_folder + lbl_output_folder + + + rdb_nodes_config + Configuration file: + + + tooltip_rdb_nodes_config + rdb_nodes_config + + + rdb_nodes_database + Database + + + tooltip_rdb_nodes_database + rdb_nodes_database + + + + add_lot + + title + Lot + + + actionT + t + + + tooltip_actionT + actionT + + + add_lot + Lot + + + tooltip_add_lot + add_lot + + + btn_accept + Accept + + + tooltip_btn_accept + btn_accept + + + btn_cancel + Cancel + + + tooltip_btn_cancel + btn_cancel + + + btn_delete_visit + Delete visit + + + tooltip_btn_delete_visit + Delete visit + + + btn_export_rel + Export to csv + + + tooltip_btn_export_rel + Export to csv + + + btn_export_visits + Export to csv + + + tooltip_btn_export_visits + Export to csv + + + btn_open_photo + Open photo + + + tooltip_btn_open_photo + Open photo + + + btn_open_visit + Open visit + + + tooltip_btn_open_visit + Open visit + + + btn_path + ... + + + tooltip_btn_path + btn_path + + + btn_validate_all + Validate all + + + tooltip_btn_validate_all + Validate all + + + dlg_add_lot + Lot + + + tooltip_dlg_add_lot + dlg_add_lot + + + grb_lot + Lot: + + + tooltip_grb_lot + Lot: + + + grb_ot + Work order + + + tooltip_grb_ot + Work order + + + label_data_event_from + From: + + + tooltip_label_data_event_from + From: + + + label_data_event_to + Until: + + + tooltip_label_data_event_to + To: + + + label_feature_type + Element type: + + + tooltip_label_feature_type + Element type: + + + lbl_address + Address: + + + tooltip_lbl_address + Address: + + + lbl_description + Description: + + + tooltip_lbl_description + Description: + + + lbl_filter + Filter by element id: + + + tooltip_lbl_filter + Filter by element id: + + + lbl_id + Id: + + + tooltip_lbl_id + Id: + + + lbl_observations + Observations: + + + tooltip_lbl_observations + Observations: + + + lbl_ot + Ot: + + + tooltip_lbl_ot + Ot: + + + lbl_ot_type + Ot type: + + + tooltip_lbl_ot_type + Ot type: + + + lbl_performance_type + Performance type: + + + tooltip_lbl_performance_type + Performance type: + + + lbl_plan_end + Planned end: + + + tooltip_lbl_plan_end + Planned end: + + + lbl_plan_start + Planned start: + + + tooltip_lbl_plan_start + Planned start: + + + lbl_real_end + Real end: + + + tooltip_lbl_real_end + Real end: + + + lbl_real_start + Real start: + + + tooltip_lbl_real_start + Real start: + + + lbl_state + State: + + + tooltip_lbl_state + State: + + + lbl_team + Team: + + + tooltip_lbl_team + Team: + + + lbl_user + User: + + + tooltip_lbl_user + User: + + + LotTab + Lot + + + tooltip_LotTab + Lot + + + RelationsTab + Element relations + + + tooltip_RelationsTab + Elements relation + + + tab_arc + Arc + + + tooltip_tab_arc + tab_arc + + + tab_connec + Connec + + + tooltip_tab_connec + tab_connec + + + tab_gully + Gully + + + tooltip_tab_gully + tab_gully + + + tab_link + Link + + + tooltip_tab_link + tab_link + + + tab_node + Node + + + tooltip_tab_node + tab_node + + + VisitsTab + Visits + + + tooltip_VisitsTab + Visits + + + + add_workorder + + title + Workorder + + + actionT + t + + + tooltip_actionT + actionT + + + add_workorder + Workorder + + + tooltip_add_workorder + add_workorder + + + btn_accept + Accept + + + tooltip_btn_accept + btn_accept + + + btn_cancel + Cancel + + + tooltip_btn_cancel + btn_cancel + + + dlg_add_workorder + Workorder + + + tooltip_dlg_add_workorder + dlg_add_workorder + + + tab_data + Workorder + + + tooltip_tab_data + tab_data + + + + admin + + title + Giswater + + + action_create_sample + Create Sample + + + tooltip_action_create_sample + action_create_sample + + + action_create_sample_dev + Create Sample Dev + + + tooltip_action_create_sample_dev + action_create_sample_dev + + + btn_activate_audit + Activate audit environment + + + tooltip_btn_activate_audit + btn_activate_audit + + + btn_close + Close + + + tooltip_btn_close + btn_close + + + btn_copy + Copy + + + tooltip_btn_copy + btn_copy + + + btn_create_asset + Create DB asset schema + + + tooltip_btn_create_asset + btn_create_asset + + + btn_create_audit + Create DB audit schema + + + tooltip_btn_create_audit + btn_create_audit + + + btn_create_cm + Create DB cm schema + + + tooltip_btn_create_cm + btn_create_cm + + + btn_create_field + Create + + + tooltip_btn_create_field + btn_create_field + + + btn_create_qgis_template + QGIS templates + + + tooltip_btn_create_qgis_template + btn_create_qgis_template + + + btn_create_utils + Create + + + tooltip_btn_create_utils + btn_create_utils + + + btn_custom_load_file + Load SQL files + + + tooltip_btn_custom_load_file + btn_custom_load_file + + + btn_custom_select_file + ... + + + tooltip_btn_custom_select_file + btn_custom_select_file + + + btn_delete + Delete + + + tooltip_btn_delete + btn_delete + + + btn_delete_field + Delete + + + tooltip_btn_delete_field + btn_delete_field + + + btn_gis_create + Create + + + tooltip_btn_gis_create + btn_gis_create + + + btn_i18n + i18n manager + + + tooltip_btn_i18n + btn_i18n + + + btn_import_osm_streetaxis + Import OSM Streetaxis + + + tooltip_btn_import_osm_streetaxis + btn_import_osm_streetaxis + + + btn_info + Update + + + tooltip_btn_info + Update version of a selected database schema + + + btn_markdown_generator + Markdown generator + + + tooltip_btn_markdown_generator + btn_markdown_generator + + + btn_reload_audit_triggers + Refresh audit + + + tooltip_btn_reload_audit_triggers + btn_reload_audit_triggers + + + btn_reload_fct_ftrg + Execute + + + tooltip_btn_reload_fct_ftrg + btn_reload_fct_ftrg + + + btn_schema_create + Create + + + tooltip_btn_schema_create + btn_schema_create + + + btn_schema_rename + Rename + + + tooltip_btn_schema_rename + btn_schema_rename + + + btn_translation + Translation files + + + tooltip_btn_translation + btn_translation + + + btn_update_field + Update + + + tooltip_btn_update_field + btn_update_field + + + btn_update_translation + Instant update i18n + + + tooltip_btn_update_translation + btn_update_translation + + + btn_update_utils + Update + + + tooltip_btn_update_utils + btn_update_utils + + + btn_vacuum + Execute + + + tooltip_btn_vacuum + btn_vacuum + + + chk_add_fields_multi + Addfield multicreate + + + tooltip_chk_add_fields_multi + chk_add_fields_multi + + + dlg_admin + Giswater + + + tooltip_dlg_admin + dlg_admin + + + grb_conection + Connection + + + tooltip_grb_conection + grb_conection + + + grb_files_generator + Plugin files generator + + + tooltip_grb_files_generator + grb_files_generator + + + grb_i18n + i18n + + + tooltip_grb_i18n + grb_i18n + + + grb_load_cf + Load custom file + + + tooltip_grb_load_cf + grb_load_cf + + + grb_manage_addfields + Manage add fields + + + tooltip_grb_manage_addfields + grb_manage_addfields + + + grb_project_scin + Project schema + + + tooltip_grb_project_scin + grb_project_scin + + + grb_schema_manager + QGIS project management + + + tooltip_grb_schema_manager + grb_schema_manager + + + grb_schema_reload + Schema management + + + tooltip_grb_schema_reload + grb_schema_reload + + + groupBox + Schema Utils + + + tooltip_groupBox + groupBox + + + groupBox_2 + Additional schema management + + + tooltip_groupBox_2 + groupBox_2 + + + grp_i18n_update + Schema i18n update + + + tooltip_grp_i18n_update + grp_i18n_update + + + grp_import_osm + Import OSM Streetaxis + + + tooltip_grp_import_osm + grp_import_osm + + + label + WS: + + + tooltip_label + label + + + label_2 + UD: + + + tooltip_label_2 + label_2 + + + lbl_add_fields_feature + Feature name: + + + tooltip_lbl_add_fields_feature + lbl_add_fields_feature + + + lbl_connection + Connection name: + + + tooltip_lbl_connection + lbl_connection + + + lbl_name + Name: + + + tooltip_lbl_name + lbl_name + + + lbl_project_type + Project Type: + + + tooltip_lbl_project_type + lbl_project_type + + + lbl_reload_fct_ftrg + Reload functions &amp; function triggers + + + tooltip_lbl_reload_fct_ftrg + lbl_reload_fct_ftrg + + + lbl_vacuum + Execute vacuum on selected schema + + + tooltip_lbl_vacuum + lbl_vacuum + + + tab_advanced + Advanced + + + tooltip_tab_advanced + tab_advanced + + + tab_dev + Dev + + + tooltip_tab_dev + tab_dev + + + tab_general + General + + + tooltip_tab_general + tab_general + + + + admin_addfields + + title + Dialog + + + btn_accept + Accept + + + tooltip_btn_accept + Accept + + + btn_cancel + Cancel + + + tooltip_btn_cancel + btn_cancel + + + btn_open + Open + + + tooltip_btn_open + btn_open + + + dlg_admin_addfields + Dialog + + + tooltip_dlg_admin_addfields + dlg_admin_addfields + + + dlg_main_addfields + Add Fields + + + tooltip_dlg_main_addfields + dlg_main_addfields + + + grb_additional + Additional configuration + + + tooltip_grb_additional + grb_additional + + + grb_mandatory + Mandatory addfields configuration + + + tooltip_grb_mandatory + grb_mandatory + + + lbl_action_function + Action function: + + + tooltip_lbl_action_function + lbl_action_function + + + lbl_active + Active: + + + tooltip_lbl_active + lbl_active + + + lbl_auto_update + Auto update: + + + tooltip_lbl_auto_update + lbl_auto_update + + + lbl_column_id + Column name: + + + tooltip_lbl_column_id + lbl_column_id + + + lbl_columnname + Column name: + + + tooltip_lbl_columnname + lbl_columnname + + + lbl_data_type + Data type: + + + tooltip_lbl_data_type + lbl_data_type + + + lbl_datatype + Data type: + + + tooltip_lbl_datatype + lbl_datatype + + + lbl_dv_orderby + Order by id: + + + tooltip_lbl_dv_orderby + lbl_dv_orderby + + + lbl_dv_querynullvalue + Query null value: + + + tooltip_lbl_dv_querynullvalue + lbl_dv_querynullvalue + + + lbl_dv_querytext + Query text: + + + tooltip_lbl_dv_querytext + lbl_dv_querytext + + + lbl_editability + Editability: + + + tooltip_lbl_editability + lbl_editability + + + lbl_editable + Editable: + + + tooltip_lbl_editable + lbl_editable + + + lbl_enabled + Enabled: + + + tooltip_lbl_enabled + lbl_enabled + + + lbl_field_length + Field length: + + + tooltip_lbl_field_length + lbl_field_length + + + lbl_field_name + Field name: + + + tooltip_lbl_field_name + lbl_field_name + + + lbl_form_type + Form type: + + + tooltip_lbl_form_type + lbl_form_type + + + lbl_formtype + Form type: + + + tooltip_lbl_formtype + lbl_formtype + + + lbl_hidden + Hidden: + + + tooltip_lbl_hidden + lbl_hidden + + + lbl_iseditable + Editable: + + + tooltip_lbl_iseditable + lbl_iseditable + + + lbl_ismandatory + Mandatory: + + + tooltip_lbl_ismandatory + lbl_ismandatory + + + lbl_label + Label: + + + tooltip_lbl_label + lbl_label + + + lbl_layoutname + Layout name: + + + tooltip_lbl_layoutname + lbl_layoutname + + + lbl_linkedobject + Linkedobject: + + + tooltip_lbl_linkedobject + lbl_linkedobject + + + lbl_mandatory + Mandatory: + + + tooltip_lbl_mandatory + lbl_mandatory + + + lbl_multifeaturetype + Multi create feature: + + + tooltip_lbl_multifeaturetype + lbl_multifeaturetype + + + lbl_not_update + Not update: + + + tooltip_lbl_not_update + lbl_not_update + + + lbl_null_value + Null value: + + + tooltip_lbl_null_value + lbl_null_value + + + lbl_num_dec + Num decimals: + + + tooltip_lbl_num_dec + lbl_num_dec + + + lbl_parent + Parent: + + + tooltip_lbl_parent + lbl_parent + + + lbl_parent_id + Parent id: + + + tooltip_lbl_parent_id + lbl_parent_id + + + lbl_placeholder + Placeholder: + + + tooltip_lbl_placeholder + lbl_placeholder + + + lbl_query_filter + Query text filter: + + + tooltip_lbl_query_filter + lbl_query_filter + + + lbl_query_text + Query text: + + + tooltip_lbl_query_text + lbl_query_text + + + lbl_reload_field + Reload field: + + + tooltip_lbl_reload_field + lbl_reload_field + + + lbl_stylesheet + Stylesheet: + + + tooltip_lbl_stylesheet + lbl_stylesheet + + + lbl_tooltip + Tooltip: + + + tooltip_lbl_tooltip + lbl_tooltip + + + lbl_typeahead + Typeahead: + + + tooltip_lbl_typeahead + lbl_typeahead + + + lbl_widgetcontrols + Widgetcontrols + + + tooltip_lbl_widgetcontrols + Example configuration keys {"widgetdim": 150,"setMultiline":true,"vdefault": "01-01-2014", "filterSign": ">} + + + lbl_widget_function + Widget function: + + + tooltip_lbl_widget_function + lbl_widget_function + + + lbl_widget_type + Widget type: + + + tooltip_lbl_widget_type + lbl_widget_type + + + lbl_widgettype + Widget type: + + + tooltip_lbl_widgettype + lbl_widgettype + + + stylesheet + &lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;{&amp;quot;label&amp;quot;:&amp;quot;color:green; font-weight:bold;&amp;quot;,&amp;quot;widget&amp;quot;:{&amp;quot;enabled&amp;quot;:&amp;quot;color:black; font-weight:bold;&amp;quot;,&amp;quot;disabled&amp;quot;:&amp;quot;color:black; font-weight:bold;&amp;quot;}}&lt;/p&gt;&lt;/body&gt;&lt;/html&gt; + + + tooltip_stylesheet + stylesheet + + + tab_create + Create + + + tooltip_tab_create + tab_create + + + tab_delete + Delete + + + tooltip_tab_delete + tab_delete + + + tab_infolog + Log + + + tooltip_tab_infolog + tab_infolog + + + tab_update + Update + + + tooltip_tab_update + tab_update + + + + admin_cm_base + + title + Create base schema + + + btn_accept + Accept + + + tooltip_btn_accept + btn_accept + + + btn_cancel_task + Cancel task + + + tooltip_btn_cancel_task + btn_cancel_task + + + btn_close + Close + + + tooltip_btn_close + btn_close + + + dlg_admin_cm_base + Create base schema + + + tooltip_dlg_admin_cm_base + dlg_admin_cm_base + + + grb_projectschema + Project schema Settings + + + tooltip_grb_projectschema + grb_projectschema + + + lbl_descript + Description: + + + tooltip_lbl_descript + lbl_descript + + + lbl_project_name + Project name: + + + tooltip_lbl_project_name + lbl_project_name + + + + admin_cm_create + + title + Create project + + + actionCreate_Sample + Create Sample + + + tooltip_actionCreate_Sample + actionCreate_Sample + + + actionCreate_Sample_Dev + Create Sample Dev + + + tooltip_actionCreate_Sample_Dev + actionCreate_Sample_Dev + + + btn_accept + Accept + + + tooltip_btn_accept + btn_accept + + + btn_base_schema + Create cm schema + + + tooltip_btn_base_schema + btn_base_schema + + + btn_cancel_task + Cancel task + + + tooltip_btn_cancel_task + btn_cancel_task + + + btn_close + Close + + + tooltip_btn_close + btn_close + + + btn_example + Create example + + + tooltip_btn_example + btn_example + + + btn_parent_schema + Link to parent schema + + + tooltip_btn_parent_schema + btn_parent_schema + + + btn_pschema_qgis_file + Create pschema qgis file + + + tooltip_btn_pschema_qgis_file + btn_pschema_qgis_file + + + dlg_admin_cm_create + Create project + + + tooltip_dlg_admin_cm_create + dlg_admin_cm_create + + + grb_projectschema + CM schema options + + + tooltip_grb_projectschema + grb_projectschema + + + label + Create base schema cm: + + + tooltip_label + label + + + + admin_credentials + + title + Connection credentials + + + btn_accept + Accept + + + tooltip_btn_accept + Accept + + + dlg_admin_credentials + Connection credentials + + + tooltip_dlg_admin_credentials + dlg_admin_credentials + + + dlg_main_credentials + Main Credentials + + + tooltip_dlg_main_credentials + dlg_main_credentials + + + label + SSL Mode: + + + tooltip_label + label + + + lbl_connec + Connection: + + + tooltip_lbl_connec + lbl_connec + + + lbl_connection_message + Could not retrieve connection parameters for: + + + tooltip_lbl_connection_message + lbl_connection_message + + + lbl_password + Password: + + + tooltip_lbl_password + lbl_password + + + lbl_user_name + User name: + + + tooltip_lbl_user_name + lbl_user_name + + + + admin_dbproject + + title + Create project + + + actionCreate_Sample + Create Sample + + + tooltip_actionCreate_Sample + actionCreate_Sample + + + actionCreate_Sample_Dev + Create Sample Dev + + + tooltip_actionCreate_Sample_Dev + actionCreate_Sample_Dev + + + btn_accept + Accept + + + tooltip_btn_accept + Accept + + + btn_cancel_task + Cancel task + + + tooltip_btn_cancel_task + btn_cancel_task + + + btn_close + Close + + + tooltip_btn_close + Close + + + btn_push_file + ... + + + tooltip_btn_push_file + btn_push_file + + + dlg_admin_dbproject + Create project + + + tooltip_dlg_admin_dbproject + dlg_admin_dbproject + + + dlg_main_dbproject + Create project + + + tooltip_dlg_main_dbproject + dlg_main_dbproject + + + grb_projectschema + Project schema Settings + + + tooltip_grb_projectschema + grb_projectschema + + + lbl_descript + Description: + + + tooltip_lbl_descript + lbl_descript + + + lbl_filter + Filter SRID: + + + tooltip_lbl_filter + Spatial reference identifier. Only values shown on a table below are allowed. + + + lbl_locale + Locale: + + + tooltip_lbl_locale + Schema language + + + lbl_project_name + Project name: + + + tooltip_lbl_project_name + Name of a new schema. Name has to be written in lower cases, using only letters used in the english alphabet and without spaces or dashes + + + lbl_project_type + Project Type: + + + tooltip_lbl_project_type + lbl_project_type + + + lbl_source + Data source: + + + tooltip_lbl_source + lbl_source + + + rdb_empty + Empty data + + + tooltip_rdb_empty + rdb_empty + + + rdb_inp + Import INP data + + + tooltip_rdb_inp + rdb_inp + + + rdb_sample_full + Full Example + + + tooltip_rdb_sample_full + rdb_sample_full + + + rdb_sample_inv + Inventory Example + + + tooltip_rdb_sample_inv + rdb_sample_inv + + + + admin_gisproject + + title + Create GIS project + + + actionCreate_Sample + Create Sample + + + tooltip_actionCreate_Sample + actionCreate_Sample + + + actionCreate_Sample_Dev + Create Sample Dev + + + tooltip_actionCreate_Sample_Dev + actionCreate_Sample_Dev + + + btn_accept + Accept + + + tooltip_btn_accept + Accept + + + btn_close + Close + + + tooltip_btn_close + Close + + + btn_gis_folder + ... + + + tooltip_btn_gis_folder + btn_gis_folder + + + dlg_admin_gisproject + Create GIS project + + + tooltip_dlg_admin_gisproject + dlg_admin_gisproject + + + dlg_main_gisproject + Create QGIS project + + + tooltip_dlg_main_gisproject + dlg_main_gisproject + + + lbl_export_user_pass + Export user password: + + + tooltip_lbl_export_user_pass + lbl_export_user_pass + + + lbl_gis_file + GIS file name: + + + tooltip_lbl_gis_file + lbl_gis_file + + + lbl_gis_folder + GIS folder: + + + tooltip_lbl_gis_folder + lbl_gis_folder + + + lbl_project_type + Project type: + + + tooltip_lbl_project_type + lbl_project_type + + + lbl_role + Role type: + + + tooltip_lbl_role + lbl_role + + + statusbar + Create Sample Dev + + + tooltip_statusbar + statusbar + + + txt_roletype + inventory + + + tooltip_txt_roletype + txt_roletype + + + + admin_i18n_manager + + title + Dialog + + + btn_close + Close + + + tooltip_btn_close + btn_close + + + btn_connection + Test connection + + + tooltip_btn_connection + btn_connection + + + btn_search + Search + + + tooltip_btn_search + btn_search + + + chk_all + Check All + + + tooltip_chk_all + chk_all + + + chk_am_dialogs + Check for am tables + + + tooltip_chk_am_dialogs + chk_am_dialogs + + + chk_cm_dialogs + Check for cm tables + + + tooltip_chk_cm_dialogs + chk_cm_dialogs + + + chk_db_dialogs + Check dialogs for DB tables + + + tooltip_chk_db_dialogs + chk_db_dialogs + + + chk_for_su_tables + Check for basic DB tables (cat_feature...) + + + tooltip_chk_for_su_tables + chk_for_su_tables + + + chk_py_dialogs + Check for PY Dialogs + + + tooltip_chk_py_dialogs + chk_py_dialogs + + + chk_py_messages + Check for PY Messages + + + tooltip_chk_py_messages + chk_py_messages + + + dlg_admin_i18n_manager + Dialog + + + tooltip_dlg_admin_i18n_manager + dlg_admin_i18n_manager + + + grb_i18n_conn + i18n Conection + + + tooltip_grb_i18n_conn + grb_i18n_conn + + + grp_search_options + Search Options + + + tooltip_grp_search_options + grp_search_options + + + lbl_database + Database: + + + tooltip_lbl_database + lbl_database + + + lbl_host + Host: + + + tooltip_lbl_host + lbl_host + + + lbl_pass + Password: + + + tooltip_lbl_pass + lbl_pass + + + lbl_port + Port: + + + tooltip_lbl_port + lbl_port + + + lbl_user + User: + + + tooltip_lbl_user + lbl_user + + + + admin_importinp + + btn_close + Close + + + tooltip_btn_close + btn_close + + + btn_run + Run + + + tooltip_btn_run + btn_run + + + dlg_main_importinp + Config parameters + + + tooltip_dlg_main_importinp + dlg_main_importinp + + + tab_config + Config + + + tooltip_tab_config + tab_config + + + tab_loginfo + Info log + + + tooltip_tab_loginfo + tab_loginfo + + + + admin_import_osm + + title + Dialog + + + btn_accept + Execute + + + tooltip_btn_accept + btn_accept + + + btn_close + Close + + + tooltip_btn_close + btn_close + + + dlg_admin_import_osm + Dialog + + + tooltip_dlg_admin_import_osm + dlg_admin_import_osm + + + tab_data + Municipalities + + + tooltip_tab_data + tab_data + + + tab_log + Logs + + + tooltip_tab_log + tab_log + + + + admin_markdown + + title + Dialog + + + btn_close + Close + + + tooltip_btn_close + btn_close + + + btn_generate + Generate + + + tooltip_btn_generate + btn_generate + + + dlg_admin_markdown + Dialog + + + tooltip_dlg_admin_markdown + dlg_admin_markdown + + + lbl_project_type + Project type: + + + tooltip_lbl_project_type + lbl_project_type + + + lbl_schema_update + Schema name: + + + tooltip_lbl_schema_update + lbl_schema_update + + + lb_path + File path: + + + tooltip_lb_path + lb_path + + + pushButton_2 + ... + + + tooltip_pushButton_2 + pushButton_2 + + + + admin_markdown_generator + + title + Dialog + + + btn_close + Close + + + tooltip_btn_close + btn_close + + + btn_generate + Generate + + + tooltip_btn_generate + btn_generate + + + btn_path + ... + + + tooltip_btn_path + btn_path + + + cmb_projecttype + ud + + + tooltip_cmb_projecttype + cmb_projecttype + + + dlg_admin_markdown_generator + Dialog + + + tooltip_dlg_admin_markdown_generator + dlg_admin_markdown_generator + + + grp_markdown_destination + Markdown destiantion + + + tooltip_grp_markdown_destination + grp_markdown_destination + + + grp_origin_schema + Origin schema + + + tooltip_grp_origin_schema + grp_origin_schema + + + lbl_project_type + Project type: + + + tooltip_lbl_project_type + lbl_project_type + + + lbl_schema_update + Schema name: + + + tooltip_lbl_schema_update + lbl_schema_update + + + lb_path + File path: + + + tooltip_lb_path + lb_path + + + + admin_projectinfo + + title + Update SQL + + + actionCreate_Sample + Create Sample + + + tooltip_actionCreate_Sample + actionCreate_Sample + + + actionCreate_Sample_Dev + Create Sample Dev + + + tooltip_actionCreate_Sample_Dev + actionCreate_Sample_Dev + + + btn_close + Close + + + tooltip_btn_close + Close + + + btn_update + Update + + + tooltip_btn_update + btn_update + + + dlg_admin_projectinfo + Update SQL + + + tooltip_dlg_admin_projectinfo + dlg_admin_projectinfo + + + dlg_main_projectinfo + Update SQL + + + tooltip_dlg_main_projectinfo + dlg_main_projectinfo + + + lbl_info + Information about new updates + + + tooltip_lbl_info + lbl_info + + + statusbar + Create Sample Dev + + + tooltip_statusbar + statusbar + + + tab_loginfo + Log + + + tooltip_tab_loginfo + tab_loginfo + + + tab_main + Main + + + tooltip_tab_main + tab_main + + + + admin_qtdialog + + btn_accept + Accept + + + tooltip_btn_accept + Accept + + + btn_cancel + Cancel + + + tooltip_btn_cancel + Cancel + + + btn_path + ... + + + tooltip_btn_path + btn_path + + + dlg_main_qtdialog + Dialog + + + tooltip_dlg_main_qtdialog + dlg_main_qtdialog + + + lbl_formname + Form name: + + + tooltip_lbl_formname + lbl_formname + + + lbl_path + UI path: + + + tooltip_lbl_path + lbl_path + + + + admin_renameproj + + title + Rename + + + actionCreate_Sample + Create Sample + + + tooltip_actionCreate_Sample + actionCreate_Sample + + + actionCreate_Sample_Dev + Create Sample Dev + + + tooltip_actionCreate_Sample_Dev + actionCreate_Sample_Dev + + + btn_accept + Accept + + + tooltip_btn_accept + Accept + + + btn_cancel + Cancel + + + tooltip_btn_cancel + Cancel + + + dlg_admin_renameproj + Rename + + + tooltip_dlg_admin_renameproj + dlg_admin_renameproj + + + dlg_readsq_rename + Rename project + + + tooltip_dlg_readsq_rename + dlg_readsq_rename + + + lbl_rename_copy + Please, set a new project name: + + + tooltip_lbl_rename_copy + lbl_rename_copy + + + statusbar + Create Sample Dev + + + tooltip_statusbar + statusbar + + + + admin_sysfields + + btn_accept + Accept + + + tooltip_btn_accept + Accept + + + btn_cancel + Cancel + + + tooltip_btn_cancel + btn_cancel + + + btn_open + Open + + + tooltip_btn_open + btn_open + + + dlg_main_sysfields + Dialog + + + tooltip_dlg_main_sysfields + dlg_main_sysfields + + + grb_additional_conf + Additional configuration + + + tooltip_grb_additional_conf + grb_additional_conf + + + grb_basic_conf + Basic configuration + + + tooltip_grb_basic_conf + grb_basic_conf + + + lbl_column_id + Column id: + + + tooltip_lbl_column_id + lbl_column_id + + + lbl_editability + Editability: + + + tooltip_lbl_editability + lbl_editability + + + lbl_editable + Editable: + + + tooltip_lbl_editable + lbl_editable + + + lbl_enabled + Enabled: + + + tooltip_lbl_enabled + lbl_enabled + + + lbl_form_name + Form name: + + + tooltip_lbl_form_name + lbl_form_name + + + lbl_hidden + Hidden: + + + tooltip_lbl_hidden + lbl_hidden + + + lbl_label + Label: + + + tooltip_lbl_label + lbl_label + + + lbl_layout_name + Layout name: + + + tooltip_lbl_layout_name + lbl_layout_name + + + lbl_layout_order + Layout order: + + + tooltip_lbl_layout_order + lbl_layout_order + + + lbl_mandatory + Mandatory: + + + tooltip_lbl_mandatory + lbl_mandatory + + + lbl_placeholder + Placeholder: + + + tooltip_lbl_placeholder + lbl_placeholder + + + lbl_stylesheet + Stylesheet: + + + tooltip_lbl_stylesheet + lbl_stylesheet + + + lbl_tooltip + Tooltip: + + + tooltip_lbl_tooltip + lbl_tooltip + + + lbl_widgetcontrols + Widget controls: + + + tooltip_lbl_widgetcontrols + Example configuration keys {"widgetdim": 150,"setMultiline":true,"vdefault": "01-01-2014", "filterSign": ">} + + + tab_create + Create + + + tooltip_tab_create + tab_create + + + tab_update + Update + + + tooltip_tab_update + tab_update + + + + admin_translation + + title + Dialog + + + btn_close + Close + + + tooltip_btn_close + btn_close + + + btn_connection + Test connection + + + tooltip_btn_connection + btn_connection + + + btn_translate + Translate + + + tooltip_btn_translate + btn_translate + + + chk_am_files + Translate am files + + + tooltip_chk_am_files + chk_am_files + + + chk_audit_files + Translate audit files + + + tooltip_chk_audit_files + chk_audit_files + + + chk_cm_files + Translate cm files + + + tooltip_chk_cm_files + chk_cm_files + + + chk_db_msg + Translate db messages + + + tooltip_chk_db_msg + chk_db_msg + + + chk_i18n_files + Translate i18n translations + + + tooltip_chk_i18n_files + chk_i18n_files + + + chk_py_msg + Translate ui and py messages + + + tooltip_chk_py_msg + chk_py_msg + + + chk_relative_langs + Enable fallback to similar locales. + + + tooltip_chk_relative_langs + chk_relative_langs + + + dlg_admin_translation + Dialog + + + tooltip_dlg_admin_translation + dlg_admin_translation + + + grb_info_connection + Connection information + + + tooltip_grb_info_connection + grb_info_connection + + + grb_translate_files + Translate files + + + tooltip_grb_translate_files + grb_translate_files + + + groupBox + Connection information + + + tooltip_groupBox + groupBox + + + groupBox_2 + Translate files + + + tooltip_groupBox_2 + groupBox_2 + + + groupBox_3 + Parameters + + + tooltip_groupBox_3 + groupBox_3 + + + label + If a translation is missing in the specific target dialect (e.g., es_ES), the system searches other regional variants (e.g., es_CR, es_AR). If a match is found, that translation is applied. + + + tooltip_label + label + + + lbl_database + Data base: + + + tooltip_lbl_database + lbl_database + + + lbl_host + Host: + + + tooltip_lbl_host + lbl_host + + + lbl_language + Language: + + + tooltip_lbl_language + lbl_language + + + lbl_pass + Password: + + + tooltip_lbl_pass + lbl_pass + + + lbl_port + Port: + + + tooltip_lbl_port + lbl_port + + + lbl_scode + Source code: + + + tooltip_lbl_scode + lbl_scode + + + lbl_user + User: + + + tooltip_lbl_user + lbl_user + + + + admin_ui + + btn_close + Close + + + tooltip_btn_close + Close + + + btn_constrains + Constrains + + + tooltip_btn_constrains + btn_constrains + + + btn_copy + Copy + + + tooltip_btn_copy + Copy selected database schema + + + btn_create_field + Create + + + tooltip_btn_create_field + btn_create_field + + + btn_create_qgis_template + QGIS templates + + + tooltip_btn_create_qgis_template + btn_create_qgis_template + + + btn_create_view + Create + + + tooltip_btn_create_view + btn_create_view + + + btn_custom_load_file + Load file + + + tooltip_btn_custom_load_file + btn_custom_load_file + + + btn_custom_select_file + ... + + + tooltip_btn_custom_select_file + btn_custom_select_file + + + btn_delete + Delete + + + tooltip_btn_delete + Delete selected database schema + + + btn_delete_field + Delete + + + tooltip_btn_delete_field + btn_delete_field + + + btn_export_ui + Export + + + tooltip_btn_export_ui + btn_export_ui + + + btn_gis_create + Create + + + tooltip_btn_gis_create + btn_gis_create + + + btn_import_ui + Import + + + tooltip_btn_import_ui + btn_import_ui + + + btn_path + ... + + + tooltip_btn_path + btn_path + + + btn_schema_create + btn_schema_create + + + tooltip_btn_schema_create + btn_schema_create + + + btn_schema_file_to_db + File to DB + + + tooltip_btn_schema_file_to_db + btn_schema_file_to_db + + + btn_schema_rename + Rename + + + tooltip_btn_schema_rename + Rename selected database schema + + + btn_translation + Translation files + + + tooltip_btn_translation + btn_translation + + + btn_update_field + Update + + + tooltip_btn_update_field + btn_update_field + + + btn_update_schema + Execute + + + tooltip_btn_update_schema + btn_update_schema + + + btn_update_sys_field + Update + + + tooltip_btn_update_sys_field + btn_update_sys_field + + + btn_visit_create + Create + + + tooltip_btn_visit_create + btn_visit_create + + + btn_visit_delete + Delete + + + tooltip_btn_visit_delete + btn_visit_delete + + + btn_visit_update + Update + + + tooltip_btn_visit_update + btn_visit_update + + + grb_conection + Connection + + + tooltip_grb_conection + grb_conection + + + grb_files_generator + Plugin files generator + + + tooltip_grb_files_generator + grb_files_generator + + + grb_load_cf + Load custom file + + + tooltip_grb_load_cf + Select a folder with .sql files that you want to execute on a selected schema + + + grb_manage_addfields + Manage add fields + + + tooltip_grb_manage_addfields + Create, configure or remove an additional field related to a selected feature type or for all feature types defined in a project + + + grb_manage_childviews + Manage child views + + + tooltip_grb_manage_childviews + Recreate child views for a selected feature type or for all feature types defined in a project + + + grb_manage_sys_fields + Manage system fields + + + tooltip_grb_manage_sys_fields + Configure system fields properties, for a selected feature type, defined on config_form_fields + + + grb_manage_ui + Manage UI + + + tooltip_grb_manage_ui + grb_manage_ui + + + grb_project_scin + Project schema + + + tooltip_grb_project_scin + grb_project_scin + + + grb_schema_manager + QGIS project management + + + tooltip_grb_schema_manager + grb_schema_manager + + + grb_schema_reload + Reload + + + tooltip_grb_schema_reload + grb_schema_reload + + + grb_schema_update + Update + + + tooltip_grb_schema_update + grb_schema_update + + + grb_visit + Visit + + + tooltip_grb_visit + Create, configure or remove visit definition related to a selected feature type or for all feature types defined in a project + + + lbl_add_fields_feature + Feature name: + + + tooltip_lbl_add_fields_feature + lbl_add_fields_feature + + + lbl_child_feature + Feature name: + + + tooltip_lbl_child_feature + lbl_child_feature + + + lbl_connection + Connection name: + + + tooltip_lbl_connection + Name of a database connection defined in QGIS + + + lbl_name + Name: + + + tooltip_lbl_name + Name of the database schema + + + lbl_project_type + Project type: + + + tooltip_lbl_project_type + Type of giswater project + + + lbl_reload_func_sch + Reload functions: + + + tooltip_lbl_reload_func_sch + lbl_reload_func_sch + + + lbl_system_feature + Feature name: + + + tooltip_lbl_system_feature + lbl_system_feature + + + lbl_ui_form_name + Form name: + + + tooltip_lbl_ui_form_name + lbl_ui_form_name + + + lbl_ui_path + UI path: + + + tooltip_lbl_ui_path + lbl_ui_path + + + lbl_update_all_sch + Update all: + + + tooltip_lbl_update_all_sch + lbl_update_all_sch + + + lbl_use_constrains + Use constrains: + + + tooltip_lbl_use_constrains + lbl_use_constrains + + + tab_advanced + Advanced + + + tooltip_tab_advanced + tab_advanced + + + tab_api_manager + Api manager + + + tooltip_tab_api_manager + tab_api_manager + + + tab_fields_manager + Fields manager + + + tooltip_tab_fields_manager + tab_fields_manager + + + tab_general + General + + + tooltip_tab_general + tab_general + + + tab_schema_manager + Schema manager + + + tooltip_tab_schema_manager + tab_schema_manager + + + + admin_update_translation + + title + Dialog + + + btn_close + Close + + + tooltip_btn_close + btn_close + + + btn_connection + Test connection + + + tooltip_btn_connection + btn_connection + + + btn_translate + Translate + + + tooltip_btn_translate + btn_translate + + + chk_add_tab_data + Translate tab_data + + + tooltip_chk_add_tab_data + chk_add_tab_data + + + dlg_admin_update_translation + Dialog + + + tooltip_dlg_admin_update_translation + dlg_admin_update_translation + + + grb_dest_conn + Destiny connection + + + tooltip_grb_dest_conn + grb_dest_conn + + + grb_i18n_conn + i18n Conection + + + tooltip_grb_i18n_conn + grb_i18n_conn + + + grb_parameters + Parameters + + + tooltip_grb_parameters + grb_parameters + + + lbl_database + Database: + + + tooltip_lbl_database + lbl_database + + + lbl_host + Host: + + + tooltip_lbl_host + lbl_host + + + lbl_language + Language: + + + tooltip_lbl_language + lbl_language + + + lbl_pass + Password: + + + tooltip_lbl_pass + lbl_pass + + + lbl_port + Port: + + + tooltip_lbl_port + lbl_port + + + lbl_project_type + Project type: + + + tooltip_lbl_project_type + lbl_project_type + + + lbl_schema_update + Schema name: + + + tooltip_lbl_schema_update + lbl_schema_update + + + lbl_user + User: + + + tooltip_lbl_user + lbl_user + + + + admin_visitclass + + title + Manage visit class + + + btn_cancel + Cancel + + + tooltip_btn_cancel + btn_cancel + + + btn_class_cancel + Cancel + + + tooltip_btn_class_cancel + btn_class_cancel + + + btn_class_ok + Accept + + + tooltip_btn_class_ok + btn_class_ok + + + btn_ok + Accept + + + tooltip_btn_ok + btn_ok + + + btn_param_create + Create + + + tooltip_btn_param_create + btn_param_create + + + btn_param_delete + Delete + + + tooltip_btn_param_delete + btn_param_delete + + + btn_param_update + Update + + + tooltip_btn_param_update + btn_param_update + + + dlg_admin_visitclass + Manage visit class + + + tooltip_dlg_admin_visitclass + dlg_admin_visitclass + + + dlg_main_visitclass + Manage visit class + + + tooltip_dlg_main_visitclass + dlg_main_visitclass + + + groupBox + Class + + + tooltip_groupBox + groupBox + + + groupBox_2 + Parameter + + + tooltip_groupBox_2 + groupBox_2 + + + lbl_active + Active: + + + tooltip_lbl_active + lbl_active + + + lbl_class_id + Class id: + + + tooltip_lbl_class_id + lbl_class_id + + + lbl_class_name + Class name: + + + tooltip_lbl_class_name + lbl_class_name + + + lbl_descript + Descript: + + + tooltip_lbl_descript + lbl_descript + + + lbl_feat_type + Feature type: + + + tooltip_lbl_feat_type + lbl_feat_type + + + lbl_multi_event + Multi event: + + + tooltip_lbl_multi_event + lbl_multi_event + + + lbl_multi_feat + Multi feature: + + + tooltip_lbl_multi_feat + lbl_multi_feat + + + lbl_param_opt + Param options: + + + tooltip_lbl_param_opt + lbl_param_opt + + + lbl_viewname + View name: + + + tooltip_lbl_viewname + lbl_viewname + + + lbl_visit_type + Visit type: + + + tooltip_lbl_visit_type + lbl_visit_type + + + + admin_visitparam + + title + Manage visit parameter + + + btn_cancel + Cancel + + + tooltip_btn_cancel + btn_cancel + + + btn_ok + Accept + + + tooltip_btn_ok + btn_ok + + + dlg_admin_visitparam + Manage visit parameter + + + tooltip_dlg_admin_visitparam + dlg_admin_visitparam + + + dlg_main_visitparam + Manage visit parameter + + + tooltip_dlg_main_visitparam + dlg_main_visitparam + + + grb_params + Parameter + + + tooltip_grb_params + grb_params + + + lbl_code + Code: + + + tooltip_lbl_code + lbl_code + + + lbl_data_type + Data type: + + + tooltip_lbl_data_type + lbl_data_type + + + lbl_default_value + Default value: + + + tooltip_lbl_default_value + lbl_default_value + + + lbl_descript + Descript: + + + tooltip_lbl_descript + lbl_descript + + + lbl_editable + Editable: + + + tooltip_lbl_editable + lbl_editable + + + lbl_enabled + Enabled: + + + tooltip_lbl_enabled + lbl_enabled + + + lbl_form_type + Form type: + + + tooltip_lbl_form_type + lbl_form_type + + + lbl_mandatory + Mandatory: + + + tooltip_lbl_mandatory + lbl_mandatory + + + lbl_parameter_name + Parameter name: + + + tooltip_lbl_parameter_name + lbl_parameter_name + + + lbl_parameter_type + Parameter type: + + + tooltip_lbl_parameter_type + lbl_parameter_type + + + lbl_query_text + Query text: + + + tooltip_lbl_query_text + lbl_query_text + + + lbl_short_descript + Short descript: + + + tooltip_lbl_short_descript + lbl_short_descript + + + lbl_widgettype + Widget type: + + + tooltip_lbl_widgettype + lbl_widgettype + + + + arc_divide + + title + Arc divide + + + dlg_arc_divide + Arc divide + + + tooltip_dlg_arc_divide + dlg_arc_divide + + + + arc_fusion + + title + Arc fusion + + + btn_accept + OK + + + tooltip_btn_accept + Accept + + + btn_cancel + Cancel + + + tooltip_btn_cancel + btn_cancel + + + dlg_arc_fusion + Arc fusion + + + tooltip_dlg_arc_fusion + dlg_arc_fusion + + + enddate + dd/MM/yyyy + + + tooltip_enddate + enddate + + + lbl_arc1asset + Arc 1 asset: + + + tooltip_lbl_arc1asset + lbl_arc1asset + + + lbl_arc1cat + Arc 1 catalog: + + + tooltip_lbl_arc1cat + lbl_arc1cat + + + lbl_arc2asset + Arc 2 asset: + + + tooltip_lbl_arc2asset + lbl_arc2asset + + + lbl_arc2cat + Arc 2 catalog: + + + tooltip_lbl_arc2cat + lbl_arc2cat + + + lbl_enddate + End date: + + + tooltip_lbl_enddate + lbl_enddate + + + lbl_new_asset + New asset: + + + tooltip_lbl_new_asset + lbl_new_asset + + + lbl_new_cat + New catalog: + + + tooltip_lbl_new_cat + lbl_new_cat + + + lbl_nodeaction + Node action: + + + tooltip_lbl_nodeaction + lbl_nodeaction + + + lbl_statetype + State type: + + + tooltip_lbl_statetype + lbl_statetype + + + lbl_workcat_id_end + Workcat id end: + + + tooltip_lbl_workcat_id_end + lbl_workcat_id_end + + + tab_config + Arc fusion + + + tooltip_tab_config + tab_config + + + tab_loginfo + Info Log + + + tooltip_tab_loginfo + tab_loginfo + + + + assignation + + title + Leak Assignation + + + chk_all_leaks + Use all leaks + + + tooltip_chk_all_leaks + Calculates leaks per kilometer per year using all available data, regardless of the 'years to calculate' parameter. + + + dlg_assignation + Leak Assignation + + + tooltip_dlg_assignation + dlg_assignation + + + lbl_buffer + Buffer distance (m): + + + tooltip_lbl_buffer + Distance from a leak at which pipes are selected to be assigned that leak. + + + lbl_builtdate + Filter by built date: + + + tooltip_lbl_builtdate + Uses only pipes that match the builtdate range of the initial one. + + + lbl_builtdate_range + Built date range (years): + + + tooltip_lbl_builtdate_range + Built date range, in years before and after the initial pipe. + + + lbl_cluster_length + Cluster length (m): + + + tooltip_lbl_cluster_length + Maximum sum of pipe lengths within a cluster, in meters. + + + lbl_diameter + Filter by diameter: + + + tooltip_lbl_diameter + Uses only pipes that match the diameter range of the initial one. + + + lbl_diameter_range + Diameter range: + + + tooltip_lbl_diameter_range + Diameter range based on factors of the initial pipe. + + + lbl_leaks + Leaks + + + tooltip_lbl_leaks + lbl_leaks + + + lbl_material + Filter by material: + + + tooltip_lbl_material + Uses only pipes of the same material as the initial one. + + + lbl_max_distance + Maximum distance (m): + + + tooltip_lbl_max_distance + Maximum distance, in meters, between the initial pipe and other pipes included in the cluster. + + + lbl_pipes + Pipes + + + tooltip_lbl_pipes + lbl_pipes + + + lbl_years + Years to calculate: + + + tooltip_lbl_years + Number of years of leak data to consider, based on recency. + + + tab_config + Config + + + tooltip_tab_config + tab_config + + + tab_infolog + Info Log + + + tooltip_tab_infolog + tab_infolog + + + + audit + + title + Audit + + + dlg_audit + Audit + + + tooltip_dlg_audit + dlg_audit + + + dlg_info_audit + Log + + + tooltip_dlg_info_audit + Log + + + groupBox + Updated values + + + tooltip_groupBox + groupBox + + + + audit_manager + + title + Audit manager + + + dlg_audit_manager + Audit manager + + + tooltip_dlg_audit_manager + Audit manager + + + groupBox + Logs + + + tooltip_groupBox + Logs + + + groupBox_2 + Date to + + + tooltip_groupBox_2 + Date to + + + + auxcircle + + title + CAD Draw circle + + + btn_accept + Accept + + + tooltip_btn_accept + Accept + + + btn_cancel + Cancel + + + tooltip_btn_cancel + btn_cancel + + + chk_delete_prev + Delete previous circles + + + tooltip_chk_delete_prev + chk_delete_prev + + + dlg_auxcircle + CAD Draw circle + + + tooltip_dlg_auxcircle + dlg_auxcircle + + + lbl_ins_radius + Insert radius: + + + tooltip_lbl_ins_radius + lbl_ins_radius + + + radius + 0 + + + tooltip_radius + radius + + + + auxpoint + + title + CAD Add point + + + btn_accept + Accept + + + tooltip_btn_accept + Accept + + + btn_cancel + Cancel + + + tooltip_btn_cancel + btn_cancel + + + chk_delete_prev + Delete previous points + + + tooltip_chk_delete_prev + chk_delete_prev + + + dist_x + 0 + + + tooltip_dist_x + dist_x + + + dist_y + 0 + + + tooltip_dist_y + dist_y + + + dlg_auxpoint + CAD Add point + + + tooltip_dlg_auxpoint + dlg_auxpoint + + + grb_from + From: + + + tooltip_grb_from + grb_from + + + lbl_distx + Distance (X): + + + tooltip_lbl_distx + lbl_distx + + + lbl_disty + Distance (Y): + + + tooltip_lbl_disty + lbl_disty + + + rb_left + Init point + + + tooltip_rb_left + rb_left + + + rb_right + End point + + + tooltip_rb_right + rb_right + + + + campaign_management + + title + Campaign Management + + + btn_campaign_selector + Campaign selector + + + tooltip_btn_campaign_selector + Campaign selector + + + btn_cancel + Close + + + tooltip_btn_cancel + btn_cancel + + + campaign_btn_delete + Delete Campaign + + + tooltip_campaign_btn_delete + Delete campaign + + + campaign_btn_open + Open Campaign + + + tooltip_campaign_btn_open + Open campaign + + + campaign_chk_show_nulls + Show null values + + + tooltip_campaign_chk_show_nulls + Show empty values + + + campaign_management + Campaign Management + + + tooltip_campaign_management + campaign_management + + + dlg_campaign_management + Campaign Management + + + tooltip_dlg_campaign_management + Campaign management + + + lbl_column_filter_dates + Filter dates column + + + tooltip_lbl_column_filter_dates + Filter dates column: + + + lbl_data_event_from + From: + + + tooltip_lbl_data_event_from + From: + + + lbl_data_event_to + Until: + + + tooltip_lbl_data_event_to + To: + + + lbl_state + State + + + tooltip_lbl_state + State: + + + + check_project + + title + Check project + + + brb_database_check + Database health check: + + + tooltip_brb_database_check + brb_database_check + + + btn_accept + Accept + + + tooltip_btn_accept + btn_accept + + + btn_close + Close + + + tooltip_btn_close + btn_close + + + dlg_check_project + Check project + + + tooltip_dlg_check_project + dlg_check_project + + + grb_info + Info: + + + tooltip_grb_info + grb_info + + + grb_system_check + System health check: + + + tooltip_grb_system_check + grb_system_check + + + tab_data + Database log + + + tooltip_tab_data + tab_data + + + tab_log + Logs + + + tooltip_tab_log + tab_log + + + + check_project_cm + + title + Check project + + + brb_database_check + Database health check: + + + tooltip_brb_database_check + brb_database_check + + + btn_accept + Accept + + + tooltip_btn_accept + btn_accept + + + chk_manage_config + Check management configs + + + tooltip_chk_manage_config + chk_manage_config + + + dlg_check_project_cm + Check project + + + tooltip_dlg_check_project_cm + dlg_check_project_cm + + + grb_database_health_check + Database health check + + + tooltip_grb_database_health_check + grb_database_health_check + + + grb_info + Info: + + + tooltip_grb_info + grb_info + + + grb_system_check + System health check: + + + tooltip_grb_system_check + grb_system_check + + + grb_system_health_check + System health check + + + tooltip_grb_system_health_check + grb_system_health_check + + + tab_data + Database log + + + tooltip_tab_data + tab_data + + + tab_log + Logs + + + tooltip_tab_log + tab_log + + + + common + + btn_help + Help + + + tooltip_btn_help + Help + + + + comp_x_pages + + title + Print composer pages automaticaly + + + btn_accept + Accept + + + tooltip_btn_accept + btn_accept + + + btn_close + Close + + + tooltip_btn_close + btn_close + + + dlg_comp_x_pages + Print composer pages automaticaly + + + tooltip_dlg_comp_x_pages + dlg_comp_x_pages + + + grb_comp + Composers list + + + tooltip_grb_comp + grb_comp + + + lbl_composers + Select composer: + + + tooltip_lbl_composers + lbl_composers + + + lbl_folder + Select folder: + + + tooltip_lbl_folder + lbl_folder + + + lbl_prefix + Prefix file: + + + tooltip_lbl_prefix + lbl_prefix + + + lbl_single + Single file: + + + tooltip_lbl_single + lbl_single + + + lbl_sleep + Sleep time: + + + tooltip_lbl_sleep + lbl_sleep + + + + config + + title + Config + + + btn_accept + Accept + + + tooltip_btn_accept + Accept + + + btn_cancel + Cancel + + + tooltip_btn_cancel + btn_cancel + + + dlg_config + Config + + + tooltip_dlg_config + dlg_config + + + grb_addfields + Addfields + + + tooltip_grb_addfields + grb_addfields + + + grb_admin_om + O&&M + + + tooltip_grb_admin_om + grb_admin_om + + + grb_admin_other + Other + + + tooltip_grb_admin_other + grb_admin_other + + + grb_arc + Arc + + + tooltip_grb_arc + grb_arc + + + grb_basic + Basic + + + tooltip_grb_basic + grb_basic + + + grb_category_type + Category type + + + tooltip_grb_category_type + grb_category_type + + + grb_connec + Connec + + + tooltip_grb_connec + grb_connec + + + grb_epa + Epa + + + tooltip_grb_epa + grb_epa + + + grb_fluid_type + Fluid type + + + tooltip_grb_fluid_type + grb_fluid_type + + + grb_function_type + Function type + + + tooltip_grb_function_type + grb_function_type + + + grb_gully + Gully + + + tooltip_grb_gully + grb_gully + + + grb_inventory + Inventory + + + tooltip_grb_inventory + grb_inventory + + + grb_link + Link + + + tooltip_grb_link + grb_link + + + grb_location_type + Location type + + + tooltip_grb_location_type + grb_location_type + + + grb_masterplan + MasterPlan + + + tooltip_grb_masterplan + grb_masterplan + + + grb_node + Node + + + tooltip_grb_node + grb_node + + + grb_om + O&&M + + + tooltip_grb_om + grb_om + + + grb_other + Other + + + tooltip_grb_other + grb_other + + + grb_system + System + + + tooltip_grb_system + grb_system + + + grb_topology + Topology + + + tooltip_grb_topology + grb_topology + + + grb_utils + Utils + + + tooltip_grb_utils + grb_utils + + + tab_addfields + Addfields + + + tooltip_tab_addfields + tab_addfields + + + tab_admin + Admin + + + tooltip_tab_admin + tab_admin + + + tab_basic + Basic + + + tooltip_tab_basic + tab_basic + + + tab_featurecat + Featurecat + + + tooltip_tab_featurecat + tab_featurecat + + + tab_mantype + Man type + + + tooltip_tab_mantype + tab_mantype + + + + connect_link + + title + Connect to network + + + dlg_connect_link + Connect to network + + + tooltip_dlg_connect_link + dlg_connect_link + + + groupBox + Link configuration + + + tooltip_groupBox + groupBox + + + groupBox_2 + Connecs + + + tooltip_groupBox_2 + groupBox_2 + + + groupBox_3 + Arcs + + + tooltip_groupBox_3 + groupBox_3 + + + tab_connect + Link + + + tooltip_tab_connect + tab_connect + + + tab_infolog + Info log + + + tooltip_tab_infolog + tab_infolog + + + + create_style_group + + btn_add + Accept + + + tooltip_btn_add + Accept + + + btn_cancel + Cancel + + + tooltip_btn_cancel + Cancel + + + descript + descript + + + tooltip_descript + Description + + + feature_id + feature_id + + + tooltip_feature_id + Category ID + + + idval + idval + + + tooltip_idval + Category name + + + lbl_cat_id + Category ID: + + + tooltip_lbl_cat_id + lbl_cat_id + + + lbl_cat_name + Category name: + + + tooltip_lbl_cat_name + lbl_cat_name + + + lbl_descript + Description: + + + tooltip_lbl_descript + lbl_descript + + + lbl_role + Role: + + + tooltip_lbl_role + lbl_role + + + sys_role + sys_role + + + tooltip_sys_role + Role that will be able to use this style + + + + crm_trace + + lbl_inst + Instructions: + + + tooltip_lbl_inst + lbl_inst + + + + csv + + title + Import CSV + + + btn_accept + Accept + + + tooltip_btn_accept + Accept + + + btn_cancel + Cancel + + + tooltip_btn_cancel + Cancel + + + btn_file_csv + ... + + + tooltip_btn_file_csv + btn_file_csv + + + dlg_csv + Import CSV + + + tooltip_dlg_csv + dlg_csv + + + lbl_decimal + Decimal separator: + + + tooltip_lbl_decimal + lbl_decimal + + + lbl_delimiter + Delimiter: + + + tooltip_lbl_delimiter + lbl_delimiter + + + lbl_file + File: + + + tooltip_lbl_file + lbl_file + + + lbl_ignore_header + Ignore headers: + + + tooltip_lbl_ignore_header + lbl_ignore_header + + + lbl_import_label + Import label: + + + tooltip_lbl_import_label + lbl_import_label + + + lbl_import_type + Import type: + + + tooltip_lbl_import_type + lbl_import_type + + + lbl_info + Info: + + + tooltip_lbl_info + lbl_info + + + lbl_set_of_charac + Set of characters: + + + tooltip_lbl_set_of_charac + lbl_set_of_charac + + + rb_comma + , + + + tooltip_rb_comma + rb_comma + + + rb_dec_comma + , + + + tooltip_rb_dec_comma + rb_dec_comma + + + rb_dec_period + . + + + tooltip_rb_dec_period + rb_dec_period + + + rb_semicolon + ; + + + tooltip_rb_semicolon + rb_semicolon + + + rb_space + Space + + + tooltip_rb_space + rb_space + + + tab_info + Info log + + + tooltip_tab_info + tab_info + + + tab_preview + Preview + + + tooltip_tab_preview + tab_preview + + + + dialog_table + + title + Table + + + btn_accept + Accept + + + tooltip_btn_accept + Accept + + + btn_add_row + Add row + + + tooltip_btn_add_row + btn_add_row + + + btn_cancel + Cancel + + + tooltip_btn_cancel + btn_cancel + + + dlg_dialog_table + Table + + + tooltip_dlg_dialog_table + dlg_dialog_table + + + + dialog_text + + title + Text + + + btn_accept + Accept + + + tooltip_btn_accept + Accept + + + btn_cancel + Cancel + + + tooltip_btn_cancel + btn_cancel + + + btn_close + Close + + + tooltip_btn_close + btn_close + + + dlg_dialog_text + Text + + + tooltip_dlg_dialog_text + dlg_dialog_text + + + + dimensioning + + title + Dimensioning + + + actionEdit + Edit + + + tooltip_actionEdit + actionEdit + + + actionOrientation + Orientation + + + tooltip_actionOrientation + actionOrientation + + + actionSnapping + Snapping + + + tooltip_actionSnapping + actionSnapping + + + btn_accept + Accept + + + tooltip_btn_accept + Accept + + + btn_cancel + Cancel + + + tooltip_btn_cancel + btn_cancel + + + dlg_dimensioning + Dimensioning + + + tooltip_dlg_dimensioning + dlg_dimensioning + + + grb_depth + Measurements + + + tooltip_grb_depth + grb_depth + + + grb_other + Other + + + tooltip_grb_other + grb_other + + + grb_symbology + Circle symbology + + + tooltip_grb_symbology + grb_symbology + + + toolBar + toolBar + + + tooltip_toolBar + toolBar + + + + doc + + title + Document + + + btn_accept + Accept + + + tooltip_btn_accept + Accept + + + btn_add_geom + Add geom + + + tooltip_btn_add_geom + Add geom + + + btn_apply + Apply + + + tooltip_btn_apply + Apply + + + btn_cancel + Cancel + + + tooltip_btn_cancel + btn_cancel + + + btn_delete + btn_delete + + + tooltip_btn_delete + Delete + + + btn_insert + btn_insert + + + tooltip_btn_insert + Insert + + + btn_path_doc + ... + + + tooltip_btn_path_doc + btn_path_doc + + + btn_path_url + web + + + tooltip_btn_path_url + Open explorer to allow selection of web path. It's also posible to just paste the path to the Link text box + + + btn_snapping + btn_snapping + + + tooltip_btn_snapping + Snapping + + + date + dd/MM/yyyy + + + tooltip_date + date + + + _dlg_doc + Document + + + tooltip__dlg_doc + _dlg_doc + + + dlg_doc + Document + + + tooltip_dlg_doc + dlg_doc + + + label + Date: + + + tooltip_label + label + + + lbl_doc_name + Doc name: + + + tooltip_lbl_doc_name + lbl_doc_name + + + lbl_doc_type + Doc type: + + + tooltip_lbl_doc_type + lbl_doc_type + + + lbl_filter_name + Doc name: + + + tooltip_lbl_filter_name + lbl_filter_name + + + lbl_link + Link: + + + tooltip_lbl_link + Link + + + lbl_observ + Observations: + + + tooltip_lbl_observ + lbl_observ + + + path + path + + + tooltip_path + Fill it with some accesible folder path or web path + + + tab + Visit + + + tooltip_tab + tab + + + tab_arc + Arc + + + tooltip_tab_arc + tab_arc + + + tab_connec + Connec + + + tooltip_tab_connec + tab_connec + + + tab_doc + Document + + + tooltip_tab_doc + tab_doc + + + tab_elem + Element + + + tooltip_tab_elem + tab_elem + + + tab_gully + Gully + + + tooltip_tab_gully + tab_gully + + + tab_link + Link + + + tooltip_tab_link + tab_link + + + tab_node + Node + + + tooltip_tab_node + tab_node + + + tab_psector + Psector + + + tooltip_tab_psector + tab_psector + + + tab_rel + Relations + + + tooltip_tab_rel + tab_rel + + + tab_visit + Visit + + + tooltip_tab_visit + tab_visit + + + tab_workcat + Workcat + + + tooltip_tab_workcat + tab_workcat + + + + doc_manager + + title + Document management + + + btn_cancel + Close + + + tooltip_btn_cancel + btn_cancel + + + btn_create + Create + + + tooltip_btn_create + Create + + + btn_delete + Delete + + + tooltip_btn_delete + btn_delete + + + dlg_doc_manager + Document management + + + tooltip_dlg_doc_manager + dlg_doc_manager + + + lbl_filter_name + Filter by: Doc name + + + tooltip_lbl_filter_name + lbl_filter_name + + + + dscenario + + title + Dialog + + + btn_accept + Accept + + + tooltip_btn_accept + btn_accept + + + btn_close + Close + + + tooltip_btn_close + btn_close + + + btn_properties + Properties + + + tooltip_btn_properties + btn_properties + + + dlg_dscenario + Dialog + + + tooltip_dlg_dscenario + dlg_dscenario + + + + dscenario_manager + + title + Dscenario manager + + + btn_cancel + Close + + + tooltip_btn_cancel + btn_cancel + + + btn_create + Create + + + tooltip_btn_create + btn_create + + + btn_delete + Delete + + + tooltip_btn_delete + btn_delete + + + btn_duplicate + Duplicate + + + tooltip_btn_duplicate + btn_duplicate + + + btn_toggle_active + Toggle active + + + tooltip_btn_toggle_active + Toggle active + + + btn_toolbox + Actions + + + tooltip_btn_toolbox + btn_toolbox + + + btn_update + Update + + + tooltip_btn_update + btn_update + + + btn_update_dscenario + Current Dscenario + + + tooltip_btn_update_dscenario + btn_update_dscenario + + + chk_active + Show inactive + + + tooltip_chk_active + Show inactive + + + dlg_dscenario_manager + Dscenario manager + + + tooltip_dlg_dscenario_manager + dlg_dscenario_manager + + + lbl_dscenario_name + Filter by: Dscenario name + + + tooltip_lbl_dscenario_name + lbl_dscenario_name + + + + element + + title + Element + + + btn_accept + Accept + + + tooltip_btn_accept + Accept + + + btn_add_geom + Add geom + + + tooltip_btn_add_geom + Add geometry + + + btn_cancel + Cancel + + + tooltip_btn_cancel + btn_cancel + + + btn_delete + btn_delete + + + tooltip_btn_delete + Delete + + + btn_insert + btn_insert + + + tooltip_btn_insert + Insert + + + btn_snapping + btn_snapping + + + tooltip_btn_snapping + Snapping + + + dlg_element + Element + + + tooltip_dlg_element + dlg_element + + + lbl_buildercat_id + Buildercat id: + + + tooltip_lbl_buildercat_id + lbl_buildercat_id + + + lbl_builtdate + Builtdate: + + + tooltip_lbl_builtdate + lbl_builtdate + + + lbl_code + Code: + + + tooltip_lbl_code + lbl_code + + + lbl_comment + Comment: + + + tooltip_lbl_comment + lbl_comment + + + lbl_elementcat_id + Elementcat id: + + + tooltip_lbl_elementcat_id + lbl_elementcat_id + + + lbl_element_id + Element id: + + + tooltip_lbl_element_id + lbl_element_id + + + lbl_element_type + Element_type: + + + tooltip_lbl_element_type + lbl_element_type + + + lbl_enddate + Enddate: + + + tooltip_lbl_enddate + lbl_enddate + + + lbl_expl_id + Exploitation: + + + tooltip_lbl_expl_id + lbl_expl_id + + + lbl_link + Link: + + + tooltip_lbl_link + Link + + + lbl_location_type + Location type: + + + tooltip_lbl_location_type + lbl_location_type + + + lbl_lock_level + TextLabel + + + tooltip_lbl_lock_level + lbl_lock_level + + + lbl_num_element + Element number: + + + tooltip_lbl_num_element + lbl_num_element + + + lbl_num_elements + Num. Element: + + + tooltip_lbl_num_elements + lbl_num_elements + + + lbl_observ + Observations: + + + tooltip_lbl_observ + lbl_observ + + + lbl_ownercat_id + Owner: + + + tooltip_lbl_ownercat_id + lbl_ownercat_id + + + lbl_rotation + Rotation: + + + tooltip_lbl_rotation + lbl_rotation + + + lbl_state + State: + + + tooltip_lbl_state + lbl_state + + + lbl_state_type + State type: + + + tooltip_lbl_state_type + lbl_state_type + + + lbl_verified + Verified: + + + tooltip_lbl_verified + lbl_verified + + + lbl_workcat_id + Workcat id: + + + tooltip_lbl_workcat_id + Workcat id + + + lbl_workcat_id_end + Workcat id end: + + + tooltip_lbl_workcat_id_end + Workcat id end + + + rotation + 0 + + + tooltip_rotation + rotation + + + tab_arc + Arc + + + tooltip_tab_arc + Arc + + + tab_connec + Connec + + + tooltip_tab_connec + tab_connec + + + tab_element + Element + + + tooltip_tab_element + tab_element + + + tab_gully + Gully + + + tooltip_tab_gully + tab_gully + + + tab_link + Link + + + tooltip_tab_link + tab_link + + + tab_node + Node + + + tooltip_tab_node + tab_node + + + tab_relations + Relations + + + tooltip_tab_relations + Relations + + + undelete + Undelete + + + tooltip_undelete + undelete + + + + element_manager + + title + Element management + + + btn_cancel + Close + + + tooltip_btn_cancel + btn_cancel + + + btn_delete + Delete + + + tooltip_btn_delete + Delete + + + dlg_element_manager + Element management + + + tooltip_dlg_element_manager + dlg_element_manager + + + lbl_element_id + Filter by: Element id + + + tooltip_lbl_element_id + lbl_element_id + + + + emitter_calibration + + title + Emmiter Calibration + + + btn_accept + Accept + + + tooltip_btn_accept + btn_accept + + + btn_close + Close + + + tooltip_btn_close + btn_close + + + dlg_emitter_calibration + Emmiter Calibration + + + tooltip_dlg_emitter_calibration + dlg_emitter_calibration + + + lbl_config_file + Configuration file: + + + tooltip_lbl_config_file + lbl_config_file + + + lbl_filename + File name: + + + tooltip_lbl_filename + lbl_filename + + + lbl_input_file + Input INP file: + + + tooltip_lbl_input_file + lbl_input_file + + + lbl_output_filename + Output files name: + + + tooltip_lbl_output_filename + lbl_output_filename + + + + epatools_add_demand_check + + title + Additional Demand Check + + + btn_cancel + Cancel + + + tooltip_btn_cancel + btn_cancel + + + btn_ok + OK + + + tooltip_btn_ok + btn_ok + + + btn_push_config_file + ... + + + tooltip_btn_push_config_file + btn_push_config_file + + + btn_push_inp_input_file + ... + + + tooltip_btn_push_inp_input_file + btn_push_inp_input_file + + + btn_push_output_folder + ... + + + tooltip_btn_push_output_folder + btn_push_output_folder + + + dlg_epatools_add_demand_check + Additional Demand Check + + + tooltip_dlg_epatools_add_demand_check + dlg_epatools_add_demand_check + + + lbl_config + Configuration file: + + + tooltip_lbl_config + lbl_config + + + lbl_filename + File name: + + + tooltip_lbl_filename + lbl_filename + + + lbl_input_file + Input INP file: + + + tooltip_lbl_input_file + lbl_input_file + + + lbl_nodes + Use nodes from: + + + tooltip_lbl_nodes + lbl_nodes + + + lbl_output_folder + Output folder: + + + tooltip_lbl_output_folder + lbl_output_folder + + + rdb_nodes_config + Configuration file + + + tooltip_rdb_nodes_config + rdb_nodes_config + + + rdb_nodes_database + Database + + + tooltip_rdb_nodes_database + rdb_nodes_database + + + tab_config + Config + + + tooltip_tab_config + tab_config + + + tab_infolog + Info Log + + + tooltip_tab_infolog + tab_infolog + + + + epatools_emitter_calibration + + title + Emitter Calibration + + + btn_accept + Accept + + + tooltip_btn_accept + btn_accept + + + btn_close + Close + + + tooltip_btn_close + btn_close + + + btn_push_config_file + ... + + + tooltip_btn_push_config_file + btn_push_config_file + + + btn_push_inp_input_file + ... + + + tooltip_btn_push_inp_input_file + btn_push_inp_input_file + + + btn_push_output_folder + ... + + + tooltip_btn_push_output_folder + btn_push_output_folder + + + dlg_epatools_emitter_calibration + Emitter Calibration + + + tooltip_dlg_epatools_emitter_calibration + dlg_epatools_emitter_calibration + + + lbl_config_file + Configuration file: + + + tooltip_lbl_config_file + lbl_config_file + + + lbl_filename + File name: + + + tooltip_lbl_filename + lbl_filename + + + lbl_input_file + Input INP file: + + + tooltip_lbl_input_file + lbl_input_file + + + lbl_output_filename + Output files name: + + + tooltip_lbl_output_filename + lbl_output_filename + + + tab_config + Config + + + tooltip_tab_config + tab_config + + + tab_loginfo + Info Log + + + tooltip_tab_loginfo + tab_loginfo + + + + epatools_quantized_demands + + title + Quantized demands + + + btn_cancel + Cancel + + + tooltip_btn_cancel + btn_cancel + + + btn_ok + OK + + + tooltip_btn_ok + btn_ok + + + btn_push_config_file + ... + + + tooltip_btn_push_config_file + btn_push_config_file + + + btn_push_inp_input_file + ... + + + tooltip_btn_push_inp_input_file + btn_push_inp_input_file + + + btn_push_output_folder + ... + + + tooltip_btn_push_output_folder + btn_push_output_folder + + + dlg_epatools_quantized_demands + Quantized demands + + + tooltip_dlg_epatools_quantized_demands + dlg_epatools_quantized_demands + + + lbl_config_file + Configuration file: + + + tooltip_lbl_config_file + lbl_config_file + + + lbl_filename + File name: + + + tooltip_lbl_filename + lbl_filename + + + lbl_input_file + Input INP file: + + + tooltip_lbl_input_file + lbl_input_file + + + lbl_output_folder + Output folder: + + + tooltip_lbl_output_folder + lbl_output_folder + + + tab_config + Config + + + tooltip_tab_config + tab_config + + + tab_infolog + Info Log + + + tooltip_tab_infolog + tab_infolog + + + + epatools_recursive_go2epa + + title + Epa Multi Calls + + + btn_accept + OK + + + tooltip_btn_accept + btn_accept + + + btn_close + Close + + + tooltip_btn_close + btn_close + + + btn_push_config_file + ... + + + tooltip_btn_push_config_file + btn_push_config_file + + + btn_push_output_folder + ... + + + tooltip_btn_push_output_folder + btn_push_output_folder + + + dlg_epatools_recursive_go2epa + Epa Multi Calls + + + tooltip_dlg_epatools_recursive_go2epa + dlg_epatools_recursive_go2epa + + + lbl_config_file + Configuration file: + + + tooltip_lbl_config_file + lbl_config_file + + + lbl_filename + File name: + + + tooltip_lbl_filename + lbl_filename + + + lbl_output_folder + Output folder: + + + tooltip_lbl_output_folder + lbl_output_folder + + + tab_config + Config + + + tooltip_tab_config + tab_config + + + tab_infolog + Info Log + + + tooltip_tab_infolog + tab_infolog + + + + epatools_static_calibration + + title + Static Calibration + + + btn_cancel + Cancel + + + tooltip_btn_cancel + btn_cancel + + + btn_ok + OK + + + tooltip_btn_ok + btn_ok + + + btn_push_config_file + ... + + + tooltip_btn_push_config_file + btn_push_config_file + + + btn_push_inp_input_file + ... + + + tooltip_btn_push_inp_input_file + btn_push_inp_input_file + + + btn_push_output_folder + ... + + + tooltip_btn_push_output_folder + btn_push_output_folder + + + btn_save_dscenario + Save changes to dscenario + + + tooltip_btn_save_dscenario + btn_save_dscenario + + + dlg_epatools_static_calibration + Static Calibration + + + tooltip_dlg_epatools_static_calibration + dlg_epatools_static_calibration + + + lbl_config_file + Configuration file: + + + tooltip_lbl_config_file + lbl_config_file + + + lbl_dscenario + Dscenario: + + + tooltip_lbl_dscenario + lbl_dscenario + + + lbl_filename + File name: + + + tooltip_lbl_filename + lbl_filename + + + lbl_inp_input_file + Input INP file: + + + tooltip_lbl_inp_input_file + lbl_inp_input_file + + + lbl_output_folder + Output folder: + + + tooltip_lbl_output_folder + lbl_output_folder + + + tab_config + Config + + + tooltip_tab_config + tab_config + + + tab_infolog + Info Log + + + tooltip_tab_infolog + tab_infolog + + + + epatools_valve_operation_check + + title + Valve Operation Check + + + btn_cancel + Cancel + + + tooltip_btn_cancel + btn_cancel + + + btn_ok + OK + + + tooltip_btn_ok + btn_ok + + + btn_push_config_file + ... + + + tooltip_btn_push_config_file + btn_push_config_file + + + btn_push_inp_input_file + ... + + + tooltip_btn_push_inp_input_file + btn_push_inp_input_file + + + btn_push_output_folder + ... + + + tooltip_btn_push_output_folder + btn_push_output_folder + + + dlg_epatools_valve_operation_check + Valve Operation Check + + + tooltip_dlg_epatools_valve_operation_check + dlg_epatools_valve_operation_check + + + lbl_config_file + Configuration file: + + + tooltip_lbl_config_file + lbl_config_file + + + lbl_filename + File name: + + + tooltip_lbl_filename + lbl_filename + + + lbl_input_file + Input INP file: + + + tooltip_lbl_input_file + lbl_input_file + + + lbl_output_folder + Output folder: + + + tooltip_lbl_output_folder + lbl_output_folder + + + lbl_scenarios + Use scenarios from: + + + tooltip_lbl_scenarios + lbl_scenarios + + + rdb_scenarios_config + Configuration file + + + tooltip_rdb_scenarios_config + rdb_scenarios_config + + + rdb_scenarios_database + Database + + + tooltip_rdb_scenarios_database + rdb_scenarios_database + + + tab_config + Config + + + tooltip_tab_config + tab_config + + + tab_infolog + Info Log + + + tooltip_tab_infolog + tab_infolog + + + + fastprint + + title + Print + + + btn_close + Close + + + tooltip_btn_close + btn_close + + + btn_preview + Preview + + + tooltip_btn_preview + btn_preview + + + btn_print + Print + + + tooltip_btn_print + btn_print + + + dlg_fastprint + Print + + + tooltip_dlg_fastprint + dlg_fastprint + + + grb_map_options + Map options: + + + tooltip_grb_map_options + grb_map_options + + + grb_option_values + Optional values: + + + tooltip_grb_option_values + grb_option_values + + + + feature_delete + + title + Delete feature + + + btn_cancel + Close + + + tooltip_btn_cancel + btn_cancel + + + btn_delete + Delete selected feature + + + tooltip_btn_delete + Delete + + + btn_delete_another + Delete another feature + + + tooltip_btn_delete_another + btn_delete_another + + + btn_relations + Show feature relations + + + tooltip_btn_relations + btn_relations + + + btn_snapping + btn_snapping + + + tooltip_btn_snapping + Snapping + + + dlg_feature_delete + Delete feature + + + tooltip_dlg_feature_delete + dlg_feature_delete + + + lbl_feature_id + Feature id: + + + tooltip_lbl_feature_id + lbl_feature_id + + + lbl_feature_type + Feature type: + + + tooltip_lbl_feature_type + lbl_feature_type + + + tab_del_feature + Delete feature + + + tooltip_tab_del_feature + tab_del_feature + + + tab_info_log + Info log + + + tooltip_tab_info_log + tab_info_log + + + + feature_end + + title + End feature + + + btn_accept + Accept + + + tooltip_btn_accept + Accept + + + btn_cancel + Cancel + + + tooltip_btn_cancel + Cancel + + + btn_delete + btn_delete + + + tooltip_btn_delete + Delete + + + btn_insert + btn_insert + + + tooltip_btn_insert + Insert + + + btn_new_workcat + btn_new_workcat + + + tooltip_btn_new_workcat + btn_new_workcat + + + btn_snapping + btn_snapping + + + tooltip_btn_snapping + Snapping + + + builtdate + dd/MM/yyyy + + + tooltip_builtdate + builtdate + + + dlg_feature_end + End feature + + + tooltip_dlg_feature_end + dlg_feature_end + + + enddate + dd/MM/yyyy + + + tooltip_enddate + enddate + + + lbl_description + Description: + + + tooltip_lbl_description + lbl_description + + + lbl_enddate + End date: + + + tooltip_lbl_enddate + lbl_enddate + + + lbl_state_type + State type end: + + + tooltip_lbl_state_type + lbl_state_type + + + lbl_workcat_date + Workcat date: + + + tooltip_lbl_workcat_date + lbl_workcat_date + + + lbl_workcat_id_end + Workcat id end: + + + tooltip_lbl_workcat_id_end + lbl_workcat_id_end + + + tab_arc + Arc + + + tooltip_tab_arc + tab_arc + + + tab_connec + Connec + + + tooltip_tab_connec + tab_connec + + + tab_elem + Elem + + + tooltip_tab_elem + tab_elem + + + tab_gully + Gully + + + tooltip_tab_gully + tab_gully + + + tab_info_log + Info Log + + + tooltip_tab_info_log + tab_info_log + + + tab_link + Link + + + tooltip_tab_link + tab_link + + + tab_node + Node + + + tooltip_tab_node + tab_node + + + tab_relations + Relations + + + tooltip_tab_relations + Relations + + + tab_workcat + Workcat + + + tooltip_tab_workcat + tab_workcat + + + + feature_end_connec + + title + Workcat end list + + + btn_accept + Accept + + + tooltip_btn_accept + Accept + + + btn_cancel + Cancel + + + tooltip_btn_cancel + Cancel + + + dlg_feature_end_connec + Workcat end list + + + tooltip_dlg_feature_end_connec + dlg_feature_end_connec + + + lbl_filter_by + Filter by arc_id: + + + tooltip_lbl_filter_by + lbl_filter_by + + + lbl_info + These connecs or gullys will be disconnected when selected arcs are deleted + + + tooltip_lbl_info + lbl_info + + + + feature_replace + + title + Replace feature + + + btn_accept + Ok + + + tooltip_btn_accept + btn_accept + + + btn_cancel + Cancel + + + tooltip_btn_cancel + btn_cancel + + + config + Config + + + tooltip_config + config + + + dlg_feature_replace + Replace feature + + + tooltip_dlg_feature_replace + dlg_feature_replace + + + enddate + dd/MM/yyyy + + + tooltip_enddate + enddate + + + grb_end_parameters + End parameters + + + tooltip_grb_end_parameters + grb_end_parameters + + + grb_feature_parameters + Feature parameters + + + tooltip_grb_feature_parameters + grb_feature_parameters + + + lbl_catalog_id + Catalog: + + + tooltip_lbl_catalog_id + lbl_catalog_id + + + lbl_current_catalog_id + Current catalog id: + + + tooltip_lbl_current_catalog_id + lbl_current_catalog_id + + + lbl_description + Description: + + + tooltip_lbl_description + lbl_description + + + lbl_enddate + Replace date: + + + tooltip_lbl_enddate + lbl_enddate + + + lbl_feature_type + Current feature type: + + + tooltip_lbl_feature_type + lbl_feature_type + + + lbl_keep_asset_id + Keep asset id: + + + tooltip_lbl_keep_asset_id + lbl_keep_asset_id + + + lbl_keep_elements + Keep elements: + + + tooltip_lbl_keep_elements + lbl_keep_elements + + + lbl_keep_epa_values + Keep EPA Values: + + + tooltip_lbl_keep_epa_values + lbl_keep_epa_values + + + lbl_new_catalog_id + New catalog id: + + + tooltip_lbl_new_catalog_id + lbl_new_catalog_id + + + lbl_new_feature_type + New feature type: + + + tooltip_lbl_new_feature_type + lbl_new_feature_type + + + lbl_workcat_id_end + Workcat id: + + + tooltip_lbl_workcat_id_end + lbl_workcat_id_end + + + tab_info_log + Info log + + + tooltip_tab_info_log + tab_info_log + + + + featuretype_change + + title + Change object type + + + dlg_featuretype_change + Change object type + + + tooltip_dlg_featuretype_change + dlg_featuretype_change + + + + go2epa + + title + Go2Epa + + + btn_accept + Accept + + + tooltip_btn_accept + Accept + + + btn_cancel + Cancel + + + tooltip_btn_cancel + btn_cancel + + + btn_close + Close + + + tooltip_btn_close + Close + + + btn_file_inp + ... + + + tooltip_btn_file_inp + btn_file_inp + + + btn_file_rpt + ... + + + tooltip_btn_file_rpt + btn_file_rpt + + + btn_hs_ds + Selector + + + tooltip_btn_hs_ds + btn_hs_ds + + + btn_options + Options + + + tooltip_btn_options + btn_options + + + chk_exec + Execute EPA software + + + tooltip_chk_exec + chk_exec + + + chk_export + Export INP + + + tooltip_chk_export + chk_export + + + chk_export_subcatch + Export UD subcatchments + + + tooltip_chk_export_subcatch + chk_export_subcatch + + + chk_import_result + Import result + + + tooltip_chk_import_result + chk_import_result + + + chk_only_check + Use result network geometry + + + tooltip_chk_only_check + chk_only_check + + + chk_recurrent + Use iterative calls + + + tooltip_chk_recurrent + chk_recurrent + + + dlg_go2epa + Go2Epa + + + tooltip_dlg_go2epa + dlg_go2epa + + + grb_file_manager + File manager + + + tooltip_grb_file_manager + grb_file_manager + + + grb_process_options + Preprocessing options + + + tooltip_grb_process_options + grb_process_options + + + groupBox + Preprocessing options + + + tooltip_groupBox + groupBox + + + groupBox_2 + File manager + + + tooltip_groupBox_2 + groupBox_2 + + + lbl_counter + Counter + + + tooltip_lbl_counter + lbl_counter + + + lbl_inp_file + INP file: + + + tooltip_lbl_inp_file + lbl_inp_file + + + lbl_result_name + Result name: + + + tooltip_lbl_result_name + lbl_result_name + + + lbl_rpt_file + RPT file: + + + tooltip_lbl_rpt_file + lbl_rpt_file + + + tab_file_manager + File manager + + + tooltip_tab_file_manager + tab_file_manager + + + tab_loginfo + Info log + + + tooltip_tab_loginfo + tab_loginfo + + + + go2epa_manager + + title + Epa result management + + + btn_archive + Toggle archive + + + tooltip_btn_archive + Toggle archive + + + btn_close + Close + + + tooltip_btn_close + btn_close + + + btn_delete + Delete + + + tooltip_btn_delete + Delete + + + btn_edit + Edit + + + tooltip_btn_edit + Edit + + + btn_show_inp_data + Show inp data + + + tooltip_btn_show_inp_data + Show inp data + + + btn_toggle_corporate + Toggle corporate + + + tooltip_btn_toggle_corporate + btn_toggle_corporate + + + dlg_go2epa_manager + Epa result management + + + tooltip_dlg_go2epa_manager + dlg_go2epa_manager + + + label + Info: + + + tooltip_label + label + + + lbl_result_id + Filter by: Result id + + + tooltip_lbl_result_id + lbl_result_id + + + + go2epa_options + + title + Go2Epa - options + + + btn_accept + Accept + + + tooltip_btn_accept + Accept + + + btn_cancel + Cancel + + + tooltip_btn_cancel + btn_cancel + + + dlg_go2epa_options + Go2Epa - options + + + tooltip_dlg_go2epa_options + dlg_go2epa_options + + + grb_energy + Energy + + + tooltip_grb_energy + grb_energy + + + grb_general + General + + + tooltip_grb_general + grb_general + + + grb_hydraulics + Hydraulics + + + tooltip_grb_hydraulics + grb_hydraulics + + + grb_other + Other + + + tooltip_grb_other + grb_other + + + grb_reactions + Reactions + + + tooltip_grb_reactions + grb_reactions + + + grb_reports + Reports + + + tooltip_grb_reports + grb_reports + + + grb_time_steps + Date &amp; time steps + + + tooltip_grb_time_steps + grb_time_steps + + + tab_inp + Inp + + + tooltip_tab_inp + tab_inp + + + tab_other + Other + + + tooltip_tab_other + tab_other + + + + go2epa_result + + title + EPA result selector + + + btn_accept + Accept + + + tooltip_btn_accept + Accept + + + btn_cancel + Cancel + + + tooltip_btn_cancel + Cancel + + + dlg_go2epa_result + EPA result selector + + + tooltip_dlg_go2epa_result + dlg_go2epa_result + + + lbl_compare_date + Compare date: + + + tooltip_lbl_compare_date + lbl_compare_date + + + lbl_compare_time + Compare time: + + + tooltip_lbl_compare_time + lbl_compare_time + + + lbl_result_name_to_compare + Result name (to compare): + + + tooltip_lbl_result_name_to_compare + lbl_result_name_to_compare + + + lbl_result_name_to_show + Result name (to show): + + + tooltip_lbl_result_name_to_show + lbl_result_name_to_show + + + lbl_selector_date + Selector date: + + + tooltip_lbl_selector_date + lbl_selector_date + + + lbl_selector_time + Selector time: + + + tooltip_lbl_selector_time + lbl_selector_time + + + lbl_time_to_compare + Time (to compare): + + + tooltip_lbl_time_to_compare + lbl_time_to_compare + + + lbl_time_to_show + Time (to show): + + + tooltip_lbl_time_to_show + lbl_time_to_show + + + tab_datetime + Date time + + + tooltip_tab_datetime + tab_datetime + + + tab_result + Result + + + tooltip_tab_result + tab_result + + + tab_time + Time + + + tooltip_tab_time + tab_time + + + + go2epa_selector + + title + Result compare selector + + + dlg_go2epa_selector + Result compare selector + + + tooltip_dlg_go2epa_selector + dlg_go2epa_selector + + + tab_result + Result + + + tooltip_tab_result + tab_result + + + tab_time + Date time + + + tooltip_tab_time + tab_time + + + + go2iber + + title + Go2Iber + + + btn_accept + Accept + + + tooltip_btn_accept + btn_accept + + + btn_cancel + Cancel + + + tooltip_btn_cancel + btn_cancel + + + btn_iber_options + Iber Options + + + tooltip_btn_iber_options + Iber Options + + + btn_path + ... + + + tooltip_btn_path + btn_path + + + btn_swmm_options + SWMM Options + + + tooltip_btn_swmm_options + SWMM Options + + + dlg_go2iber + Go2Iber + + + tooltip_dlg_go2iber + dlg_go2iber + + + groupBox + Options + + + tooltip_groupBox + groupBox + + + lbl_mesh + Mesh: + + + tooltip_lbl_mesh + lbl_mesh + + + lbl_path + Folder path: + + + tooltip_lbl_path + lbl_path + + + lbl_result_name + Result name: + + + tooltip_lbl_result_name + lbl_result_name + + + tab_config + Config + + + tooltip_tab_config + tab_config + + + tab_infolog + Log + + + tooltip_tab_infolog + tab_infolog + + + + info_catalog + + title + Catalog + + + btn_accept + Accept + + + tooltip_btn_accept + Accept + + + btn_cancel + Cancel + + + tooltip_btn_cancel + btn_cancel + + + dlg_info_catalog + Catalog + + + tooltip_dlg_info_catalog + dlg_info_catalog + + + + info_crmvalue + + title + Hydrometer + + + btn_accept + Accept + + + tooltip_btn_accept + Accept + + + btn_close + Close + + + tooltip_btn_close + btn_close + + + dlg_info_crmvalue + Hydrometer + + + tooltip_dlg_info_crmvalue + dlg_info_crmvalue + + + lbl_hydrometer_id + Hydrometer id: + + + tooltip_lbl_hydrometer_id + lbl_hydrometer_id + + + + info_crossect + + title + Section + + + btn_close + Close + + + tooltip_btn_close + Close + + + dlg_info_crossect + Section + + + tooltip_dlg_info_crossect + dlg_info_crossect + + + lbl_cost_area + Conduit area: + + + tooltip_lbl_cost_area + lbl_cost_area + + + lbl_cost_b_left + Cost B left + + + tooltip_lbl_cost_b_left + lbl_cost_b_left + + + lbl_cost_b_right + Cost B right + + + tooltip_lbl_cost_b_right + lbl_cost_b_right + + + lbl_cost_bulk + Conduit bulk: + + + tooltip_lbl_cost_bulk + lbl_cost_bulk + + + lbl_cost_exc + m3/ml Excess: + + + tooltip_lbl_cost_exc + lbl_cost_exc + + + lbl_cost_excav + m3/ml Excav: + + + tooltip_lbl_cost_excav + lbl_cost_excav + + + lbl_cost_fill + m3/ml Filling: + + + tooltip_lbl_cost_fill + lbl_cost_fill + + + lbl_cost_trench + % Trenchlinning: + + + tooltip_lbl_cost_trench + lbl_cost_trench + + + lbl_cost_width + Cost width + + + tooltip_lbl_cost_width + lbl_cost_width + + + lbl_cost_y_param + Cost y param + + + tooltip_lbl_cost_y_param + lbl_cost_y_param + + + lbl_section_image + Section image + + + tooltip_lbl_section_image + lbl_section_image + + + + info_epa + + title + InfoEpa + + + btn_accept + Accept + + + tooltip_btn_accept + btn_accept + + + btn_cancel + Cancel + + + tooltip_btn_cancel + btn_cancel + + + dlg_info_epa + InfoEpa + + + tooltip_dlg_info_epa + dlg_info_epa + + + info_epa + InfoEpa + + + tooltip_info_epa + info_epa + + + page_base + Base + + + tooltip_page_base + page_base + + + page_dscenario + Dscenario + + + tooltip_page_dscenario + page_dscenario + + + page_dwf + DWF + + + tooltip_page_dwf + page_dwf + + + page_inflows + INFLOWS + + + tooltip_page_inflows + page_inflows + + + + info_feature + + title + Junction + + + actionAudit + Audit + + + tooltip_actionAudit + actionAudit + + + actionCatalog + Catalog + + + tooltip_actionCatalog + actionCatalog + + + actionCentered + Centered + + + tooltip_actionCentered + actionCentered + + + actionCopyPaste + Copy&amp;Paste + + + tooltip_actionCopyPaste + actionCopyPaste + + + actionDemand + Demand + + + tooltip_actionDemand + actionDemand + + + actionEdit + Edit + + + tooltip_actionEdit + actionEdit + + + actionGetArcId + Get new arc id + + + tooltip_actionGetArcId + actionGetArcId + + + actionGetParentId + Get new parent id + + + tooltip_actionGetParentId + actionGetParentId + + + actionHelp + Help + + + tooltip_actionHelp + actionHelp + + + actionInterpolate + Interpolate + + + tooltip_actionInterpolate + actionInterpolate + + + actionLink + Link + + + tooltip_actionLink + actionLink + + + actionMapZone + MapZone + + + tooltip_actionMapZone + actionMapZone + + + actionOrifice + Orifice + + + tooltip_actionOrifice + actionOrifice + + + actionOutlet + Outlet + + + tooltip_actionOutlet + actionOutlet + + + actionRotation + Rotation + + + tooltip_actionRotation + actionRotation + + + actionSection + Show section + + + tooltip_actionSection + actionSection + + + actionSetGeom + Set Geom + + + tooltip_actionSetGeom + actionSetGeom + + + actionSetToArc + Set to arc + + + tooltip_actionSetToArc + actionSetToArc + + + actionWeir + Weir + + + tooltip_actionWeir + actionWeir + + + actionWorkcat + Workcat + + + tooltip_actionWorkcat + actionWorkcat + + + btn_accept + Accept + + + tooltip_btn_accept + Accept + + + btn_apply + Apply + + + tooltip_btn_apply + Apply + + + btn_cancel + Cancel + + + tooltip_btn_cancel + Cancel + + + btn_delete + btn_delete + + + tooltip_btn_delete + Delete + + + btn_doc_delete + btn_doc_delete + + + tooltip_btn_doc_delete + Delete document + + + btn_doc_insert + btn_doc_insert + + + tooltip_btn_doc_insert + Insert document + + + btn_doc_new + btn_doc_new + + + tooltip_btn_doc_new + Create new document + + + btn_insert + btn_insert + + + tooltip_btn_insert + Insert + + + btn_link + btn_link + + + tooltip_btn_link + btn_link + + + btn_new_element + btn_new_element + + + tooltip_btn_new_element + btn_new_element + + + btn_new_visit + btn_new_visit + + + tooltip_btn_new_visit + btn_new_visit + + + btn_open_doc + btn_open_doc + + + tooltip_btn_open_doc + Open document + + + btn_open_element + btn_open_element + + + tooltip_btn_open_element + btn_open_element + + + btn_open_gallery + btn_open_gallery + + + tooltip_btn_open_gallery + btn_open_gallery + + + btn_open_visit + btn_open_visit + + + tooltip_btn_open_visit + btn_open_visit + + + btn_open_visit_doc + btn_open_visit_doc + + + tooltip_btn_open_visit_doc + btn_open_visit_doc + + + btn_open_visit_event + btn_open_visit_event + + + tooltip_btn_open_visit_event + btn_open_visit_event + + + dlg_info_feature + Junction + + + tooltip_dlg_info_feature + dlg_info_feature + + + grb_frelem_dscenario + Dscenario + + + tooltip_grb_frelem_dscenario + grb_frelem_dscenario + + + groupBox + INP + + + tooltip_groupBox + groupBox + + + groupBox_2 + RPT + + + tooltip_groupBox_2 + groupBox_2 + + + lbl_cat_per_filter + Cat period filter: + + + tooltip_lbl_cat_per_filter + lbl_cat_per_filter + + + lbl_doc_id + Doc name: + + + tooltip_lbl_doc_id + lbl_doc_id + + + lbl_downstream_features + Downstream features: + + + tooltip_lbl_downstream_features + lbl_downstream_features + + + lbl_from_doc + From: + + + tooltip_lbl_from_doc + lbl_from_doc + + + lbl_from_om + From: + + + tooltip_lbl_from_om + lbl_from_om + + + lbl_parameter_om + Parameter: + + + tooltip_lbl_parameter_om + lbl_parameter_om + + + lbl_param_type_om + Parameter type: + + + tooltip_lbl_param_type_om + lbl_param_type_om + + + lbl_to_doc + To: + + + tooltip_lbl_to_doc + lbl_to_doc + + + lbl_to_om + To: + + + tooltip_lbl_to_om + lbl_to_om + + + lbl_type_doc + Type: + + + tooltip_lbl_type_doc + lbl_type_doc + + + lbl_upstream_features + Upstream features: + + + tooltip_lbl_upstream_features + lbl_upstream_features + + + page + Data + + + tooltip_page + page + + + page_2 + Dscenario + + + tooltip_page_2 + page_2 + + + page_add + Additional data + + + tooltip_page_add + page_add + + + page_main + Main data + + + tooltip_page_main + page_main + + + tab_arc + Arc + + + tooltip_tab_arc + tab_arc + + + tab_connec + Connec + + + tooltip_tab_connec + tab_connec + + + tab_connections + Conections + + + tooltip_tab_connections + tab_connections + + + tab_data + Data + + + tooltip_tab_data + tab_data + + + tab_documents + Document + + + tooltip_tab_documents + tab_documents + + + tab_elements + Elements + + + tooltip_tab_elements + tab_elements + + + tab_epa + EPA + + + tooltip_tab_epa + tab_epa + + + tab_event + Event + + + tooltip_tab_event + tab_event + + + tab_features + Features + + + tooltip_tab_features + tab_features + + + tab_gully + Gully + + + tooltip_tab_gully + tab_gully + + + tab_hydrometer + Hydrometer + + + tooltip_tab_hydrometer + tab_hydrometer + + + tab_hydrometer_val + Hydrometer values + + + tooltip_tab_hydrometer_val + tab_hydrometer_val + + + tab_link + Link + + + tooltip_tab_link + tab_link + + + tab_node + Node + + + tooltip_tab_node + tab_node + + + tab_om + O&amp;&amp;M + + + tooltip_tab_om + tab_om + + + tab_orifice + Orifice + + + tooltip_tab_orifice + tab_orifice + + + tab_outlet + Outlet + + + tooltip_tab_outlet + tab_outlet + + + tab_plan + Plan + + + tooltip_tab_plan + tab_plan + + + tab_pump + Pump + + + tooltip_tab_pump + tab_pump + + + tab_relations + Relations + + + tooltip_tab_relations + Relations + + + tab_rpt + Rpt + + + tooltip_tab_rpt + tab_rpt + + + tab_shortpipe + Shortpipe + + + tooltip_tab_shortpipe + tab_shortpipe + + + tab_valve + Valve + + + tooltip_tab_valve + tab_valve + + + tab_visit + Visit + + + tooltip_tab_visit + tab_visit + + + tab_weir + Weir + + + tooltip_tab_weir + tab_weir + + + toolBar + toolBar + + + tooltip_toolBar + toolBar + + + + info_generic + + title + Basic Info + + + actionEdit + Edit + + + tooltip_actionEdit + actionEdit + + + actionSetToArc + Set To Arc + + + tooltip_actionSetToArc + actionSetToArc + + + btn_accept + Accept + + + tooltip_btn_accept + Accept + + + btn_close + Close + + + tooltip_btn_close + btn_close + + + dlg_info_generic + Basic Info + + + tooltip_dlg_info_generic + dlg_info_generic + + + toolBar + toolBar + + + tooltip_toolBar + toolBar + + + + info_workcat + + title + New workcat + + + btn_accept + Accept + + + tooltip_btn_accept + Accept + + + btn_cancel + Cancel + + + tooltip_btn_cancel + btn_cancel + + + builtdate + dd/MM/yyyy + + + tooltip_builtdate + builtdate + + + dlg_info_workcat + New workcat + + + tooltip_dlg_info_workcat + dlg_info_workcat + + + lbl_builtdate + Builtdate: + + + tooltip_lbl_builtdate + lbl_builtdate + + + lbl_descript + Description: + + + tooltip_lbl_descript + lbl_descript + + + lbl_link + Link: + + + tooltip_lbl_link + Link + + + lbl_work_id + Work id: + + + tooltip_lbl_work_id + lbl_work_id + + + lbl_workid_key_1 + Workid key 1: + + + tooltip_lbl_workid_key_1 + lbl_workid_key_1 + + + lbl_workid_key_2 + Workid key 2: + + + tooltip_lbl_workid_key_2 + lbl_workid_key_2 + + + + inp_config_import + + title + Config INP import + + + btn_accept + Accept + + + tooltip_btn_accept + btn_accept + + + btn_cancel + Cancel + + + tooltip_btn_cancel + btn_cancel + + + btn_load + Load... + + + tooltip_btn_load + btn_load + + + btn_reload + Reload options + + + tooltip_btn_reload + btn_reload + + + btn_save + Save... + + + tooltip_btn_save + btn_save + + + chk_force_commit + Force commit + + + tooltip_chk_force_commit + chk_force_commit + + + dlg_inp_config_import + Config INP import + + + tooltip_dlg_inp_config_import + dlg_inp_config_import + + + grb_basic + Basic + + + tooltip_grb_basic + grb_basic + + + grb_info + Info + + + tooltip_grb_info + grb_info + + + grb_mapzones + Mapzones + + + tooltip_grb_mapzones + grb_mapzones + + + label + Psector: + + + tooltip_label + label + + + label_2 + Exploitation: + + + tooltip_label_2 + label_2 + + + label_3 + Municipality: + + + tooltip_label_3 + label_3 + + + label_4 + Sector: + + + tooltip_label_4 + label_4 + + + lbl_arcs + Select the appropriate arccat_id for each arc combination from the options below. If you choose &quot;Create new&quot;, enter the new name in the &quot;New catalog name&quot; column. + + + tooltip_lbl_arcs + lbl_arcs + + + lbl_dscenario + Demands dscenario name: + + + tooltip_lbl_dscenario + lbl_dscenario + + + lbl_feature + Select the appropriate feature_id for each EPA type from the options below. If needed, you can add a new feature type in the Giswater catalog and click the &quot;Reload Options&quot; button below. + + + tooltip_lbl_feature + lbl_feature + + + lbl_flwreg + Select the appropriate catalog id for each flow regulator from the options below. If you choose &quot;Create new&quot;, enter the new name in the &quot;New catalog name&quot; column. + + + tooltip_lbl_flwreg + lbl_flwreg + + + lbl_material + Select the appropriate material for each roughness from the options below. If needed, you can add a new material in the Giswater catalog and click the &quot;Reload Options&quot; button below. + + + tooltip_lbl_material + lbl_material + + + lbl_nodes + Select the appropriate nodecat_id for each EPA type from the options below. If you choose &quot;Create new&quot;, enter the new name in the &quot;New catalog name&quot; column. + + + tooltip_lbl_nodes + lbl_nodes + + + lbl_raingage + Default raingage: + + + tooltip_lbl_raingage + lbl_raingage + + + lbl_workcat + Workcat_id: + + + tooltip_lbl_workcat + lbl_workcat + + + tab_arccat + Arcs + + + tooltip_tab_arccat + tab_arccat + + + tab_basic + Basic + + + tooltip_tab_basic + tab_basic + + + tab_feature + Features + + + tooltip_tab_feature + tab_feature + + + tab_flwreg + Flow regulators + + + tooltip_tab_flwreg + tab_flwreg + + + tab_infolog + Info log + + + tooltip_tab_infolog + tab_infolog + + + tab_material + Material + + + tooltip_tab_material + tab_material + + + tab_nodecat + Nodes + + + tooltip_tab_nodecat + tab_nodecat + + + tbl_arcs + New catalog name + + + tooltip_tbl_arcs + tbl_arcs + + + tbl_feature + Feature + + + tooltip_tbl_feature + tbl_feature + + + tbl_flwreg + New catalog name + + + tooltip_tbl_flwreg + tbl_flwreg + + + tbl_material + Material + + + tooltip_tbl_material + tbl_material + + + tbl_nodes + New catalog name + + + tooltip_tbl_nodes + tbl_nodes + + + + inp_parsing + + title + Parsing INP file + + + btn_accept + Accept + + + tooltip_btn_accept + btn_accept + + + dlg_inp_parsing + Parsing INP file + + + tooltip_dlg_inp_parsing + dlg_inp_parsing + + + tab_databaselog + Info log + + + tooltip_tab_databaselog + tab_databaselog + + + + interpolate + + title + Interpolate + + + btn_accept + Accept + + + tooltip_btn_accept + btn_accept + + + btn_close + Close + + + tooltip_btn_close + btn_close + + + dlg_interpolate + Interpolate + + + tooltip_dlg_interpolate + dlg_interpolate + + + rb_extrapolate + Extrapolate + + + tooltip_rb_extrapolate + rb_extrapolate + + + rb_interpolate + Interpolate + + + tooltip_rb_interpolate + rb_interpolate + + + + load_menu + + title + Dialog + + + btn_close + Close + + + tooltip_btn_close + btn_close + + + dlg_load_menu + Dialog + + + tooltip_dlg_load_menu + dlg_load_menu + + + + lot_management + + title + Lot Management + + + btn_cancel + Close + + + tooltip_btn_cancel + Close + + + btn_delete + Delete Lot + + + tooltip_btn_delete + Delete lot + + + btn_export + Export to csv + + + tooltip_btn_export + Export to csv + + + btn_lot_selector + Lots selector + + + tooltip_btn_lot_selector + Lots selector + + + btn_manage_load + Waste registration + + + tooltip_btn_manage_load + Waste registration + + + btn_open + Open Lot + + + tooltip_btn_open + Open lot + + + btn_work_register + Work logs + + + tooltip_btn_work_register + Work logs + + + chk_assignacio + Pendent assign works to OT + + + tooltip_chk_assignacio + Pendent assign works to OT + + + chk_show_nulls + Show null values + + + tooltip_chk_show_nulls + Show empty values + + + dlg_lot_management + Lot Management + + + tooltip_dlg_lot_management + dlg_lot_management + + + lbl_address + Address: + + + tooltip_lbl_address + Address: + + + lbl_column_filter + Filter dates column: + + + tooltip_lbl_column_filter + Data column filter: + + + lbl_data_event_from + From: + + + tooltip_lbl_data_event_from + From: + + + lbl_data_event_to + Until: + + + tooltip_lbl_data_event_to + To: + + + lbl_name + Name: + + + tooltip_lbl_name + lbl_name + + + lbl_performance_type + Performance type: + + + tooltip_lbl_performance_type + Performance type: + + + lbl_serie + Serie: + + + tooltip_lbl_serie + Serie: + + + lbl_state + State: + + + tooltip_lbl_state + State: + + + lot_management + Lot Management + + + tooltip_lot_management + lot_management + + + + lot_selector + + btn_ok + Close + + + tooltip_btn_ok + Close + + + lbl_performance_type + Performance type: + + + tooltip_lbl_performance_type + Performance type: + + + lbl_state + State: + + + tooltip_lbl_state + State: + + + + main_dbproject + + title + Create project + + + dlg_main_dbproject + Main dbproject: + + + tooltip_dlg_main_dbproject + dlg_main_dbproject + + + lbl_descript + Description: + + + tooltip_lbl_descript + lbl_descript + + + + mapzone_config + + title + Mapzone Config + + + btn_accept + OK + + + tooltip_btn_accept + btn_accept + + + btn_add_forceClosed + ADD + + + tooltip_btn_add_forceClosed + btn_add_forceClosed + + + btn_add_ignore + ADD + + + tooltip_btn_add_ignore + btn_add_ignore + + + btn_add_nodeParent + ADD + + + tooltip_btn_add_nodeParent + btn_add_nodeParent + + + btn_cancel + Cancel + + + tooltip_btn_cancel + btn_cancel + + + btn_clear_preview + Clear Preview + + + tooltip_btn_clear_preview + btn_clear_preview + + + btn_remove_forceClosed + REMOVE + + + tooltip_btn_remove_forceClosed + btn_remove_forceClosed + + + btn_remove_ignore + REMOVE + + + tooltip_btn_remove_ignore + btn_remove_ignore + + + btn_remove_nodeParent + REMOVE + + + tooltip_btn_remove_nodeParent + btn_remove_nodeParent + + + dlg_mapzone_config + Mapzone Config + + + tooltip_dlg_mapzone_config + dlg_mapzone_config + + + lbl_forceClosed + forceClosed: + + + tooltip_lbl_forceClosed + lbl_forceClosed + + + lbl_ignore + ignore + + + tooltip_lbl_ignore + lbl_ignore + + + lbl_nodeParent + nodeParent: + + + tooltip_lbl_nodeParent + lbl_nodeParent + + + lbl_preview + Preview: + + + tooltip_lbl_preview + lbl_preview + + + lbl_toArc + toArc: + + + tooltip_lbl_toArc + lbl_toArc + + + + mapzone_manager + + title + Mapzones manager + + + btn_cancel + Close + + + tooltip_btn_cancel + Cancel + + + btn_config + Config + + + tooltip_btn_config + Configure + + + btn_create + Create + + + tooltip_btn_create + Create + + + btn_delete + Delete + + + tooltip_btn_delete + Delete + + + btn_execute + btn_execute + + + tooltip_btn_execute + Execute mapzone analysis process + + + btn_toggle_active + Toggle active + + + tooltip_btn_toggle_active + Toggle active + + + btn_update + Update + + + tooltip_btn_update + Update + + + chk_active + Show inactive + + + tooltip_chk_active + Show inactive + + + chk_show_all + Show all mapzones + + + tooltip_chk_show_all + Show all mapzones + + + dlg_mapzone_manager + Mapzones manager + + + tooltip_dlg_mapzone_manager + dlg_mapzone_manager + + + lbl_mapzone_name + Filter by: Mapzone name, id or code + + + tooltip_lbl_mapzone_name + Filter by: Mapzone name, id or code + + + + massive_composer + + title + Print composer pages automatically + + + btn_accept + Accept + + + tooltip_btn_accept + btn_accept + + + btn_close + Close + + + tooltip_btn_close + btn_close + + + btn_path + ... + + + tooltip_btn_path + btn_path + + + dlg_massive_composer + Print composer pages automatically + + + tooltip_dlg_massive_composer + dlg_massive_composer + + + grb_comp + Composers list + + + tooltip_grb_comp + grb_comp + + + lbl_composers + Select composer: + + + tooltip_lbl_composers + lbl_composers + + + lbl_folder + Select folder: + + + tooltip_lbl_folder + lbl_folder + + + lbl_prefix + Prefix file: + + + tooltip_lbl_prefix + lbl_prefix + + + lbl_single + Single file: + + + tooltip_lbl_single + lbl_single + + + lbl_sleep + Sleep time: + + + tooltip_lbl_sleep + lbl_sleep + + + + mincut + + title + Mincut + + + actionAddConnec + Connec Mincut + + + tooltip_actionAddConnec + actionAddConnec + + + actionAddHydrometer + Hydrometer Mincut + + + tooltip_actionAddHydrometer + actionAddHydrometer + + + actionChangeValveStatus + Change valve status + + + tooltip_actionChangeValveStatus + actionChangeValveStatus + + + actionComposer + Composer + + + tooltip_actionComposer + actionComposer + + + actionCustomMincut + Custom Mincut + + + tooltip_actionCustomMincut + actionCustomMincut + + + actionExportHydroCsv + Export Hydro Csv + + + tooltip_actionExportHydroCsv + actionExportHydroCsv + + + actionMincut + Automatic Mincut + + + tooltip_actionMincut + actionMincut + + + actionRefreshMincut + Refresh Mincut + + + tooltip_actionRefreshMincut + actionRefreshMincut + + + btn_accept + Accept + + + tooltip_btn_accept + Accept + + + btn_cancel + Cancel + + + tooltip_btn_cancel + Cancel + + + btn_cancel_task + Cancel task + + + tooltip_btn_cancel_task + btn_cancel_task + + + btn_end + End + + + tooltip_btn_end + btn_end + + + btn_start + Start + + + tooltip_btn_start + btn_start + + + cbx_date_end + dd/MM/yyyy + + + tooltip_cbx_date_end + cbx_date_end + + + cbx_date_end_predict + dd/MM/yyyy + + + tooltip_cbx_date_end_predict + cbx_date_end_predict + + + cbx_date_start + dd/MM/yyyy + + + tooltip_cbx_date_start + cbx_date_start + + + cbx_date_start_predict + dd/MM/yyyy + + + tooltip_cbx_date_start_predict + cbx_date_start_predict + + + cbx_recieved_day + dd/MM/yyyy + + + tooltip_cbx_recieved_day + cbx_recieved_day + + + chk_use_planified + Use planified network + + + tooltip_chk_use_planified + chk_use_planified + + + dlg_mincut + Mincut + + + tooltip_dlg_mincut + dlg_mincut + + + grb_exec_realdates + Real dates + + + tooltip_grb_exec_realdates + grb_exec_realdates + + + grb_location + Location + + + tooltip_grb_location + grb_location + + + grb_plan_details + Details + + + tooltip_grb_plan_details + grb_plan_details + + + grb_plan_forecasted_dates + Forecasted dates + + + tooltip_grb_plan_forecasted_dates + grb_plan_forecasted_dates + + + lbl_assigned_to + Assigned to: + + + tooltip_lbl_assigned_to + lbl_assigned_to + + + lbl_cause + Cause: + + + tooltip_lbl_cause + lbl_cause + + + lbl_chlorine + Chlorine: + + + tooltip_lbl_chlorine + lbl_chlorine + + + lbl_depth + Depth: + + + tooltip_lbl_depth + lbl_depth + + + lbl_descript_pd + Description: + + + tooltip_lbl_descript_pd + lbl_descript_pd + + + lbl_descript_rd + Description: + + + tooltip_lbl_descript_rd + lbl_descript_rd + + + lbl_dist_from_plot + Distance from plot: + + + tooltip_lbl_dist_from_plot + lbl_dist_from_plot + + + lbl_end + To: + + + tooltip_lbl_end + lbl_end + + + lbl_equipment_code + Chlorine measurement equipment: + + + tooltip_lbl_equipment_code + lbl_equipment_code + + + lbl_exec_appropriate + Appropriate: + + + tooltip_lbl_exec_appropriate + If true, the actual location matches the mincut scheduled information + + + lbl_exec_enddate + End date: + + + tooltip_lbl_exec_enddate + lbl_exec_enddate + + + lbl_exec_startdate + Start date: + + + tooltip_lbl_exec_startdate + Visit ID + + + lbl_exec_user + Exec user: + + + tooltip_lbl_exec_user + lbl_exec_user + + + lbl_id + Id: + + + tooltip_lbl_id + lbl_id + + + lbl_msg + No results found + + + tooltip_lbl_msg + lbl_msg + + + lbl_reagent_lot + Chlorine reagent lot: + + + tooltip_lbl_reagent_lot + lbl_reagent_lot + + + lbl_received_date + Received date: + + + tooltip_lbl_received_date + lbl_received_date + + + lbl_start + From: + + + tooltip_lbl_start + lbl_start + + + lbl_state + State: + + + tooltip_lbl_state + lbl_state + + + lbl_turbidity + Turbidity: + + + tooltip_lbl_turbidity + lbl_turbidity + + + lbl_type + Type: + + + tooltip_lbl_type + lbl_type + + + lbl_work_order + Work order: + + + tooltip_lbl_work_order + lbl_work_order + + + tab + Exec + + + tooltip_tab + tab + + + tab_config + Plan + + + tooltip_tab_config + tab_config + + + tab_hydro + Hydro + + + tooltip_tab_hydro + tab_hydro + + + tab_loginfo + Log + + + tooltip_tab_loginfo + tab_loginfo + + + toolBar + toolBar + + + tooltip_toolBar + toolBar + + + + mincut_composer + + title + Mincut composer + + + btn_cancel + Cancel + + + tooltip_btn_cancel + Cancel + + + btn_ok + Open + + + tooltip_btn_ok + btn_ok + + + dlg_mincut_composer + Mincut composer + + + tooltip_dlg_mincut_composer + dlg_mincut_composer + + + groupBox_2 + Mincut composer + + + tooltip_groupBox_2 + groupBox_2 + + + lbl_rotation + Rotation: + + + tooltip_lbl_rotation + lbl_rotation + + + lbl_template + Template: + + + tooltip_lbl_template + lbl_template + + + lbl_title + Title: + + + tooltip_lbl_title + lbl_title + + + + mincut_connec + + title + Mincut connec + + + btn_accept + Accept + + + tooltip_btn_accept + Accept + + + btn_delete + btn_delete + + + tooltip_btn_delete + Delete + + + btn_insert + btn_insert + + + tooltip_btn_insert + Insert + + + btn_snapping + btn_snapping + + + tooltip_btn_snapping + Snapping + + + dlg_mincut_connec + Mincut connec + + + tooltip_dlg_mincut_connec + dlg_mincut_connec + + + lbl_search + Search by customer code: + + + tooltip_lbl_search + lbl_search + + + + mincut_end + + title + Mincut end + + + btn_accept + Accept + + + tooltip_btn_accept + Accept + + + btn_cancel + Cancel + + + tooltip_btn_cancel + btn_cancel + + + btn_set_real_location + Set real location + + + tooltip_btn_set_real_location + btn_set_real_location + + + cbx_date_end_fin + dd/MM/yyyy + + + tooltip_cbx_date_end_fin + cbx_date_end_fin + + + cbx_date_start_fin + dd/MM/yyyy + + + tooltip_cbx_date_start_fin + cbx_date_start_fin + + + cbx_hours_start_fin + H:mm:ss + + + tooltip_cbx_hours_start_fin + cbx_hours_start_fin + + + dlg_mincut_end + Mincut end + + + tooltip_dlg_mincut_end + dlg_mincut_end + + + grb_close_mincut + Close mincut + + + tooltip_grb_close_mincut + grb_close_mincut + + + groupBox + Dates + + + tooltip_groupBox + groupBox + + + lbl_end_date + To: + + + tooltip_lbl_end_date + lbl_end_date + + + lbl_end_hour + End hour: + + + tooltip_lbl_end_hour + lbl_end_hour + + + lbl_executed + Executed by: + + + tooltip_lbl_executed + lbl_executed + + + lbl_mincut + Mincut: + + + tooltip_lbl_mincut + lbl_mincut + + + lbl_msg + No results found + + + tooltip_lbl_msg + lbl_msg + + + lbl_municipality + Municipality: + + + tooltip_lbl_municipality + lbl_municipality + + + lbl_number + Number: + + + tooltip_lbl_number + lbl_number + + + lbl_start_date + From: + + + tooltip_lbl_start_date + lbl_start_date + + + lbl_start_hour + Start hour: + + + tooltip_lbl_start_hour + lbl_start_hour + + + lbl_street + Street: + + + tooltip_lbl_street + lbl_street + + + lbl_work_order + Work order: + + + tooltip_lbl_work_order + lbl_work_order + + + + mincut_hydrometer + + title + Mincut hydrometer + + + btn_accept + Accept + + + tooltip_btn_accept + Accept + + + btn_delete + btn_delete + + + tooltip_btn_delete + Delete + + + btn_insert + btn_insert + + + tooltip_btn_insert + Insert + + + dlg_mincut_hydrometer + Mincut hydrometer + + + tooltip_dlg_mincut_hydrometer + dlg_mincut_hydrometer + + + lbl_ccc + Connec customer code: + + + tooltip_lbl_ccc + lbl_ccc + + + lbl_hcc + Hydrometer customer code: + + + tooltip_lbl_hcc + lbl_hcc + + + + mincut_manager + + title + Mincut management + + + btn_cancel + Close + + + tooltip_btn_cancel + btn_cancel + + + btn_cancel_mincut + Cancel mincut + + + tooltip_btn_cancel_mincut + btn_cancel_mincut + + + btn_delete + Delete + + + tooltip_btn_delete + btn_delete + + + btn_next_days + Next days + + + tooltip_btn_next_days + btn_next_days + + + btn_notify + Send sms + + + tooltip_btn_notify + btn_notify + + + btn_selector_mincut + btn_selector_mincut + + + tooltip_btn_selector_mincut + btn_selector_mincut + + + dlg_mincut_manager + Mincut management + + + tooltip_dlg_mincut_manager + dlg_mincut_manager + + + lbl_date_from + From: + + + tooltip_lbl_date_from + lbl_date_from + + + lbl_date_to + To: + + + tooltip_lbl_date_to + lbl_date_to + + + lbl_exploitation + Exploitation: + + + tooltip_lbl_exploitation + lbl_exploitation + + + lbl_filter + Filter by: + + + tooltip_lbl_filter + lbl_filter + + + lbl_mincut_type + Type: + + + tooltip_lbl_mincut_type + lbl_mincut_type + + + lbl_state + State: + + + tooltip_lbl_state + lbl_state + + + lbl_streetaxis + Streetaxis: + + + tooltip_lbl_streetaxis + lbl_streetaxis + + + + netscenario + + title + Dialog + + + btn_config + Config + + + tooltip_btn_config + btn_config + + + btn_create + Create + + + tooltip_btn_create + btn_create + + + btn_delete + Delete + + + tooltip_btn_delete + btn_delete + + + btn_toggle_active + Toggle active + + + tooltip_btn_toggle_active + btn_toggle_active + + + btn_toggle_closed + Toggle closed + + + tooltip_btn_toggle_closed + btn_toggle_closed + + + btn_update + Update + + + tooltip_btn_update + btn_update + + + dlg_netscenario + Dialog + + + tooltip_dlg_netscenario + dlg_netscenario + + + lbl_mapzone_id + Mapzone id: + + + tooltip_lbl_mapzone_id + lbl_mapzone_id + + + + netscenario_manager + + title + Netscenario manager + + + btn_cancel + Close + + + tooltip_btn_cancel + Close + + + btn_create + Create + + + tooltip_btn_create + Create + + + btn_delete + Delete + + + tooltip_btn_delete + Delete + + + btn_duplicate + Duplicate + + + tooltip_btn_duplicate + Duplicate + + + btn_execute + btn_execute + + + tooltip_btn_execute + Execute mapzones analysis + + + btn_toc + btn_toc + + + tooltip_btn_toc + Load Giswater layer + + + btn_toggle_active + Toggle active + + + tooltip_btn_toggle_active + Toggle active + + + btn_update + Update + + + tooltip_btn_update + Update + + + btn_update_netscenario + Current netscenario + + + tooltip_btn_update_netscenario + Current netscenario + + + chk_active + Show inactive + + + tooltip_chk_active + Show inactive + + + dlg_netscenario_manager + Netscenario manager + + + tooltip_dlg_netscenario_manager + dlg_netscenario_manager + + + lbl_netscenario_name + Filter by: Netscenario name + + + tooltip_lbl_netscenario_name + Filter by: Netscenario name + + + + nodetype_change + + title + Change node type + + + btn_accept + Accept + + + tooltip_btn_accept + Accept + + + btn_cancel + Cancel + + + tooltip_btn_cancel + btn_cancel + + + dlg_nodetype_change + Change node type + + + tooltip_dlg_nodetype_change + dlg_nodetype_change + + + lbl_catalog_id + Catalog id: + + + tooltip_lbl_catalog_id + lbl_catalog_id + + + lbl_custom_node_type + New node type: + + + tooltip_lbl_custom_node_type + lbl_custom_node_type + + + lbl_node_type + Current node type: + + + tooltip_lbl_node_type + lbl_node_type + + + + nonvisual_controls + + title + Simple Controls Editor + + + btn_accept + OK + + + tooltip_btn_accept + btn_accept + + + btn_cancel + Cancel + + + tooltip_btn_cancel + btn_cancel + + + chk_active + Active + + + tooltip_chk_active + chk_active + + + dlg_nonvisual_controls + Simple Controls Editor + + + tooltip_dlg_nonvisual_controls + dlg_nonvisual_controls + + + lbl_sector_id + Sector ID + + + tooltip_lbl_sector_id + lbl_sector_id + + + + nonvisual_curve + + title + Curve Editor + + + btn_accept + OK + + + tooltip_btn_accept + btn_accept + + + btn_cancel + Cancel + + + tooltip_btn_cancel + btn_cancel + + + dlg_nonvisual_curve + Curve Editor + + + tooltip_dlg_nonvisual_curve + dlg_nonvisual_curve + + + lbl_curve_id + Curve ID + + + tooltip_lbl_curve_id + lbl_curve_id + + + lbl_curve_type + Curve Type + + + tooltip_lbl_curve_type + lbl_curve_type + + + lbl_descript + Description + + + tooltip_lbl_descript + lbl_descript + + + lbl_expl_id + Exploitation ID + + + tooltip_lbl_expl_id + lbl_expl_id + + + tbl_curve_value + Y + + + tooltip_tbl_curve_value + tbl_curve_value + + + + nonvisual_lids + + btn_cancel + Cancel + + + tooltip_btn_cancel + btn_cancel + + + btn_help + Help + + + tooltip_btn_help + btn_help + + + btn_ok + OK + + + tooltip_btn_ok + btn_ok + + + Dialog + LIDS + + + tooltip_Dialog + Dialog + + + drain + Drain + + + tooltip_drain + drain + + + drainmat + Drainage Mat + + + tooltip_drainmat + drainmat + + + label_source_img + Source: SWMM 5.1 + + + tooltip_label_source_img + label_source_img + + + lbl_berm_height + Berm Height (in. or mm) + + + tooltip_lbl_berm_height + lbl_berm_height + + + lbl_clogging_factor_pavement + Clogging Factor + + + tooltip_lbl_clogging_factor_pavement + lbl_clogging_factor_pavement + + + lbl_clogging_factor_storage + Clogging Factor + + + tooltip_lbl_clogging_factor_storage + lbl_clogging_factor_storage + + + lbl_closed_level + Closed Level (in or mm) + + + tooltip_lbl_closed_level + lbl_closed_level + + + lbl_conducticity_slope + Conductivity Slope + + + tooltip_lbl_conducticity_slope + lbl_conducticity_slope + + + lbl_conductivity + Conductivity (in/hr or mm/hr) + + + tooltip_lbl_conductivity + lbl_conductivity + + + lbl_control_curve + Control Curve + + + tooltip_lbl_control_curve + lbl_control_curve + + + lbl_control_name + Control Name: + + + tooltip_lbl_control_name + lbl_control_name + + + lbl_drain_delay + Drain Delay (hrs) + + + tooltip_lbl_drain_delay + lbl_drain_delay + + + lbl_field_capacity + Field Capacity (volume fraction) + + + tooltip_lbl_field_capacity + lbl_field_capacity + + + lbl_flow_capacity + Flow Capacity (in/hr or mm/hr) + + + tooltip_lbl_flow_capacity + lbl_flow_capacity + + + lbl__flow_coefficient + Flow Coefficient* + + + tooltip_lbl__flow_coefficient + lbl__flow_coefficient + + + lbl_flow_description + *Flow is in in/hr or mm/hr; use 0 if there is no drain. + + + tooltip_lbl_flow_description + lbl_flow_description + + + lbl_flow_exponent + Flow Exponent + + + tooltip_lbl_flow_exponent + lbl_flow_exponent + + + lbl_imprevious_surface + Imprevious Surface Fraction + + + tooltip_lbl_imprevious_surface + lbl_imprevious_surface + + + lbl_lid_type + LID Type: + + + tooltip_lbl_lid_type + lbl_lid_type + + + lbl_offset + Offset (in or mm) + + + tooltip_lbl_offset + lbl_offset + + + lbl_open_level + Open Level (in or mm) + + + tooltip_lbl_open_level + lbl_open_level + + + lbl__permeability + Permeability (in/hr or mm/hr) + + + tooltip_lbl__permeability + lbl__permeability + + + lbl_porosity + Porosity (volume fraction) + + + tooltip_lbl_porosity + lbl_porosity + + + lbl_regeneration_fraction + Regeneration Fraction + + + tooltip_lbl_regeneration_fraction + lbl_regeneration_fraction + + + lbl_regeneration_interval + Regeneration Interval (days) + + + tooltip_lbl_regeneration_interval + lbl_regeneration_interval + + + lbl_roughness + Roughness (Mannings n) + + + tooltip_lbl_roughness + lbl_roughness + + + lbl_seepage_rate + Seepage Rate (in/hr or mm/hr) + + + tooltip_lbl_seepage_rate + lbl_seepage_rate + + + lbl_suction_head + Suction Head (in. or mm) + + + tooltip_lbl_suction_head + lbl_suction_head + + + lbl_surface_roughness + Surface Roughness (Mannings n) + + + tooltip_lbl_surface_roughness + lbl_surface_roughness + + + lbl_surface_slope + Surface Slope (percent) + + + tooltip_lbl_surface_slope + lbl_surface_slope + + + lbl_swale_side_slope + Swale Side Slope (run / rise) + + + tooltip_lbl_swale_side_slope + lbl_swale_side_slope + + + lbl_thickness + Thickness (in. or mm) + + + tooltip_lbl_thickness + lbl_thickness + + + lbl_thickness_drainage + Thickness (in. or mm) + + + tooltip_lbl_thickness_drainage + lbl_thickness_drainage + + + lbl_thickness_storage + Thickness (in. or mm) + + + tooltip_lbl_thickness_storage + lbl_thickness_storage + + + lbl_thinkness_pavement + Thickness (in. or mm) + + + tooltip_lbl_thinkness_pavement + lbl_thinkness_pavement + + + lbl_vegetation_volume + Vegetation Volume Fraction + + + tooltip_lbl_vegetation_volume + lbl_vegetation_volume + + + lbl_void_fraction + Void Fraction + + + tooltip_lbl_void_fraction + lbl_void_fraction + + + lbl_void_ratio_pavement + Void Ratio (Void / Solids) + + + tooltip_lbl_void_ratio_pavement + lbl_void_ratio_pavement + + + lbl_void_ratio_storage + Void Ratio (Voids / Solids) + + + tooltip_lbl_void_ratio_storage + lbl_void_ratio_storage + + + lbl_wilting_point + Wilting Point (volume fraction) + + + tooltip_lbl_wilting_point + lbl_wilting_point + + + pavement + Pavement + + + tooltip_pavement + pavement + + + rooftop + Roof Drain + + + tooltip_rooftop + rooftop + + + soil + Soil + + + tooltip_soil + soil + + + storage + Storage + + + tooltip_storage + storage + + + surface + Surface + + + tooltip_surface + surface + + + txt_1_berm_height + 0.0 + + + tooltip_txt_1_berm_height + txt_1_berm_height + + + txt_1_flow_coefficient + 0 + + + tooltip_txt_1_flow_coefficient + txt_1_flow_coefficient + + + txt_1_thickness + 0 + + + tooltip_txt_1_thickness + txt_1_thickness + + + txt_1_thickness_drainage + 3 + + + tooltip_txt_1_thickness_drainage + txt_1_thickness_drainage + + + txt_1_thickness_pavement + 0 + + + tooltip_txt_1_thickness_pavement + txt_1_thickness_pavement + + + txt_1_thickness_storage + 0 + + + tooltip_txt_1_thickness_storage + txt_1_thickness_storage + + + txt_2_flow_exponent + 0.5 + + + tooltip_txt_2_flow_exponent + txt_2_flow_exponent + + + txt_2_porosity + 0.5 + + + tooltip_txt_2_porosity + txt_2_porosity + + + txt_2_vegetation_volume + 0.0 + + + tooltip_txt_2_vegetation_volume + txt_2_vegetation_volume + + + txt_2_void_fraction + 0.5 + + + tooltip_txt_2_void_fraction + txt_2_void_fraction + + + txt_2_void_ratio_pavement + 0.15 + + + tooltip_txt_2_void_ratio_pavement + txt_2_void_ratio_pavement + + + txt_2_void_ratio_storage + 0.75 + + + tooltip_txt_2_void_ratio_storage + txt_2_void_ratio_storage + + + txt_3_field_capacity + 0.2 + + + tooltip_txt_3_field_capacity + txt_3_field_capacity + + + txt_3_imprevious_surface + 0 + + + tooltip_txt_3_imprevious_surface + txt_3_imprevious_surface + + + txt_3_offset + 6 + + + tooltip_txt_3_offset + txt_3_offset + + + txt_3_roughness + 0.1 + + + tooltip_txt_3_roughness + txt_3_roughness + + + txt_3_seepage_rate + 0.5 + + + tooltip_txt_3_seepage_rate + txt_3_seepage_rate + + + txt_3_surface_roughness + 0.1 + + + tooltip_txt_3_surface_roughness + txt_3_surface_roughness + + + txt_4_clogging_factor_storage + 0 + + + tooltip_txt_4_clogging_factor_storage + txt_4_clogging_factor_storage + + + txt_4_drain_delay + 6 + + + tooltip_txt_4_drain_delay + txt_4_drain_delay + + + txt_4_permeability + 100 + + + tooltip_txt_4_permeability + txt_4_permeability + + + txt_4_surface_slope + 1.0 + + + tooltip_txt_4_surface_slope + txt_4_surface_slope + + + txt_4_wilting_point + 0.1 + + + tooltip_txt_4_wilting_point + txt_4_wilting_point + + + txt_5_clogging_factor_pavement + 0 + + + tooltip_txt_5_clogging_factor_pavement + txt_5_clogging_factor_pavement + + + txt_5_conductivity + 0.5 + + + tooltip_txt_5_conductivity + txt_5_conductivity + + + txt_5_open_level + 0 + + + tooltip_txt_5_open_level + txt_5_open_level + + + txt_5_swale_side_slope + 5 + + + tooltip_txt_5_swale_side_slope + txt_5_swale_side_slope + + + txt_6_closed_level + 0 + + + tooltip_txt_6_closed_level + txt_6_closed_level + + + txt_6_conducticity_slope + 10.0 + + + tooltip_txt_6_conducticity_slope + txt_6_conducticity_slope + + + txt_6_regeneration_interval + 0 + + + tooltip_txt_6_regeneration_interval + txt_6_regeneration_interval + + + txt_7_regeneration_fraction + 0 + + + tooltip_txt_7_regeneration_fraction + txt_7_regeneration_fraction + + + txt_7_suction_head + 3.5 + + + tooltip_txt_7_suction_head + txt_7_suction_head + + + txt_flow_capacity + 0 + + + tooltip_txt_flow_capacity + txt_flow_capacity + + + + nonvisual_manager + + title + Non-Visual Object Manager + + + btn_cancel + Close + + + tooltip_btn_cancel + Close + + + btn_create + Create + + + tooltip_btn_create + Create + + + btn_delete + Delete + + + tooltip_btn_delete + Delete + + + btn_duplicate + Duplicate + + + tooltip_btn_duplicate + Duplicate + + + btn_print + Shape to PNG + + + tooltip_btn_print + btn_print + + + btn_toggle_active + Toggle active + + + tooltip_btn_toggle_active + btn_toggle_active + + + cat_mat_roughness + Roughness + + + tooltip_cat_mat_roughness + cat_mat_roughness + + + chk_active + Show inactive + + + tooltip_chk_active + Show inactive + + + dlg_nonvisual_manager + Non-Visual Object Manager + + + tooltip_dlg_nonvisual_manager + dlg_nonvisual_manager + + + inp_lid + Lids + + + tooltip_inp_lid + inp_lid + + + lbl_curve_type + Curve type: + + + tooltip_lbl_curve_type + Curve type + + + lbl_filter + Filter by: + + + tooltip_lbl_filter + lbl_filter + + + lbl_pattern_type + Pattern type: + + + tooltip_lbl_pattern_type + Pattern type + + + lbl_timser_type + Timeseries type: + + + tooltip_lbl_timser_type + Timeseries type + + + ve_inp_controls + Controls + + + tooltip_ve_inp_controls + ve_inp_controls + + + ve_inp_curve + curves + + + tooltip_ve_inp_curve + ve_inp_curve + + + ve_inp_pattern + patterns + + + tooltip_ve_inp_pattern + ve_inp_pattern + + + ve_inp_rules + rules + + + tooltip_ve_inp_rules + ve_inp_rules + + + ve_inp_timeseries + timeseries + + + tooltip_ve_inp_timeseries + ve_inp_timeseries + + + + nonvisual_pattern_ud + + title + Pattern Editor + + + btn_accept + OK + + + tooltip_btn_accept + btn_accept + + + btn_cancel + Cancel + + + tooltip_btn_cancel + btn_cancel + + + dlg_nonvisual_pattern_ud + Pattern Editor + + + tooltip_dlg_nonvisual_pattern_ud + dlg_nonvisual_pattern_ud + + + lbl_expl_id + Exploitation ID + + + tooltip_lbl_expl_id + lbl_expl_id + + + lbl_observ + Observation + + + tooltip_lbl_observ + lbl_observ + + + lbl_pattern_id + Pattern ID + + + tooltip_lbl_pattern_id + lbl_pattern_id + + + lbl_pattern_type + Pattern Type + + + tooltip_lbl_pattern_type + lbl_pattern_type + + + tbl_daily + SUN + + + tooltip_tbl_daily + tbl_daily + + + tbl_hourly + 11PM + + + tooltip_tbl_hourly + tbl_hourly + + + tbl_monthly + DEC + + + tooltip_tbl_monthly + tbl_monthly + + + tbl_weekend + 11PM + + + tooltip_tbl_weekend + tbl_weekend + + + + nonvisual_pattern_ws + + title + Pattern Editor + + + btn_accept + OK + + + tooltip_btn_accept + btn_accept + + + btn_cancel + Cancel + + + tooltip_btn_cancel + btn_cancel + + + dlg_nonvisual_pattern_ws + Pattern Editor + + + tooltip_dlg_nonvisual_pattern_ws + dlg_nonvisual_pattern_ws + + + lbl_observ + Observation + + + tooltip_lbl_observ + lbl_observ + + + lbl_pattern_id + Pattern ID + + + tooltip_lbl_pattern_id + lbl_pattern_id + + + lbl_pattern_type + Exploitation ID + + + tooltip_lbl_pattern_type + lbl_pattern_type + + + tbl_pattern_value + 18 + + + tooltip_tbl_pattern_value + tbl_pattern_value + + + + nonvisual_print + + title + Non-Visual Object Print + + + btn_accept + Accept + + + tooltip_btn_accept + btn_accept + + + btn_close + Close + + + tooltip_btn_close + btn_close + + + btn_path + ... + + + tooltip_btn_path + btn_path + + + chk_cross_arccat + Cross with arccat + + + tooltip_chk_cross_arccat + chk_cross_arccat + + + dlg_nonvisual_print + Non-Visual Object Print + + + tooltip_dlg_nonvisual_print + dlg_nonvisual_print + + + + nonvisual_roughness + + title + Rule-Based Controls Editor + + + btn_accept + OK + + + tooltip_btn_accept + btn_accept + + + btn_cancel + Cancel + + + tooltip_btn_cancel + btn_cancel + + + chk_active + Active + + + tooltip_chk_active + chk_active + + + dlg_nonvisual_roughness + Rule-Based Controls Editor + + + tooltip_dlg_nonvisual_roughness + dlg_nonvisual_roughness + + + label + Period ID + + + tooltip_label + label + + + label_2 + Init age + + + tooltip_label_2 + label_2 + + + label_3 + End age + + + tooltip_label_3 + label_3 + + + label_4 + Roughness + + + tooltip_label_4 + label_4 + + + label_5 + Descript + + + tooltip_label_5 + label_5 + + + lbl_matcat_id + Matcat ID + + + tooltip_lbl_matcat_id + lbl_matcat_id + + + + nonvisual_rules + + title + Rule-Based Controls Editor + + + btn_accept + OK + + + tooltip_btn_accept + btn_accept + + + btn_cancel + Cancel + + + tooltip_btn_cancel + btn_cancel + + + chk_active + Active + + + tooltip_chk_active + chk_active + + + dlg_nonvisual_rules + Rule-Based Controls Editor + + + tooltip_dlg_nonvisual_rules + dlg_nonvisual_rules + + + lbl_sector_id + Sector ID + + + tooltip_lbl_sector_id + lbl_sector_id + + + + nonvisual_timeseries + + title + Time Series Editor + + + btn_accept + OK + + + tooltip_btn_accept + btn_accept + + + btn_cancel + Cancel + + + tooltip_btn_cancel + btn_cancel + + + dlg_nonvisual_timeseries + Time Series Editor + + + tooltip_dlg_nonvisual_timeseries + dlg_nonvisual_timeseries + + + label + Times Type + + + tooltip_label + label + + + label_2 + Description + + + tooltip_label_2 + label_2 + + + label_3 + Exploitation ID + + + tooltip_label_3 + label_3 + + + lbl_active + Active + + + tooltip_lbl_active + lbl_active + + + lbl_addparam + Addparam (json) + + + tooltip_lbl_addparam + lbl_addparam + + + lbl_curve_id + Time Series ID + + + tooltip_lbl_curve_id + lbl_curve_id + + + lbl_descript + Time Series Type + + + tooltip_lbl_descript + lbl_descript + + + lbl_fname + File name + + + tooltip_lbl_fname + lbl_fname + + + tbl_timeseries_value + Value + + + tooltip_tbl_timeseries_value + tbl_timeseries_value + + + + organization_create + + actionT + t + + + tooltip_actionT + actionT + + + organization_create + Create + + + tooltip_organization_create + organization_create + + + + plan_psector + + active + Active + + + tooltip_active + active + + + btn_accept + Accept + + + tooltip_btn_accept + btn_accept + + + btn_arc_fusion + btn_arc_fusion + + + tooltip_btn_arc_fusion + Arc fusion with planified arcs + + + btn_cancel + Cancel + + + tooltip_btn_cancel + btn_cancel + + + btn_delete + btn_delete + + + tooltip_btn_delete + Delete + + + btn_insert + btn_insert + + + tooltip_btn_insert + Insert + + + btn_rapports + Generate rapports + + + tooltip_btn_rapports + btn_rapports + + + btn_remove + Remove + + + tooltip_btn_remove + btn_remove + + + btn_reports + Generate report + + + tooltip_btn_reports + btn_reports + + + btn_select + Select + + + tooltip_btn_select + btn_select + + + btn_select_arc + btn_select_arc + + + tooltip_btn_select_arc + Replace on service for planified arc + + + btn_set_geom + Set geometry + + + tooltip_btn_set_geom + btn_set_geom + + + btn_snapping + btn_snapping + + + tooltip_btn_snapping + Select features + + + chk_enable_all + Enable all (visualize obsolete state on features related to psector) + + + tooltip_chk_enable_all + chk_enable_all + + + gexpenses_label + General expenses + + + tooltip_gexpenses_label + gexpenses_label + + + gexpenses_label_10 + Total arcs: + + + tooltip_gexpenses_label_10 + gexpenses_label_10 + + + gexpenses_label_3 + Total nodes: + + + tooltip_gexpenses_label_3 + gexpenses_label_3 + + + gexpenses_label_4 + Total other prices: + + + tooltip_gexpenses_label_4 + gexpenses_label_4 + + + gexpenses_label_5 + Total: + + + tooltip_gexpenses_label_5 + gexpenses_label_5 + + + gexpenses_label_6 + Total: + + + tooltip_gexpenses_label_6 + gexpenses_label_6 + + + gexpenses_label_7 + Total: + + + tooltip_gexpenses_label_7 + gexpenses_label_7 + + + gexpenses_label_8 + Total: + + + tooltip_gexpenses_label_8 + gexpenses_label_8 + + + grb_map_details + Map details + + + tooltip_grb_map_details + grb_map_details + + + groupBox + Map details + + + tooltip_groupBox + groupBox + + + label + Parent id: + + + tooltip_label + label + + + label_11 + Text 1: + + + tooltip_label_11 + label_11 + + + label_12 + Text 2: + + + tooltip_label_12 + label_12 + + + label_13 + Observation + + + tooltip_label_13 + label_13 + + + label_14 + Rotation: + + + tooltip_label_14 + label_14 + + + label_15 + Scale: + + + tooltip_label_15 + label_15 + + + label_16 + Atlas id: + + + tooltip_label_16 + label_16 + + + label_2 + Name: + + + tooltip_label_2 + label_2 + + + label_3 + Priority: + + + tooltip_label_3 + label_3 + + + label_4 + Ext code: + + + tooltip_label_4 + label_4 + + + label_5 + Exploitation: + + + tooltip_label_5 + label_5 + + + label_6 + Workcat id: + + + tooltip_label_6 + label_6 + + + label_7 + Descript: + + + tooltip_label_7 + label_7 + + + label_8 + Status: + + + tooltip_label_8 + label_8 + + + lbl_atlas_id + Atlas id: + + + tooltip_lbl_atlas_id + lbl_atlas_id + + + lbl_descript + Descript: + + + tooltip_lbl_descript + lbl_descript + + + lbl_exploitation + Exploitation: + + + tooltip_lbl_exploitation + lbl_exploitation + + + lbl_ext_code + Codigo ext: + + + tooltip_lbl_ext_code + lbl_ext_code + + + lbl_general_expenses + General expenses + + + tooltip_lbl_general_expenses + lbl_general_expenses + + + lbl_name + Name: + + + tooltip_lbl_name + lbl_name + + + lbl_num_value + Num value: + + + tooltip_lbl_num_value + lbl_num_value + + + lbl_observation + Observation: + + + tooltip_lbl_observation + lbl_observation + + + lbl_other_expenses + Other expenses + + + tooltip_lbl_other_expenses + lbl_other_expenses + + + lbl_parent_id + Parent id: + + + tooltip_lbl_parent_id + lbl_parent_id + + + lbl_priority + Priority: + + + tooltip_lbl_priority + lbl_priority + + + lbl_psector_id + Psector id: + + + tooltip_lbl_psector_id + lbl_psector_id + + + lbl_rotation + Rotation: + + + tooltip_lbl_rotation + lbl_rotation + + + lbl_scale + Scale: + + + tooltip_lbl_scale + lbl_scale + + + lbl_status + Status: + + + tooltip_lbl_status + lbl_status + + + lbl_text1 + Text 1: + + + tooltip_lbl_text1 + lbl_text1 + + + lbl_text2 + Text 2: + + + tooltip_lbl_text2 + lbl_text2 + + + lbl_text3 + Text 3: + + + tooltip_lbl_text3 + lbl_text3 + + + lbl_text4 + Text 4: + + + tooltip_lbl_text4 + lbl_text4 + + + lbl_text5 + Text 5: + + + tooltip_lbl_text5 + lbl_text5 + + + lbl_text6 + Text 6: + + + tooltip_lbl_text6 + lbl_text6 + + + lbl_total_arcs + Total arcs: + + + tooltip_lbl_total_arcs + lbl_total_arcs + + + lbl_total_nodes + Total nodes: + + + tooltip_lbl_total_nodes + lbl_total_nodes + + + lbl_type + Type: + + + tooltip_lbl_type + lbl_type + + + lbl_vat + VAT: + + + tooltip_lbl_vat + lbl_vat + + + lbl_workcat_id + Workcat id: + + + tooltip_lbl_workcat_id + lbl_workcat_id + + + other_label + % + + + tooltip_other_label + other_label + + + other_label_2 + Other expenses + + + tooltip_other_label_2 + other_label_2 + + + other_label_3 + % + + + tooltip_other_label_3 + other_label_3 + + + other_label_4 + % + + + tooltip_other_label_4 + other_label_4 + + + tab_additional_info + Additional info + + + tooltip_tab_additional_info + Additional info + + + tab_arc + Arc + + + tooltip_tab_arc + Arc + + + tab_budget + Budget + + + tooltip_tab_budget + Budget + + + tab_connec + Connec + + + tooltip_tab_connec + Connec + + + tab_document + Document + + + tooltip_tab_document + Document + + + tab_general + General + + + tooltip_tab_general + General + + + tab_gully + Gully + + + tooltip_tab_gully + Gully + + + tab_node + Node + + + tooltip_tab_node + Node + + + tab_other_prices + Other prices + + + tooltip_tab_other_prices + Other prices + + + tab_relations + Relations + + + tooltip_tab_relations + Relations + + + vat_label + VAT: + + + tooltip_vat_label + vat_label + + + + price_manager + + title + Price result management + + + btn_cancel + Close + + + tooltip_btn_cancel + btn_cancel + + + btn_delete + Delete + + + tooltip_btn_delete + btn_delete + + + btn_update_result + Current result + + + tooltip_btn_update_result + btn_update_result + + + dlg_price_manager + Price result management + + + tooltip_dlg_price_manager + dlg_price_manager + + + lbl_result_id + Filter by: + + + tooltip_lbl_result_id + lbl_result_id + + + + print + + title + Fastprint + + + btn_close + Close + + + tooltip_btn_close + btn_close + + + btn_preview + Preview + + + tooltip_btn_preview + btn_preview + + + btn_print + Print + + + tooltip_btn_print + btn_print + + + dlg_print + Fastprint + + + tooltip_dlg_print + dlg_print + + + grb_map_options + Map options: + + + tooltip_grb_map_options + grb_map_options + + + grb_option_values + Optional values: + + + tooltip_grb_option_values + grb_option_values + + + + priority + + title + Priority Calculation + + + btn_accept + Calculate + + + tooltip_btn_accept + btn_accept + + + btn_again + Next + + + tooltip_btn_again + btn_again + + + btn_close + Cancel + + + tooltip_btn_close + btn_close + + + btn_save2file + Save results to an Excel file... + + + tooltip_btn_save2file + btn_save2file + + + btn_snapping + Select features on canvas + + + tooltip_btn_snapping + Select features on canvas + + + dlg_priority + Priority Calculation + + + tooltip_dlg_priority + dlg_priority + + + grb_engine_1 + grb_engine_1 + + + tooltip_grb_engine_1 + grb_engine_1 + + + grb_engine_2 + grb_engine_2 + + + tooltip_grb_engine_2 + grb_engine_2 + + + grb_global + Calculation parameters + + + tooltip_grb_global + grb_global + + + grb_selection + Selection of features + + + tooltip_grb_selection + grb_selection + + + lbl_budget + Yearly budget: + + + tooltip_lbl_budget + lbl_budget + + + lbl_descript + Description: + + + tooltip_lbl_descript + lbl_descript + + + lbl_dnom + Diameter: + + + tooltip_lbl_dnom + lbl_dnom + + + lbl_expl_selection + Exploitation: + + + tooltip_lbl_expl_selection + lbl_expl_selection + + + lbl_material + Material: + + + tooltip_lbl_material + lbl_material + + + lbl_presszone + Presszone: + + + tooltip_lbl_presszone + lbl_presszone + + + lbl_result_id + Result name: + + + tooltip_lbl_result_id + lbl_result_id + + + lbl_status + Status: + + + tooltip_lbl_status + lbl_status + + + lbl_year + Horizon year: + + + tooltip_lbl_year + lbl_year + + + tab_calc + Calculation + + + tooltip_tab_calc + tab_calc + + + tab_catalog + Catalog + + + tooltip_tab_catalog + tab_catalog + + + tab_engine + Engine + + + tooltip_tab_engine + tab_engine + + + tab_infolog + Info Log + + + tooltip_tab_infolog + tab_infolog + + + tab_material + Material + + + tooltip_tab_material + tab_material + + + + priority_manager + + title + Results Manager + + + btn_close + Close + + + tooltip_btn_close + btn_close + + + btn_corporate + Set Corporate + + + tooltip_btn_corporate + btn_corporate + + + btn_delete + Delete + + + tooltip_btn_delete + btn_delete + + + btn_duplicate + Duplicate + + + tooltip_btn_duplicate + btn_duplicate + + + btn_edit + Edit + + + tooltip_btn_edit + btn_edit + + + btn_status + Change status + + + tooltip_btn_status + btn_status + + + dlg_priority_manager + Results Manager + + + tooltip_dlg_priority_manager + dlg_priority_manager + + + lbl_expl + Exploitation: + + + tooltip_lbl_expl + lbl_expl + + + lbl_filter + Filter by: Result name + + + tooltip_lbl_filter + lbl_filter + + + lbl_info + Info: + + + tooltip_lbl_info + lbl_info + + + lbl_status + Status: + + + tooltip_lbl_status + lbl_status + + + lbl_type + Type: + + + tooltip_lbl_type + lbl_type + + + + profile + + title + Draw Profile + + + actionAddPoint + Add additional point + + + tooltip_actionAddPoint + actionAddPoint + + + actionProfile + Set nodes + + + tooltip_actionProfile + actionProfile + + + btn_add_additional_point + Add additional point + + + tooltip_btn_add_additional_point + btn_add_additional_point + + + btn_add_end_point + Add end point + + + tooltip_btn_add_end_point + btn_add_end_point + + + btn_add_start_point + Add start point + + + tooltip_btn_add_start_point + btn_add_start_point + + + btn_clear_profile + Clear profile + + + tooltip_btn_clear_profile + btn_clear_profile + + + btn_close + Close + + + tooltip_btn_close + btn_close + + + btn_delete_additional_point + btn_delete_additional_point + + + tooltip_btn_delete_additional_point + btn_delete_additional_point + + + btn_draw_profile + Draw profile + + + tooltip_btn_draw_profile + btn_draw_profile + + + btn_export_pdf + Open composer + + + tooltip_btn_export_pdf + btn_export_pdf + + + btn_load_profile + Load profile + + + tooltip_btn_load_profile + btn_load_profile + + + btn_save_profile + Save profile + + + tooltip_btn_save_profile + btn_save_profile + + + btn_update_path + ... + + + tooltip_btn_update_path + btn_update_path + + + date + dd/MM/yyyy + + + tooltip_date + date + + + dlg_profile + Draw Profile + + + tooltip_dlg_profile + dlg_profile + + + grb_composer + Parameters + + + tooltip_grb_composer + grb_composer + + + grb_profile + Profile + + + tooltip_grb_profile + grb_profile + + + lbl_additional_point + Additional point: + + + tooltip_lbl_additional_point + lbl_additional_point + + + lbl_date + Date: + + + tooltip_lbl_date + lbl_date + + + lbl_end_point + End point: + + + tooltip_lbl_end_point + lbl_end_point + + + lbl_min_distance + Vnode Min Dist: + + + tooltip_lbl_min_distance + lbl_min_distance + + + lbl_path + Path: + + + tooltip_lbl_path + lbl_path + + + lbl_profile_id + Profile id: + + + tooltip_lbl_profile_id + lbl_profile_id + + + lbl_rotation + Rotation: + + + tooltip_lbl_rotation + lbl_rotation + + + lbl_sh + Horizontal scale: + + + tooltip_lbl_sh + lbl_sh + + + lbl_start_point + Start point: + + + tooltip_lbl_start_point + lbl_start_point + + + lbl_sv + Vertical scale: + + + tooltip_lbl_sv + lbl_sv + + + lbl_template + Template: + + + tooltip_lbl_template + lbl_template + + + lbl_title + Title: + + + tooltip_lbl_title + lbl_title + + + toolBar + toolBar + + + tooltip_toolBar + toolBar + + + txt_profile_id + Optional profile ID + + + tooltip_txt_profile_id + txt_profile_id + + + + profile_list + + title + Load profiles + + + btn_delete_profile + Delete + + + tooltip_btn_delete_profile + btn_delete_profile + + + btn_open + Open + + + tooltip_btn_open + btn_open + + + dlg_profile_list + Load profiles + + + tooltip_dlg_profile_list + dlg_profile_list + + + groupBox_2 + List of profiles + + + tooltip_groupBox_2 + groupBox_2 + + + + project_check + + title + Check project + + + btn_accept + Accept + + + tooltip_btn_accept + Accept + + + dlg_project_check + Check project + + + tooltip_dlg_project_check + dlg_project_check + + + tab_databaselog + Database log + + + tooltip_tab_databaselog + tab_databaselog + + + tab_qgis_projlog + Qgis project log + + + tooltip_tab_qgis_projlog + tab_qgis_projlog + + + + psector + + title + Plan psector + + + btn_remove + Remove + + + tooltip_btn_remove + btn_remove + + + btn_reports + Generate report + + + tooltip_btn_reports + btn_reports + + + btn_select + Add + + + tooltip_btn_select + btn_select + + + btn_set_geom + Set geometry + + + tooltip_btn_set_geom + btn_set_geom + + + dlg_psector + Plan psector + + + tooltip_dlg_psector + dlg_psector + + + gexpenses_label + General expenses + + + tooltip_gexpenses_label + gexpenses_label + + + gexpenses_label_10 + Total arcs: + + + tooltip_gexpenses_label_10 + gexpenses_label_10 + + + gexpenses_label_3 + Total nodes: + + + tooltip_gexpenses_label_3 + gexpenses_label_3 + + + gexpenses_label_4 + Total other prices: + + + tooltip_gexpenses_label_4 + gexpenses_label_4 + + + gexpenses_label_5 + Total: + + + tooltip_gexpenses_label_5 + gexpenses_label_5 + + + gexpenses_label_6 + Total: + + + tooltip_gexpenses_label_6 + gexpenses_label_6 + + + gexpenses_label_7 + Total: + + + tooltip_gexpenses_label_7 + gexpenses_label_7 + + + gexpenses_label_8 + Total: + + + tooltip_gexpenses_label_8 + gexpenses_label_8 + + + lbl_num_value + Num value: + + + tooltip_lbl_num_value + lbl_num_value + + + lbl_text3 + Text 3: + + + tooltip_lbl_text3 + lbl_text3 + + + lbl_text4 + Text 4: + + + tooltip_lbl_text4 + lbl_text4 + + + lbl_text5 + Text 5: + + + tooltip_lbl_text5 + lbl_text5 + + + lbl_text6 + Text 6: + + + tooltip_lbl_text6 + lbl_text6 + + + lbl_total + Total : + + + tooltip_lbl_total + lbl_total + + + lbl_total_count + 0 + + + tooltip_lbl_total_count + lbl_total_count + + + other_label + % + + + tooltip_other_label + other_label + + + other_label_2 + Other expenses + + + tooltip_other_label_2 + other_label_2 + + + other_label_3 + % + + + tooltip_other_label_3 + other_label_3 + + + other_label_4 + % + + + tooltip_other_label_4 + other_label_4 + + + tab_additional_info + Additional info + + + tooltip_tab_additional_info + tab_additional_info + + + tab_arc + Arc + + + tooltip_tab_arc + tab_arc + + + tab_budget + Budget + + + tooltip_tab_budget + tab_budget + + + tab_connec + Connec + + + tooltip_tab_connec + tab_connec + + + tab_document + Document + + + tooltip_tab_document + tab_document + + + tab_general + General + + + tooltip_tab_general + tab_general + + + tab_gully + Gully + + + tooltip_tab_gully + tab_gully + + + tab_node + Node + + + tooltip_tab_node + tab_node + + + tab_other_prices + Other prices + + + tooltip_tab_other_prices + tab_other_prices + + + tab_relations + Relations + + + tooltip_tab_relations + tab_relations + + + vat_label + VAT: + + + tooltip_vat_label + vat_label + + + + psector_duplicate + + title + Duplicate psector + + + btn_accept + Accept + + + tooltip_btn_accept + Accept + + + btn_cancel + Cancel + + + tooltip_btn_cancel + btn_cancel + + + dlg_psector_duplicate + Duplicate psector + + + tooltip_dlg_psector_duplicate + dlg_psector_duplicate + + + lbl_duplicate_psector + Duplicate psector: + + + tooltip_lbl_duplicate_psector + lbl_duplicate_psector + + + lbl_new_psector + New psector name: + + + tooltip_lbl_new_psector + lbl_new_psector + + + tab_duplicate_psector + Duplicate psector + + + tooltip_tab_duplicate_psector + tab_duplicate_psector + + + tab_info_log + Info log + + + tooltip_tab_info_log + tab_info_log + + + + psector_manager + + title + Psector management + + + btn_cancel + Close + + + tooltip_btn_cancel + btn_cancel + + + btn_create + Create + + + tooltip_btn_create + Create + + + btn_delete + Delete + + + tooltip_btn_delete + btn_delete + + + btn_duplicate + Duplicate + + + tooltip_btn_duplicate + btn_duplicate + + + btn_merge + Merge + + + tooltip_btn_merge + To merge various psectors into only one, you have to previously select them using Ctrl and then click this button + + + btn_restore + Restore + + + tooltip_btn_restore + btn_restore + + + btn_show + Show + + + tooltip_btn_show + btn_show + + + btn_toggle_active + Toggle active + + + tooltip_btn_toggle_active + btn_toggle_active + + + btn_update_psector + Toggle current + + + tooltip_btn_update_psector + btn_update_psector + + + chk_active + Show inactive + + + tooltip_chk_active + Show inactive + + + chk_archived + Show archived + + + tooltip_chk_archived + chk_archived + + + chk_filter_canvas + Filter from Canvas + + + tooltip_chk_filter_canvas + Only show psectors visible in canvas + + + dlg_psector_manager + Psector management + + + tooltip_dlg_psector_manager + dlg_psector_manager + + + label + Info: + + + tooltip_label + label + + + lbl_psector_name + Filter by: Psector name + + + tooltip_lbl_psector_name + lbl_psector_name + + + + psector_rapport + + title + Psector rapport + + + btn_cancel + Cancel + + + tooltip_btn_cancel + Cancel + + + btn_ok + Create + + + tooltip_btn_ok + btn_ok + + + btn_path + ... + + + tooltip_btn_path + btn_path + + + chk_composer + Composer pdf file + + + tooltip_chk_composer + chk_composer + + + dlg_psector_rapport + Psector rapport + + + tooltip_dlg_psector_rapport + dlg_psector_rapport + + + grb_rapport + Rapport + + + tooltip_grb_rapport + grb_rapport + + + lbl_composer_disabled + Composer disabled + + + tooltip_lbl_composer_disabled + lbl_composer_disabled + + + lbl_detail_csv + Prices detail csv file: + + + tooltip_lbl_detail_csv + lbl_detail_csv + + + lbl_prices_list + Prices csv file: + + + tooltip_lbl_prices_list + lbl_prices_list + + + lbl_template + Template + + + tooltip_lbl_template + lbl_template + + + + psector_repair + + title + Dialog + + + btn_close + Close + + + tooltip_btn_close + btn_close + + + btn_repair + Repair + + + tooltip_btn_repair + btn_repair + + + dlg_psector_repair + Dialog + + + tooltip_dlg_psector_repair + dlg_psector_repair + + + + quantized_demands + + title + Quantized Demands + + + btn_cancel + Cancel + + + tooltip_btn_cancel + btn_cancel + + + btn_ok + OK + + + tooltip_btn_ok + btn_ok + + + dlg_quantized_demands + Quantized Demands + + + tooltip_dlg_quantized_demands + dlg_quantized_demands + + + lbl_config_file + Configuration file: + + + tooltip_lbl_config_file + lbl_config_file + + + lbl_filename + File name: + + + tooltip_lbl_filename + lbl_filename + + + lbl_input_file + Input INP file: + + + tooltip_lbl_input_file + lbl_input_file + + + lbl_output_folder + Output folder: + + + tooltip_lbl_output_folder + lbl_output_folder + + + + recursive_epa + + title + Epa Multi Calls + + + btn_accept + OK + + + tooltip_btn_accept + btn_accept + + + btn_close + Close + + + tooltip_btn_close + btn_close + + + dlg_recursive_epa + Epa Multi Calls + + + tooltip_dlg_recursive_epa + dlg_recursive_epa + + + lbl_config_file + Configuration file: + + + tooltip_lbl_config_file + lbl_config_file + + + lbl_filename + File name: + + + tooltip_lbl_filename + lbl_filename + + + lbl_output_folder + Output folder: + + + tooltip_lbl_output_folder + lbl_output_folder + + + + replace_arc + + title + Plan psector + + + btn_accept + Accept + + + tooltip_btn_accept + btn_accept + + + btn_cancel + Cancel + + + tooltip_btn_cancel + btn_cancel + + + dlg_replace_arc + Plan psector + + + tooltip_dlg_replace_arc + dlg_replace_arc + + + label + Current arc catalog: + + + tooltip_label + label + + + lbl_arccat + New arc catalog: + + + tooltip_lbl_arccat + lbl_arccat + + + tab_general + General + + + tooltip_tab_general + tab_general + + + tab_loginfo + Info log + + + tooltip_tab_loginfo + tab_loginfo + + + + replace_in_file + + title + Replace text in file + + + btn_accept + Accept + + + tooltip_btn_accept + btn_accept + + + btn_cancel + Cancelar + + + tooltip_btn_cancel + btn_cancel + + + dlg_replace_in_file + Replace text in file + + + tooltip_dlg_replace_in_file + dlg_replace_in_file + + + lbl_subtitle + There are objects with more than 16 characters in their name + + + tooltip_lbl_subtitle + lbl_subtitle + + + lbl_title + Replace these names with new ones: + + + tooltip_lbl_title + lbl_title + + + + reports + + btn_close + Close + + + tooltip_btn_close + btn_close + + + btn_export + Export + + + tooltip_btn_export + btn_export + + + grb_filters + Filters + + + tooltip_grb_filters + grb_filters + + + grb_info + Info + + + tooltip_grb_info + grb_info + + + label + Query: + + + tooltip_label + label + + + label_2 + Description: + + + tooltip_label_2 + label_2 + + + lbl_export_path + Path: + + + tooltip_lbl_export_path + lbl_export_path + + + + resources_management + + title + Resource Management + + + actionT + t + + + tooltip_actionT + actionT + + + btn_assign_team + Assign Team + + + tooltip_btn_assign_team + btn_assign_team + + + btn_close + Close + + + tooltip_btn_close + Close + + + btn_organi_create + Create + + + tooltip_btn_organi_create + Create + + + btn_organi_delete + Delete + + + tooltip_btn_organi_delete + Delete + + + btn_organi_update + Update + + + tooltip_btn_organi_update + Modify + + + btn_remove_team + Remove Team + + + tooltip_btn_remove_team + btn_remove_team + + + btn_team_create + Create + + + tooltip_btn_team_create + Create + + + btn_team_delete + Delete + + + tooltip_btn_team_delete + Delete + + + btn_team_selector + Selector + + + tooltip_btn_team_selector + Selector + + + btn_team_toggle_active + Toggle active + + + tooltip_btn_team_toggle_active + btn_team_toggle_active + + + btn_team_update + Update + + + tooltip_btn_team_update + Modify + + + btn_user_create + Create + + + tooltip_btn_user_create + btn_user_create + + + btn_user_delete + Delete + + + tooltip_btn_user_delete + btn_user_delete + + + btn_user_toggle_active + Toggle active + + + tooltip_btn_user_toggle_active + btn_user_toggle_active + + + btn_user_update + Modify + + + tooltip_btn_user_update + btn_user_update + + + cmb_team + Select team + + + tooltip_cmb_team + cmb_team + + + dlg_resources_management + Resource Management + + + tooltip_dlg_resources_management + dlg_resources_management + + + groupBox + Management: + + + tooltip_groupBox + Management: + + + groupBox_2 + Management: + + + tooltip_groupBox_2 + Management: + + + label + Filter by name: + + + tooltip_label + label + + + label_2 + Filter by team name: + + + tooltip_label_2 + label_2 + + + label_3 + Filter by team: + + + tooltip_label_3 + label_3 + + + organizations + Organizations + + + tooltip_organizations + Organizations + + + resource_management + Resource Management + + + tooltip_resource_management + resource_management + + + tab_organizations + Organizations + + + tooltip_tab_organizations + tab_organizations + + + tab_teams + Teams + + + tooltip_tab_teams + tab_teams + + + tab_users + Users + + + tooltip_tab_users + tab_users + + + team + Teams + + + tooltip_team + Teams + + + + result_selector + + title + Result Selector + + + btn_accept + Accept + + + tooltip_btn_accept + btn_accept + + + btn_cancel + Cancel + + + tooltip_btn_cancel + btn_cancel + + + dlg_result_selector + Result Selector + + + tooltip_dlg_result_selector + dlg_result_selector + + + lbl_descript + Description: + + + tooltip_lbl_descript + lbl_descript + + + lbl_descript_compare + Description: + + + tooltip_lbl_descript_compare + lbl_descript_compare + + + lbl_result_compare + Result to compare: + + + tooltip_lbl_result_compare + lbl_result_compare + + + lbl_result_main + Result to show: + + + tooltip_lbl_result_main + lbl_result_main + + + tab_result + Result + + + tooltip_tab_result + tab_result + + + + search + + title + Search + + + Check all + Check all + + + tooltip_Check all + Check all + + + dlg_search + Search + + + tooltip_dlg_search + dlg_search + + + lbl_msg + No results found + + + tooltip_lbl_msg + lbl_msg + + + + search_workcat + + title + Workcat search + + + btn_close + Close + + + tooltip_btn_close + btn_close + + + btn_export_to_csv + Export to csv + + + tooltip_btn_export_to_csv + btn_export_to_csv + + + btn_path + ... + + + tooltip_btn_path + btn_path + + + btn_state0 + Activate + + + tooltip_btn_state0 + btn_state0 + + + btn_state1 + Activate + + + tooltip_btn_state1 + btn_state1 + + + dlg_search_workcat + Workcat search + + + tooltip_dlg_search_workcat + dlg_search_workcat + + + lbl_destination_path + Destination path: + + + tooltip_lbl_destination_path + lbl_destination_path + + + lbl_end + Filter by: code + + + tooltip_lbl_end + lbl_end + + + lbl_feat_end + Features removed with the selected workcat + + + tooltip_lbl_feat_end + lbl_feat_end + + + lbl_feat_ini + Features installed with the selected workcat + + + tooltip_lbl_feat_ini + lbl_feat_ini + + + lbl_init + Filter by: code + + + tooltip_lbl_init + lbl_init + + + lbl_total1 + &lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; font-weight:600;&quot;&gt;Total numbers:&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt; + + + tooltip_lbl_total1 + lbl_total1 + + + lbl_total2 + &lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; font-weight:600;&quot;&gt;Total numbers:&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt; + + + tooltip_lbl_total2 + lbl_total2 + + + tab_doc + Documents + + + tooltip_tab_doc + tab_doc + + + tab_ended + Removed + + + tooltip_tab_ended + tab_ended + + + tab_init + Installed + + + tooltip_tab_init + tab_init + + + + selector + + title + Selector + + + btn_close + Close + + + tooltip_btn_close + Close + + + chk_all_ + Check all + + + tooltip_chk_all_ + Shift+Click to uncheck all + + + dlg_selector + Selector + + + tooltip_dlg_selector + dlg_selector + + + lbl_filter + Filter: + + + tooltip_lbl_filter + lbl_filter + + + + selector_date + + title + Date selector + + + btn_accept + OK + + + tooltip_btn_accept + btn_accept + + + btn_close + Close + + + tooltip_btn_close + Close + + + date_from + dd/MM/yyyy + + + tooltip_date_from + date_from + + + date_to + dd/MM/yyyy + + + tooltip_date_to + date_to + + + dlg_selector_date + Date selector + + + tooltip_dlg_selector_date + dlg_selector_date + + + lbl_date_from + Date from: + + + tooltip_lbl_date_from + lbl_date_from + + + lbl_date_to + Date to: + + + tooltip_lbl_date_to + lbl_date_to + + + + show_info + + title + Dialog + + + btn_accept + Accept + + + tooltip_btn_accept + btn_accept + + + btn_close + Close + + + tooltip_btn_close + btn_close + + + dlg_show_info + Dialog + + + tooltip_dlg_show_info + dlg_show_info + + + + snapshot_view + + title + Audit + + + Audit + Audit + + + tooltip_Audit + Audit + + + Calculate from exploitation + Calculate from exploitation + + + tooltip_Calculate from exploitation + Calculate from exploitation + + + Calculate from municipality + Calculate from municipality + + + tooltip_Calculate from municipality + Calculate from municipality + + + dlg_snapshot_view + Audit + + + tooltip_dlg_snapshot_view + Audit + + + Draw on map canvas + Draw on map canvas + + + tooltip_Draw on map canvas + Draw on map canvas + + + groupBox + Features to recover + + + tooltip_groupBox + Features to recover + + + groupBox_2 + Temporal and spatial selection + + + tooltip_groupBox_2 + Temporal and spatial selection + + + Use current map canvas extent + Use current map canvas extent + + + tooltip_Use current map canvas extent + Use current map canvas extent + + + + static_calibration + + title + Static Calibration + + + btn_cancel + Cancel + + + tooltip_btn_cancel + btn_cancel + + + btn_ok + OK + + + tooltip_btn_ok + btn_ok + + + dlg_static_calibration + Static Calibration + + + tooltip_dlg_static_calibration + dlg_static_calibration + + + lbl_config_file + Configuration file: + + + tooltip_lbl_config_file + lbl_config_file + + + lbl_filename + File name: + + + tooltip_lbl_filename + lbl_filename + + + lbl_inp_input_file + Input INP file: + + + tooltip_lbl_inp_input_file + lbl_inp_input_file + + + lbl_output_folder + Output files name: + + + tooltip_lbl_output_folder + lbl_output_folder + + + + status_selector + + title + Status Selector + + + btn_accept + Accept + + + tooltip_btn_accept + btn_accept + + + btn_cancel + Cancel + + + tooltip_btn_cancel + btn_cancel + + + dlg_status_selector + Status Selector + + + tooltip_dlg_status_selector + dlg_status_selector + + + lbl_new_status + New status: + + + tooltip_lbl_new_status + lbl_new_status + + + lbl_result + result_id: result_name + + + tooltip_lbl_result + lbl_result + + + lbl_result_main + You are changing the status of the following result: + + + tooltip_lbl_result_main + lbl_result_main + + + + style + + title + Add category + + + btn_add + Accept + + + tooltip_btn_add + btn_add + + + btn_cancel + Cancel + + + tooltip_btn_cancel + btn_cancel + + + dlg_style + Add category + + + tooltip_dlg_style + dlg_style + + + lbl_cat_id + Category ID: + + + tooltip_lbl_cat_id + lbl_cat_id + + + lbl_cat_name + Category name: + + + tooltip_lbl_cat_name + lbl_cat_name + + + lbl_descript + Description: + + + tooltip_lbl_descript + lbl_descript + + + lbl_role + Role: + + + tooltip_lbl_role + lbl_role + + + tab_del_feature + Data + + + tooltip_tab_del_feature + tab_del_feature + + + + style_manager + + title + Style management + + + btn_addGroup + btn_addGroup + + + tooltip_btn_addGroup + Add new category + + + btn_add_style + Add style + + + tooltip_btn_add_style + Add style + + + btn_addStyle + Add style + + + tooltip_btn_addStyle + Adds a layer to the selected category + + + btn_cancel + Close + + + tooltip_btn_cancel + Close + + + btn_close + Close + + + tooltip_btn_close + Close + + + btn_deleteGroup + btn_deleteGroup + + + tooltip_btn_deleteGroup + Delete selected category + + + btn_delete_style + Delete style + + + tooltip_btn_delete_style + btn_delete_style + + + btn_deleteStyle + Delete style + + + tooltip_btn_deleteStyle + Removes a style from the category + + + btn_refresh_all + Refresh all + + + tooltip_btn_refresh_all + Refresh all + + + btn_refreshAll + Refresh all + + + tooltip_btn_refreshAll + Reloads the styles loaded into the project + + + btn_update_group + Update + + + tooltip_btn_update_group + Update selected category + + + btn_update_style + Update style + + + tooltip_btn_update_style + Update style + + + btn_updateStyle + Update style + + + tooltip_btn_updateStyle + Updates the selected layer style with the style in the corresponding project layer + + + Delete style + Delete style + + + tooltip_Delete style + Delete style + + + dlg_style_manager + Style management + + + tooltip_dlg_style_manager + dlg_style_manager + + + lbl_filter_category + Filter by: Category + + + tooltip_lbl_filter_category + lbl_filter_category + + + lbl_filter_name + Filter by: layername + + + tooltip_lbl_filter_name + lbl_filter_name + + + stylegroup + stylegroup + + + tooltip_stylegroup + All your style categories + + + style_name + style_name + + + tooltip_style_name + Introduce the layer name to filter + + + + style_update_category + + title + Rename category + + + btn_accept + Accept + + + tooltip_btn_accept + btn_accept + + + btn_cancel + Cancel + + + tooltip_btn_cancel + btn_cancel + + + dlg_style_update_category + Rename category + + + tooltip_dlg_style_update_category + dlg_style_update_category + + + lbl_rename_copy + Please, select a new category name: + + + tooltip_lbl_rename_copy + lbl_rename_copy + + + + team_create + + title + Create team + + + actionT + t + + + tooltip_actionT + actionT + + + btn_accept + Accept + + + tooltip_btn_accept + Accept + + + btn_cancel + Cancel + + + tooltip_btn_cancel + Cancel + + + dlg_team_create + Create team + + + tooltip_dlg_team_create + dlg_team_create + + + grb_team + Team: + + + tooltip_grb_team + grb_team + + + lbl_active + Active: + + + tooltip_lbl_active + Active: + + + lbl_descript + Description: + + + tooltip_lbl_descript + Description: + + + lbl_name + Team name: + + + tooltip_lbl_name + Team name: + + + team_create + Create team + + + tooltip_team_create + team_create + + + TeamTab + Team + + + tooltip_TeamTab + TeamTab + + + + team_management + + title + Team management + + + actionT + t + + + tooltip_actionT + actionT + + + btn_close + Close + + + tooltip_btn_close + btn_close + + + btn_user_select + &gt;&gt; + + + tooltip_btn_user_select + btn_user_select + + + btn_user_unselect + &lt;&lt; + + + tooltip_btn_user_unselect + btn_user_unselect + + + btn_vehicle_select + &gt;&gt; + + + tooltip_btn_vehicle_select + btn_vehicle_select + + + btn_vehicle_unselect + &lt;&lt; + + + tooltip_btn_vehicle_unselect + btn_vehicle_unselect + + + btn_visitclass_select + &gt;&gt; + + + tooltip_btn_visitclass_select + btn_visitclass_select + + + btn_visitclass_unselect + &lt;&lt; + + + tooltip_btn_visitclass_unselect + btn_visitclass_unselect + + + dlg_team_management + Team management + + + tooltip_dlg_team_management + dlg_team_management + + + tab_user + Users + + + tooltip_tab_user + Users + + + tab_vehicles + Vehicles + + + tooltip_tab_vehicles + Vehicles + + + tab_visit_class + Visit class + + + tooltip_tab_visit_class + Visit class + + + team_management + Team management + + + tooltip_team_management + team_management + + + + toolbox + + title + Dialog + + + btn_cancel + Cancel + + + tooltip_btn_cancel + btn_cancel + + + btn_close + Close + + + tooltip_btn_close + btn_close + + + btn_run + Run + + + tooltip_btn_run + btn_run + + + dlg_toolbox + Dialog + + + tooltip_dlg_toolbox + dlg_toolbox + + + grb_input_layer + Input layer: + + + tooltip_grb_input_layer + grb_input_layer + + + grb_parameters + Option parameters: + + + tooltip_grb_parameters + grb_parameters + + + grb_selection_type + Selection type: + + + tooltip_grb_selection_type + grb_selection_type + + + groupBox + Info: + + + tooltip_groupBox + groupBox + + + rbt_layer + All features + + + tooltip_rbt_layer + rbt_layer + + + rbt_previous + Selected features only + + + tooltip_rbt_previous + rbt_previous + + + tab_config + Config + + + tooltip_tab_config + tab_config + + + tab_loginfo + Info log + + + tooltip_tab_loginfo + tab_loginfo + + + trv_processes + Processes + + + tooltip_trv_processes + trv_processes + + + trv_reports + Raports + + + tooltip_trv_reports + trv_reports + + + + toolbox_reports + + title + Reports + + + btn_close + Close + + + tooltip_btn_close + btn_close + + + btn_export + Export + + + tooltip_btn_export + btn_export + + + btn_export_path + ... + + + tooltip_btn_export_path + btn_export_path + + + dlg_toolbox_reports + Reports + + + tooltip_dlg_toolbox_reports + dlg_toolbox_reports + + + grb_filters + Filters + + + tooltip_grb_filters + grb_filters + + + grb_info + Info + + + tooltip_grb_info + grb_info + + + label + Query: + + + tooltip_label + label + + + label_2 + Description: + + + tooltip_label_2 + label_2 + + + lbl_export_path + Path: + + + tooltip_lbl_export_path + lbl_export_path + + + + toolbox_tool + + btn_cancel + Cancel + + + tooltip_btn_cancel + btn_cancel + + + btn_close + Close + + + tooltip_btn_close + btn_close + + + btn_run + Run + + + tooltip_btn_run + btn_run + + + grb_input_layer + Input layer: + + + tooltip_grb_input_layer + grb_input_layer + + + grb_parameters + Option parameters: + + + tooltip_grb_parameters + grb_parameters + + + grb_selection_type + Selection type: + + + tooltip_grb_selection_type + grb_selection_type + + + groupBox + Info: + + + tooltip_groupBox + groupBox + + + progressBar + %p% + + + tooltip_progressBar + progressBar + + + rbt_layer + All features + + + tooltip_rbt_layer + rbt_layer + + + rbt_previous + Selected features only + + + tooltip_rbt_previous + rbt_previous + + + tab_config + Config + + + tooltip_tab_config + tab_config + + + tab_loginfo + Info Log + + + tooltip_tab_loginfo + tab_loginfo + + + + update_style_group + + btn_accept + Accept + + + tooltip_btn_accept + Accept + + + btn_cancel + Cancel + + + tooltip_btn_cancel + Cancel + + + lbl_rename_copy + Please, select a new category name: + + + tooltip_lbl_rename_copy + Please, select a new category name: + + + + user_create + + title + Create + + + actionT + t + + + tooltip_actionT + actionT + + + dlg_user_create + Create + + + tooltip_dlg_user_create + dlg_user_create + + + user_create + Create user + + + tooltip_user_create + user_create + + + + valve_operation_check + + title + Valve Operation Check + + + btn_cancel + Cancel + + + tooltip_btn_cancel + btn_cancel + + + btn_ok + OK + + + tooltip_btn_ok + btn_ok + + + dlg_valve_operation_check + Valve Operation Check + + + tooltip_dlg_valve_operation_check + dlg_valve_operation_check + + + lbl_config_file + Configuration file: + + + tooltip_lbl_config_file + lbl_config_file + + + lbl_filename + File name: + + + tooltip_lbl_filename + lbl_filename + + + lbl_input_file + Input INP file: + + + tooltip_lbl_input_file + lbl_input_file + + + lbl_output_folder + Output folder: + + + tooltip_lbl_output_folder + lbl_output_folder + + + lbl_scenarios + Use scenarios from: + + + tooltip_lbl_scenarios + lbl_scenarios + + + rdb_scenarios_config + Configuration file: + + + tooltip_rdb_scenarios_config + rdb_scenarios_config + + + rdb_scenarios_database + Database + + + tooltip_rdb_scenarios_database + rdb_scenarios_database + + + + visit + + title + Visit + + + btn_accept + Accept + + + tooltip_btn_accept + Accept + + + btn_add_geom + Add geom + + + tooltip_btn_add_geom + btn_add_geom + + + btn_cancel + Cancel + + + tooltip_btn_cancel + btn_cancel + + + btn_doc_delete + btn_doc_delete + + + tooltip_btn_doc_delete + Delete document + + + btn_doc_insert + btn_doc_insert + + + tooltip_btn_doc_insert + Insert document + + + btn_doc_new + btn_doc_new + + + tooltip_btn_doc_new + Create new document + + + btn_event_delete + DELETE EVENT + + + tooltip_btn_event_delete + btn_event_delete + + + btn_event_insert + INSERT EVENT + + + tooltip_btn_event_insert + btn_event_insert + + + btn_event_update + UPDATE EVENT + + + tooltip_btn_event_update + btn_event_update + + + btn_feature_delete + btn_feature_delete + + + tooltip_btn_feature_delete + btn_feature_delete + + + btn_feature_insert + btn_feature_insert + + + tooltip_btn_feature_insert + btn_feature_insert + + + btn_feature_snapping + btn_feature_snapping + + + tooltip_btn_feature_snapping + btn_feature_snapping + + + btn_open_doc + btn_open_doc + + + tooltip_btn_open_doc + Open document + + + dlg_visit + Visit + + + tooltip_dlg_visit + dlg_visit + + + enddate + dd/MM/yyyy + + + tooltip_enddate + enddate + + + label + Feature type: + + + tooltip_label + label + + + lbl_code + Code: + + + tooltip_lbl_code + lbl_code + + + lbl_descript + Description: + + + tooltip_lbl_descript + lbl_descript + + + lbl_end_date + End date:* + + + tooltip_lbl_end_date + lbl_end_date + + + lbl_expl + Exploitation:* + + + tooltip_lbl_expl + lbl_expl + + + lbl_feature_type + Feature type: + + + tooltip_lbl_feature_type + lbl_feature_type + + + lbl_id + Id: + + + tooltip_lbl_id + lbl_id + + + lbl_info + From toolbar only STANDARD EVENTS are enabled. + + + tooltip_lbl_info + lbl_info + + + lbl_start_date + Start date:* + + + tooltip_lbl_start_date + lbl_start_date + + + lbl_status + Status: + + + tooltip_lbl_status + lbl_status + + + lbl_user_name + User name: + + + tooltip_lbl_user_name + lbl_user_name + + + lbl_visitcat_id + Visitcat id:* + + + tooltip_lbl_visitcat_id + lbl_visitcat_id + + + startdate + dd/MM/yyyy + + + tooltip_startdate + startdate + + + tab_arc + Arc + + + tooltip_tab_arc + tab_arc + + + tab_connec + Connec + + + tooltip_tab_connec + tab_connec + + + tab_document + Document + + + tooltip_tab_document + tab_document + + + tab_event + Event + + + tooltip_tab_event + tab_event + + + tab_gully + Gully + + + tooltip_tab_gully + tab_gully + + + tab_link + Link + + + tooltip_tab_link + tab_link + + + tab_node + Node + + + tooltip_tab_node + tab_node + + + tab_relations + Relations + + + tooltip_tab_relations + Relations + + + tab_visit + Visit + + + tooltip_tab_visit + tab_visit + + + + visit_document + + title + Load documents + + + btn_open + Open + + + tooltip_btn_open + btn_open + + + dlg_visit_document + Load documents + + + tooltip_dlg_visit_document + dlg_visit_document + + + groupBox_2 + List of documents + + + tooltip_groupBox_2 + groupBox_2 + + + lbl_visit_id + Visit id + + + tooltip_lbl_visit_id + Visit ID + + + + visit_event + + title + Standard event + + + btn_accept + Accept + + + tooltip_btn_accept + btn_accept + + + btn_add_file + Add file + + + tooltip_btn_add_file + btn_add_file + + + btn_cancel + Cancel + + + tooltip_btn_cancel + btn_cancel + + + btn_delete_file + Delete file + + + tooltip_btn_delete_file + btn_delete_file + + + dlg_visit_event + Standard event + + + tooltip_dlg_visit_event + dlg_visit_event + + + label + Event_code: + + + tooltip_label + label + + + lbl_files + Files: + + + tooltip_lbl_files + lbl_files + + + lbl_parameter_id + Parameter id: + + + tooltip_lbl_parameter_id + lbl_parameter_id + + + lbl_position_id + Position id: + + + tooltip_lbl_position_id + lbl_position_id + + + lbl_position_value + Position value: + + + tooltip_lbl_position_value + lbl_position_value + + + lbl_text + Text: + + + tooltip_lbl_text + lbl_text + + + lbl_value + Value: + + + tooltip_lbl_value + lbl_value + + + + visit_event_full + + title + Event + + + btn_close + Close + + + tooltip_btn_close + btn_close + + + dlg_visit_event_full + Event + + + tooltip_dlg_visit_event_full + dlg_visit_event_full + + + lbl_compass + Compass: + + + tooltip_lbl_compass + lbl_compass + + + lbl_event_code + Event code: + + + tooltip_lbl_event_code + lbl_event_code + + + lbl_files + Files: + + + tooltip_lbl_files + lbl_files + + + lbl_geom1 + Geom1: + + + tooltip_lbl_geom1 + lbl_geom1 + + + lbl_geom2 + Geom2: + + + tooltip_lbl_geom2 + lbl_geom2 + + + lbl_geom3 + Geom3: + + + tooltip_lbl_geom3 + lbl_geom3 + + + lbl_id + Id: + + + tooltip_lbl_id + lbl_id + + + lbl_index_val + Index val: + + + tooltip_lbl_index_val + lbl_index_val + + + lbl_is_last + Is last: + + + tooltip_lbl_is_last + lbl_is_last + + + lbl_parameter_id + Parameter id: + + + tooltip_lbl_parameter_id + lbl_parameter_id + + + lbl_position_id + Position id: + + + tooltip_lbl_position_id + lbl_position_id + + + lbl_position_value + Position value: + + + tooltip_lbl_position_value + lbl_position_value + + + lbl_text + Text: + + + tooltip_lbl_text + lbl_text + + + lbl_tstamp + Tstamp: + + + tooltip_lbl_tstamp + lbl_tstamp + + + lbl_value + Value: + + + tooltip_lbl_value + lbl_value + + + lbl_value1 + Value1: + + + tooltip_lbl_value1 + lbl_value1 + + + lbl_value2 + Value2: + + + tooltip_lbl_value2 + lbl_value2 + + + lbl_visit_id + Visit id: + + + tooltip_lbl_visit_id + Visit ID + + + lbl_xcoord + Xcoord: + + + tooltip_lbl_xcoord + lbl_xcoord + + + lbl_ycoord + Ycoord: + + + tooltip_lbl_ycoord + lbl_ycoord + + + tab_files + Files + + + tooltip_tab_files + tab_files + + + tab_info + Info + + + tooltip_tab_info + tab_info + + + + visit_event_rehab + + title + Rehabilitation arc event + + + btn_accept + Aceptar + + + tooltip_btn_accept + btn_accept + + + btn_add_file + Add file + + + tooltip_btn_add_file + btn_add_file + + + btn_cancel + Cancelar + + + tooltip_btn_cancel + btn_cancel + + + btn_delete_file + Delete file + + + tooltip_btn_delete_file + btn_delete_file + + + dlg_visit_event_rehab + Rehabilitation arc event + + + tooltip_dlg_visit_event_rehab + dlg_visit_event_rehab + + + lbl_files + Files: + + + tooltip_lbl_files + lbl_files + + + lbl_geom1 + Geom1: + + + tooltip_lbl_geom1 + lbl_geom1 + + + lbl_geom2 + Geom2: + + + tooltip_lbl_geom2 + lbl_geom2 + + + lbl_geom3 + Geom3: + + + tooltip_lbl_geom3 + lbl_geom3 + + + lbl_parameter_id + Parameter id: + + + tooltip_lbl_parameter_id + lbl_parameter_id + + + lbl_position_id + Position id: + + + tooltip_lbl_position_id + lbl_position_id + + + lbl_position_value + Position value: + + + tooltip_lbl_position_value + lbl_position_value + + + lbl_text + Text: + + + tooltip_lbl_text + lbl_text + + + lbl_value1 + Value1: + + + tooltip_lbl_value1 + lbl_value1 + + + lbl_value2 + Value2: + + + tooltip_lbl_value2 + lbl_value2 + + + + visit_gallery + + title + Gallery + + + btn_close + Close + + + tooltip_btn_close + btn_close + + + btn_next + btn_next + + + tooltip_btn_next + btn_next + + + btn_previous + btn_previous + + + tooltip_btn_previous + btn_previous + + + dlg_visit_gallery + Gallery + + + tooltip_dlg_visit_gallery + dlg_visit_gallery + + + lbl_event_id + Event id: + + + tooltip_lbl_event_id + lbl_event_id + + + lbl_visit_id + Visit id: + + + tooltip_lbl_visit_id + Visit ID + + + + visit_gallery_zoom + + title + Gallery zoom + + + btn_slideNext + btn_slideNext + + + tooltip_btn_slideNext + btn_slideNext + + + btn_slidePrevious + btn_slidePrevious + + + tooltip_btn_slidePrevious + btn_slidePrevious + + + dlg_visit_gallery_zoom + Gallery zoom + + + tooltip_dlg_visit_gallery_zoom + dlg_visit_gallery_zoom + + + lbl_event_id + Event id: + + + tooltip_lbl_event_id + lbl_event_id + + + lbl_img_zoom + Image zoom + + + tooltip_lbl_img_zoom + lbl_img_zoom + + + lbl_visit_id + Visit id: + + + tooltip_lbl_visit_id + Visit ID + + + + visit_manager + + title + Visit management + + + btn_close + Close + + + tooltip_btn_close + Close + + + btn_create + Create + + + tooltip_btn_create + Create + + + btn_delete + Delete visit + + + tooltip_btn_delete + btn_delete + + + btn_open + Open visit + + + tooltip_btn_open + btn_open + + + date_event_from + dd/MM/yyyy + + + tooltip_date_event_from + date_event_from + + + date_event_to + dd/MM/yyyy + + + tooltip_date_event_to + date_event_to + + + dlg_visit_manager + Visit management + + + tooltip_dlg_visit_manager + dlg_visit_manager + + + lbl_data_event_from + From: + + + tooltip_lbl_data_event_from + lbl_data_event_from + + + lbl_data_event_to + To: + + + tooltip_lbl_data_event_to + lbl_data_event_to + + + lbl_filter + Filter by code: + + + tooltip_lbl_filter + lbl_filter + + + + visit_picture + + title + Add picture + + + btn_accept + Accept + + + tooltip_btn_accept + Accept + + + btn_cancel + Cancel + + + tooltip_btn_cancel + btn_cancel + + + dlg_visit_picture + Add picture + + + tooltip_dlg_visit_picture + dlg_visit_picture + + + lbl_link + Link: + + + tooltip_lbl_link + Link + + + path_doc + ... + + + tooltip_path_doc + path_doc + + + + workcat_manager + + title + Workcat management + + + btn_cancel + Close + + + tooltip_btn_cancel + Close + + + btn_create + Create + + + tooltip_btn_create + Create + + + btn_delete + Delete + + + tooltip_btn_delete + Delete + + + dlg_workcat_manager + Workcat management + + + tooltip_dlg_workcat_manager + dlg_workcat_manager + + + lbl_filter_name + Filter by: Workcat name + + + tooltip_lbl_filter_name + lbl_filter_name + + + + work_management + + btn_accept + Save + + + tooltip_btn_accept + Save + + + btn_export_user + Export to csv + + + tooltip_btn_export_user + Export to csv + + + lbl_from + From: + + + tooltip_lbl_from + From: + + + lbl_team + Team: + + + tooltip_lbl_team + Team: + + + lbl_to + To: + + + tooltip_lbl_to + To: + + + + workorder_management + + title + Workorder Management + + + btn_cancel + Close + + + tooltip_btn_cancel + btn_cancel + + + btn_create + Create Workorder + + + tooltip_btn_create + btn_create + + + btn_create_wclass + Create Class + + + tooltip_btn_create_wclass + btn_create_wclass + + + btn_create_wtype + Create Type + + + tooltip_btn_create_wtype + btn_create_wtype + + + btn_delete + Delete Workorder + + + tooltip_btn_delete + btn_delete + + + campaign_management + Administrador de Campañas + + + tooltip_campaign_management + campaign_management + + + dlg_workorder_management + Workorder Management + + + tooltip_dlg_workorder_management + dlg_workorder_management + + + label + Filter by name: + + + tooltip_label + label + + + lbl_column_filter_dates + Workorder Type: + + + tooltip_lbl_column_filter_dates + lbl_column_filter_dates + + + lbl_state + Workorder Class: + + + tooltip_lbl_state + lbl_state + + + workorder_management + Workorder Management + + + tooltip_workorder_management + workorder_management + + + + workspace_create + + title + Create new workspace + + + btn_accept + Accept + + + tooltip_btn_accept + btn_accept + + + btn_cancel + Cancel + + + tooltip_btn_cancel + btn_cancel + + + btn_toggle_privacy + Toggle privacy + + + tooltip_btn_toggle_privacy + btn_toggle_privacy + + + btn_update + Update + + + tooltip_btn_update + btn_update + + + dlg_workspace_create + Create new workspace + + + tooltip_dlg_workspace_create + dlg_workspace_create + + + lbl_new_workspace + Workspace name: + + + tooltip_lbl_new_workspace + Workspace name + + + lbl_new_workspace_chk + Private workspace: + + + tooltip_lbl_new_workspace_chk + lbl_new_workspace_chk + + + lbl_new_workspace_descript + Description: + + + tooltip_lbl_new_workspace_descript + Workspace description + + + tab_info_log + Info log + + + tooltip_tab_info_log + tab_info_log + + + tab_new_workspace + Create new workspace + + + tooltip_tab_new_workspace + tab_new_workspace + + + txt_workspace_descript + Workspace description + + + tooltip_txt_workspace_descript + Use this to describe what the workspace is used for + + + txt_workspace_name + Workspace name + + + tooltip_txt_workspace_name + Workspace name *Required + + + + workspace_manager + + title + Workspace manager + + + btn_cancel + Close + + + tooltip_btn_cancel + btn_cancel + + + btn_create + Create + + + tooltip_btn_create + Create + + + btn_current + Set current + + + tooltip_btn_current + Set the current workspace + + + btn_delete + Delete + + + tooltip_btn_delete + Delete the selected workspace + + + btn_reset + Reset workspace + + + tooltip_btn_reset + Reset the values of the current workspace + + + btn_toggle_privacy + Toggle privacy + + + tooltip_btn_toggle_privacy + Update + + + btn_update + Update + + + tooltip_btn_update + Toggle privacy + + + dlg_workspace_manager + Workspace manager + + + tooltip_dlg_workspace_manager + dlg_workspace_manager + + + label + Info: + + + tooltip_label + label + + + lbl_vdefault_workspace + lbl_vdefault_workspace + + + tooltip_lbl_vdefault_workspace + Current workspace + + + lbl_workspace_name + Filter by: Workspace name + + + tooltip_lbl_workspace_name + lbl_workspace_name + + + txt_name + Name + + + tooltip_txt_name + Workspace name + + + diff --git a/libs b/libs index 23c3c15a23..caa44359d2 160000 --- a/libs +++ b/libs @@ -1 +1 @@ -Subproject commit 23c3c15a23d3d064be0cd42bc6d92473e841d270 +Subproject commit caa44359d2f8bd2b7c58b6cf1d40d88c5671afd9 diff --git a/test/test_i18n_baseline_seed.py b/test/test_i18n_baseline_seed.py new file mode 100644 index 0000000000..c7fe905216 --- /dev/null +++ b/test/test_i18n_baseline_seed.py @@ -0,0 +1,306 @@ +"""Tests for i18n baseline SQL parsing and multilang row conversion.""" + +from __future__ import annotations + +import os +import unittest + +from core.admin.i18n_baseline_seed import ( + BASELINE_TO_MULTILANG_TABLE, + MULTILANG_UI_TABLES, + MultilangRow, + _TABLE_CONFLICT_KEYS, + _dedupe_rows_by_conflict_key, + baseline_needs_reseed, + blocks_to_multilang_rows, + build_insert_sql, + compute_baseline_fingerprint, + delete_schema_seed_sql, + load_baseline_rows, + parse_sql_value_tuple, + parse_stored_seeded_schemas, + parse_update_blocks, + seed_sql_for_schema, + seeded_schemas_out_of_sync, + split_value_tuples, + translatable_schema_names_from_inventory, +) + + +class TestI18nBaselineSeed(unittest.TestCase): + + def test_target_table_mapping(self): + self.assertEqual(len(MULTILANG_UI_TABLES), 9) + self.assertEqual( + BASELINE_TO_MULTILANG_TABLE["dbparam_user"], + "sys_param_user", + ) + self.assertEqual( + BASELINE_TO_MULTILANG_TABLE["dbconfig_form_fields_feat"], + "config_form_fields", + ) + self.assertEqual( + BASELINE_TO_MULTILANG_TABLE["dbconfig_form_fields_json"], + "config_form_fields_json", + ) + self.assertEqual( + BASELINE_TO_MULTILANG_TABLE["dbfprocess"], + "sys_fprocess", + ) + + def test_parse_sql_value_tuple_basic(self): + values = parse_sql_value_tuple("(385, 'Import inp', NULL)") + self.assertEqual(values, [385, "Import inp", None]) + + def test_parse_sql_value_tuple_escaped_quote(self): + values = parse_sql_value_tuple("('it''s', 'ok')") + self.assertEqual(values, ["it's", "ok"]) + + def test_split_value_tuples(self): + blob = "(1, 'a'),\n(2, 'b, c')" + tuples = split_value_tuples(blob) + self.assertEqual(len(tuples), 2) + self.assertEqual(parse_sql_value_tuple(tuples[1]), [2, "b, c"]) + + def test_parse_dbparam_user_maps_descript_to_tt(self): + sql = """ + UPDATE sys_param_user AS t SET label = v.label, descript = v.descript FROM ( + VALUES + ('edit_state_vdefault', 'State:', 'Value of state parameter') + ) AS v(id, label, descript) + WHERE t.id = v.id; + """ + blocks = parse_update_blocks(sql) + rows = blocks_to_multilang_rows( + "dbparam_user", + blocks, + schema_name="ws_0630", + ) + self.assertEqual(len(rows), 1) + self.assertEqual(rows[0].table, "sys_param_user") + self.assertEqual(rows[0].values["source"], "edit_state_vdefault") + self.assertEqual(rows[0].values["lb"], "State:") + self.assertEqual(rows[0].values["tt"], "Value of state parameter") + self.assertNotIn("ds", rows[0].values) + + inserts = build_insert_sql("sys_param_user", rows) + self.assertEqual(len(inserts), 1) + self.assertIn("INSERT INTO multilang.sys_param_user", inserts[0]) + self.assertIn(" tt ", inserts[0]) + self.assertNotIn(" ds ", inserts[0]) + + def test_parse_dbfprocess_quotes_in_column(self): + sql = """ + UPDATE sys_fprocess AS t SET except_msg = v.except_msg, info_msg = v.info_msg, + fprocess_name = v.fprocess_name FROM ( + VALUES + (107, 'except text', 'info text', 'Process name') + ) AS v(fid, except_msg, info_msg, fprocess_name) + WHERE t.fid = v.fid; + """ + blocks = parse_update_blocks(sql) + rows = blocks_to_multilang_rows( + "dbfprocess", + blocks, + schema_name="ws_0630", + ) + self.assertEqual(rows[0].table, "sys_fprocess") + self.assertEqual(rows[0].values["in"], "info text") + + inserts = build_insert_sql("sys_fprocess", rows) + self.assertEqual(len(inserts), 1) + self.assertIn('"in"', inserts[0]) + self.assertIn('EXCLUDED."in"', inserts[0]) + + def test_build_insert_sql_dedupes_sys_message_conflict_keys(self): + duplicate_key = { + "schema_name": "ws_0630", + "context": "sys_message", + "source": "42", + "lang": "en_us", + } + rows = [ + MultilangRow( + table="sys_message", + values={**duplicate_key, "ms": "first"}, + ), + MultilangRow( + table="sys_message", + values={**duplicate_key, "ms": "second"}, + ), + ] + inserts = build_insert_sql("sys_message", rows) + self.assertEqual(len(inserts), 1) + self.assertEqual(inserts[0].count("42"), 1) + self.assertIn("'second'", inserts[0]) + self.assertNotIn("'first'", inserts[0]) + + def test_seed_sql_for_schema_uses_ui_tables_only(self): + plugin_dir = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) + sql_root = os.path.join(plugin_dir, "dbmodel") + + statements = seed_sql_for_schema(sql_root, "ws_0630", project_type="ws") + self.assertGreater(len(statements), 0) + joined = "\n".join(statements) + self.assertIn("INSERT INTO multilang.config_form_fields", joined) + self.assertNotIn("INSERT INTO multilang.dbparam_user", joined) + self.assertNotIn("INSERT INTO multilang.dbjson", joined) + for statement in statements: + target = statement.split("INSERT INTO multilang.", 1)[1].split(" ", 1)[0] + self.assertIn(target, MULTILANG_UI_TABLES) + + def test_parse_dbconfig_form_fields_feat_keeps_pattern_formname(self): + sql = """ + UPDATE config_form_fields AS t SET label = v.label, tooltip = v.tooltip FROM ( + VALUES + ('diameter', '%_arc%', 'form_feature', 'tab_data', 'Diameter:', 'Pipe diameter') + ) AS v(columnname, formname, formtype, tabname, label, tooltip) + WHERE t.columnname = v.columnname; + """ + blocks = parse_update_blocks(sql) + rows = blocks_to_multilang_rows( + "dbconfig_form_fields_feat", + blocks, + schema_name="ws_demo", + ) + self.assertEqual(len(rows), 1) + self.assertEqual(rows[0].table, "config_form_fields") + self.assertEqual(rows[0].values["source"], "diameter") + self.assertEqual(rows[0].values["formname"], "%_arc%") + self.assertEqual(rows[0].values["formtype"], "form_feature") + self.assertEqual(rows[0].values["tabname"], "tab_data") + self.assertEqual(rows[0].values["lb"], "Diameter:") + self.assertEqual(rows[0].values["tt"], "Pipe diameter") + + def test_load_baseline_rows_includes_feat_form_field_patterns(self): + plugin_dir = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) + sql_root = os.path.join(plugin_dir, "dbmodel") + + rows = load_baseline_rows(sql_root, schema_name="ws_demo", project_type="ws") + feat_rows = [ + row for row in rows + if row.table == "config_form_fields" + and row.values.get("formname") == "%_arc%" + and row.values.get("formtype") == "form_feature" + and row.values.get("tabname") == "tab_data" + ] + self.assertTrue(feat_rows) + + def test_parse_dbconfig_form_fields_json_maps_to_json_table(self): + sql = """ + UPDATE config_form_fields AS t SET widgetcontrols = v.text::json FROM ( + VALUES + ('btn_accept', 'arc', 'form_feature', 'tab_none', '{"text":"Accept"}') + ) AS v(columnname, formname, formtype, tabname, text) + WHERE t.columnname = v.columnname; + """ + blocks = parse_update_blocks(sql) + rows = blocks_to_multilang_rows( + "dbconfig_form_fields_json", + blocks, + schema_name="ws_demo", + ) + self.assertEqual(len(rows), 1) + self.assertEqual(rows[0].table, "config_form_fields_json") + self.assertEqual(rows[0].values["source"], "btn_accept") + self.assertEqual(rows[0].values["formname"], "arc") + self.assertEqual(rows[0].values["hint"], "widgetcontrols") + self.assertEqual(rows[0].values["text"], '{"text":"Accept"}') + + inserts = build_insert_sql("config_form_fields_json", rows) + self.assertEqual(len(inserts), 1) + self.assertIn("INSERT INTO multilang.config_form_fields_json", inserts[0]) + self.assertIn('"text"', inserts[0]) + self.assertIn("'{\"text\":\"Accept\"}'::json", inserts[0]) + + def test_load_baseline_rows_includes_form_field_json(self): + plugin_dir = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) + sql_root = os.path.join(plugin_dir, "dbmodel") + + rows = load_baseline_rows(sql_root, schema_name="ws_demo", project_type="ws") + json_rows = [ + row for row in rows + if row.table == "config_form_fields_json" + and row.values.get("source") == "btn_accept" + and row.values.get("formname") == "arc" + and row.values.get("hint") == "widgetcontrols" + ] + self.assertTrue(json_rows) + + def test_seeded_schemas_out_of_sync(self): + self.assertFalse(seeded_schemas_out_of_sync({"ws_a"}, {"ws_a"})) + self.assertTrue(seeded_schemas_out_of_sync({"ws_a", "ud_b"}, {"ws_a"})) + + def test_parse_stored_seeded_schemas(self): + payload = {"seeded_schemas": ["ws_0630", "ud_demo"]} + self.assertEqual(parse_stored_seeded_schemas(payload), {"ws_0630", "ud_demo"}) + + def test_translatable_schema_names_from_inventory(self): + plugin_dir = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) + sql_root = os.path.join(plugin_dir, "dbmodel") + inventory = [ + {"schema": "ws_0630", "kind": "WS"}, + {"schema": "cm", "kind": "CM"}, + {"schema": "multilang", "kind": "MULTILANG"}, + {"schema": "audit", "kind": "AUDIT"}, + ] + satellite_schemas = frozenset({"multilang", "utils", "cibs", "audit"}) + names = translatable_schema_names_from_inventory( + inventory, + sql_root, + satellite_schemas=satellite_schemas, + ) + self.assertEqual(names, {"ws_0630", "cm"}) + + def test_delete_schema_seed_sql(self): + statements = delete_schema_seed_sql(["ws_old"]) + self.assertEqual(len(statements), len(MULTILANG_UI_TABLES)) + self.assertTrue(all("DELETE FROM multilang." in sql for sql in statements)) + self.assertTrue(all("schema_name = 'ws_old'" in sql for sql in statements)) + self.assertTrue(any("DELETE FROM multilang.config_form_fields" in sql for sql in statements)) + + def test_seed_sql_uses_project_type_baseline(self): + plugin_dir = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) + sql_root = os.path.join(plugin_dir, "dbmodel") + + ws_rows = load_baseline_rows(sql_root, schema_name="ws_demo", project_type="ws") + ud_rows = load_baseline_rows(sql_root, schema_name="ws_demo", project_type="ud") + self.assertGreater(len(ws_rows), 0) + self.assertGreater(len(ud_rows), 0) + + ws_param = {row.values["source"] for row in ws_rows if row.table == "sys_param_user"} + ud_param = {row.values["source"] for row in ud_rows if row.table == "sys_param_user"} + self.assertNotEqual(ws_param, ud_param) + + self.assertEqual(seed_sql_for_schema(sql_root, "audit_demo", project_type="audit"), []) + self.assertGreater(len(seed_sql_for_schema(sql_root, "ws_demo", project_type="ws")), 0) + + def test_out_of_scope_baseline_file_is_ignored(self): + sql = """ + UPDATE config_csv AS t SET alias = v.alias, descript = v.descript FROM ( + VALUES + (385, 'Import inp timeseries', 'Function to assist') + ) AS v(fid, alias, descript) + WHERE t.fid = v.fid; + """ + blocks = parse_update_blocks(sql) + rows = blocks_to_multilang_rows( + "dbconfig_csv", + blocks, + schema_name="ud_demo", + ) + self.assertEqual(rows, []) + + def test_baseline_fingerprint_stable(self): + plugin_dir = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) + sql_root = os.path.join(plugin_dir, "dbmodel") + fp1 = compute_baseline_fingerprint(sql_root) + fp2 = compute_baseline_fingerprint(sql_root) + self.assertEqual(fp1, fp2) + self.assertFalse(baseline_needs_reseed(sql_root, fp1)) + self.assertTrue(baseline_needs_reseed(sql_root, None)) + self.assertTrue(baseline_needs_reseed(sql_root, "stale-fingerprint")) + + +if __name__ == "__main__": + unittest.main()