def test_calibrlogger_set_log_pos(self, mock_messagebar):
        db_utils.sql_alter_db("INSERT INTO obs_points (obsid) VALUES ('rb1')")
        db_utils.sql_alter_db(
            "INSERT INTO w_levels (obsid, date_time, level_masl) VALUES ('rb1', '2017-02-01 00:00', 100)"
        )
        db_utils.sql_alter_db(
            "INSERT INTO w_levels_logger (obsid, date_time, head_cm) VALUES ('rb1', '2017-02-01 00:00', 100)"
        )

        calibrlogger = Calibrlogger(self.iface.mainWindow(), self.ms)
        calibrlogger.update_plot()

        calibrlogger.FromDateTime.setDateTime(
            date_utils.datestring_to_date('2000-01-01 00:00:00'))
        calibrlogger.LoggerPos.setText('2')
        gui_utils.set_combobox(calibrlogger.combobox_obsid,
                               'rb1 (uncalibrated)')

        calibrlogger.set_logger_pos()
        print(str(mock_messagebar.mock_calls))
        test = utils_for_tests.create_test_string(
            db_utils.sql_load_fr_db('SELECT * FROM w_levels_logger'))
        ref = '(True, [(rb1, 2017-02-01 00:00, 100.0, None, None, 3.0, None)])'
        print(test)
        assert test == ref
Esempio n. 2
0
    def test_calibrlogger_adjust_trend(self, mock_messagebar):
        db_utils.sql_alter_db("INSERT INTO obs_points (obsid) VALUES ('rb1')")
        db_utils.sql_alter_db("INSERT INTO w_levels_logger (obsid, date_time, level_masl) VALUES ('rb1', '2017-02-01 00:00', 100)")
        db_utils.sql_alter_db("INSERT INTO w_levels_logger (obsid, date_time, level_masl) VALUES ('rb1', '2017-02-10 00:00', 200)")
        db_utils.sql_alter_db("INSERT INTO w_levels (obsid, date_time, level_masl) VALUES ('rb1', '2017-02-01 00:00', 200)")
        db_utils.sql_alter_db("INSERT INTO w_levels (obsid, date_time, level_masl) VALUES ('rb1', '2017-02-10 00:00', 100)")

        calibrlogger = Calibrlogger(self.iface.mainWindow(), self.ms)
        gui_utils.set_combobox(calibrlogger.combobox_obsid, 'rb1 (uncalibrated)')
        calibrlogger.update_plot()
        calibrlogger.FromDateTime.setDateTime(date_utils.datestring_to_date('2000-01-01 00:00:00'))
        calibrlogger.L1_date.setDateTime(date_utils.datestring_to_date('2017-02-01 00:00'))
        calibrlogger.L2_date.setDateTime(date_utils.datestring_to_date('2017-02-10 00:00'))
        calibrlogger.M1_date.setDateTime(date_utils.datestring_to_date('2017-02-01 00:00'))
        calibrlogger.M2_date.setDateTime(date_utils.datestring_to_date('2017-02-10 00:00'))
        calibrlogger.L1_level.setText('100')
        calibrlogger.L2_level.setText('200')
        calibrlogger.M1_level.setText('200')
        calibrlogger.M2_level.setText('100')

        calibrlogger.adjust_trend_func()
        res = db_utils.sql_load_fr_db('SELECT obsid, date_time, head_cm, temp_degc, cond_mscm, level_masl, comment FROM w_levels_logger')
        l = list(res[1][1])
        l[5] = '%.11e'%Decimal(l[5])
        res[1][1] = tuple(l)
        test = utils_for_tests.create_test_string(res)
        print(mock_messagebar.mock_calls)

        ref = '(True, [(rb1, 2017-02-01 00:00, None, None, None, 100.0, None), (rb1, 2017-02-10 00:00, None, None, None, -2.84217094304e-14, None)])'
        print("Ref")

        print(ref)
        print("Test")
        print(test)
        assert test == ref
    def test_calibrlogger_calc_best_fit_add_no_matches_same_to_date(
            self, mock_messagebar, skip_popup):
        db_utils.sql_alter_db("INSERT INTO obs_points (obsid) VALUES ('rb1')")
        db_utils.sql_alter_db(
            "INSERT INTO w_levels (obsid, date_time, level_masl) VALUES ('rb1', '2017-02-01 00:00', 100)"
        )
        db_utils.sql_alter_db(
            "INSERT INTO w_levels_logger (obsid, date_time, level_masl) VALUES ('rb1', '2017-02-01 01:00', 50)"
        )
        calibrlogger = Calibrlogger(self.iface.mainWindow(), self.ms)

        calibrlogger.update_plot()

        calibrlogger.loggerpos_masl_or_offset_state = 2
        calibrlogger.FromDateTime.setDateTime(
            date_utils.datestring_to_date('2010-02-01 01:00'))
        calibrlogger.ToDateTime.setDateTime(
            date_utils.datestring_to_date('2017-02-01 01:00'))
        gui_utils.set_combobox(calibrlogger.combobox_obsid,
                               'rb1 (uncalibrated)')
        calibrlogger.bestFitSearchRadius.setText('2 hours')

        calibrlogger.calc_best_fit()

        test = utils_for_tests.create_test_string(
            db_utils.sql_load_fr_db('SELECT * FROM w_levels_logger'))
        ref = '(True, [(rb1, 2017-02-01 01:00, None, None, None, 50.0, None)])'
        print(test)
        assert test == ref
    def test_calibrlogger_adjust_trend(self, mock_messagebar):
        db_utils.sql_alter_db("INSERT INTO obs_points (obsid) VALUES ('rb1')")
        db_utils.sql_alter_db("INSERT INTO w_levels_logger (obsid, date_time, level_masl) VALUES ('rb1', '2017-02-01 00:00', 100)")
        db_utils.sql_alter_db("INSERT INTO w_levels_logger (obsid, date_time, level_masl) VALUES ('rb1', '2017-02-10 00:00', 200)")
        db_utils.sql_alter_db("INSERT INTO w_levels (obsid, date_time, level_masl) VALUES ('rb1', '2017-02-01 00:00', 200)")
        db_utils.sql_alter_db("INSERT INTO w_levels (obsid, date_time, level_masl) VALUES ('rb1', '2017-02-10 00:00', 100)")

        calibrlogger = Calibrlogger(self.iface.mainWindow(), self.ms)
        gui_utils.set_combobox(calibrlogger.combobox_obsid, 'rb1 (uncalibrated)')
        calibrlogger.update_plot()
        calibrlogger.FromDateTime.setDateTime(date_utils.datestring_to_date('2000-01-01 00:00:00'))
        calibrlogger.L1_date.setDateTime(date_utils.datestring_to_date('2017-02-01 00:00'))
        calibrlogger.L2_date.setDateTime(date_utils.datestring_to_date('2017-02-10 00:00'))
        calibrlogger.M1_date.setDateTime(date_utils.datestring_to_date('2017-02-01 00:00'))
        calibrlogger.M2_date.setDateTime(date_utils.datestring_to_date('2017-02-10 00:00'))

        calibrlogger.adjust_trend_func()

        res = db_utils.sql_load_fr_db('SELECT * FROM w_levels_logger')

        l = list(res[1][1])
        l[5] = '%.11e'%Decimal(l[5])
        res[1][1] = tuple(l)
        test = utils_for_tests.create_test_string(res)

        print(mock_messagebar.mock_calls)
        print(test)
        ref = '(True, [(rb1, 2017-02-01 00:00, None, None, None, 100.0, None), (rb1, 2017-02-10 00:00, None, None, None, -2.84217094304e-14, None)])'
        assert test == ref
        def _test(self, mock_iface, mock_getselectedobjectnames,
                  mock_findlayer):
            mock_iface.mapCanvas.return_value.currentLayer.return_value = self.vlayer
            mock_findlayer.return_value.isEditable.return_value = False
            mock_getselectedobjectnames.return_value = ('P1', 'P2', 'P3')
            mock_mapcanvas = mock_iface.mapCanvas.return_value
            mock_mapcanvas.layerCount.return_value = 0
            self.midvatten.plot_section()
            self.myplot = self.midvatten.myplot
            self.myplot.secplot_templates.loaded_template[
                'geology_Axes_bar'] = {
                    'sand': {
                        'label': 'sandtest',
                        'edgecolor': 'black',
                        'zorder': 5
                    },
                    'grus': {
                        'label': 'grustest',
                        'edgecolor': 'black',
                        'zorder': 5
                    },
                    'DEFAULT': {
                        'edgecolor': 'black',
                        'zorder': 5
                    }
                }
            print("before: " + str(self.myplot.secplot_templates.
                                   loaded_template['geology_Axes_bar']))
            self.myplot.Stratigraphy_radioButton.setChecked(True)
            self.myplot.Legend_checkBox.setChecked(True)
            gui_utils.set_combobox(self.myplot.wlvltableComboBox, 'w_levels')
            self.myplot.datetimetextEdit.append('2015')

            self.myplot.draw_plot()
Esempio n. 6
0
 def _test(self, mock_iface, mock_getselectedobjectnames):
     mock_iface.mapCanvas.return_value.currentLayer.return_value = self.vlayer
     mock_getselectedobjectnames.return_value = (u'P1', u'P2', u'P3')
     mock_mapcanvas = mock_iface.mapCanvas.return_value
     mock_mapcanvas.layerCount.return_value = 0
     self.midvatten.plot_section()
     self.myplot = self.midvatten.myplot
     gui_utils.set_combobox(self.myplot.wlvltableComboBox, u'w_levels')
     self.myplot.datetimetextEdit.append(u'2015')
     self.myplot.draw_plot()
 def _test(self, mock_iface, mock_getselectedobjectnames):
     mock_iface.mapCanvas.return_value.currentLayer.return_value = self.vlayer
     mock_getselectedobjectnames.return_value = ('P1', 'P2', 'P3')
     mock_mapcanvas = mock_iface.mapCanvas.return_value
     mock_mapcanvas.layerCount.return_value = 0
     self.midvatten.plot_section()
     self.myplot = self.midvatten.myplot
     gui_utils.set_combobox(self.myplot.wlvltableComboBox, 'w_levels')
     self.myplot.datetimetextEdit.append('2015')
     self.myplot.draw_plot()
    def __init__(self, parent, midv_settings):
        self.iface = parent

        self.ms = midv_settings
        qgis.PyQt.QtWidgets.QDialog.__init__(self, parent)
        self.setAttribute(qgis.PyQt.QtCore.Qt.WA_DeleteOnClose)
        self.setupUi(self)  # Required by Qt4 to initialize the UI
        self.setWindowTitle(
            ru(
                QCoreApplication.translate('CompactWqualReportUi',
                                           "Compact water quality report"))
        )  # Set the title for the dialog

        self.manual_label.setText(
            "<a href=\"https://github.com/jkall/qgis-midvatten-plugin/wiki/5.-Plots-and-reports#create-compact-water-quality-report\">%s</a>"
            % QCoreApplication.translate('CompactWqualReportUi', '(manual)'))
        self.manual_label.setOpenExternalLinks(True)

        tables = list(db_utils.tables_columns().keys())
        self.sql_table.addItems(sorted(tables))
        #Use w_qual_lab as default.
        gui_utils.set_combobox(self.sql_table,
                               'w_qual_lab',
                               add_if_not_exists=False)

        self.save_attrnames = [
            'num_data_cols', 'rowheader_colwidth_percent',
            'empty_row_between_tables', 'page_break_between_tables',
            'from_active_layer', 'from_sql_table', 'sql_table'
        ]

        self.stored_settings_key = 'compactwqualreport'

        self.stored_settings = utils.get_stored_settings(
            self.ms, self.stored_settings_key, {})
        self.update_from_stored_settings(self.stored_settings)

        self.pushButton_ok.clicked.connect(lambda x: self.wqualreport())

        #self.pushButton_cancel, PyQt4.QtCore.SIGNAL("clicked()"), lambda : self.close())

        self.pushButton_update_from_string.clicked.connect(
            lambda x: self.ask_and_update_stored_settings())

        self.sql_table.currentIndexChanged.connect(
            lambda: self.from_sql_table.setChecked(True))

        self.empty_row_between_tables.clicked.connect(
            lambda: self.page_break_between_tables.setChecked(False)
            if self.empty_row_between_tables.isChecked() else True)
        self.page_break_between_tables.clicked.connect(
            lambda: self.empty_row_between_tables.setChecked(False)
            if self.page_break_between_tables.isChecked() else True)

        self.show()
            def _test(self, filename, mock_filenames, mock_skippopup, mock_iface, mock_not_found_question):
                mock_not_found_question.return_value.answer = 'ok'
                mock_filenames.return_value = [[filename]]
                importer = Interlab4Import(self.iface.mainWindow(), self.midvatten.ms)
                importer.init_gui()
                importer.select_files_button.click()
                gui_utils.set_combobox(importer.specific_meta_filter.combobox, 'lablittera', False)
                importer.specific_meta_filter.items.paste_data(patterns)

                importer.metadata_filter.show_only_selected_checkbox.setChecked(True)
                importer.metadata_filter.update_selection_button.click()
                return importer.metadata_filter.get_selected_lablitteras()
Esempio n. 10
0
 def reload_combobox(self):
     self.activelayer = utils.get_active_layer()
     if not isinstance(self.activelayer, QgsVectorLayer):
         utils.MessagebarAndLog.warning(bar_msg=ru(
             QCoreApplication.translate('ValuesFromSelectedFeaturesGui', 'Must select a vector layer!')))
         return None
     self.columns.clear()
     fields = [field.name() for field in self.activelayer.fields()]
     self.columns.addItems(sorted(fields))
     if self.selected_column is None or self.selected_column not in fields:
         self.selected_column = 'obsid'
     gui_utils.set_combobox(self.columns, self.selected_column, add_if_not_exists=False)
Esempio n. 11
0
 def _test(self, mock_iface, mock_getselectedobjectnames, mock_findlayer):
     mock_iface.mapCanvas.return_value.currentLayer.return_value = self.vlayer
     mock_findlayer.return_value.isEditable.return_value = False
     mock_getselectedobjectnames.return_value = ('P1', 'P2', 'P3')
     mock_mapcanvas = mock_iface.mapCanvas.return_value
     mock_mapcanvas.layerCount.return_value = 0
     self.midvatten.plot_section()
     self.myplot = self.midvatten.myplot
     self.myplot.Stratigraphy_radioButton.setChecked(True)
     self.myplot.Legend_checkBox.setChecked(True)
     gui_utils.set_combobox(self.myplot.wlvltableComboBox, 'w_levels')
     self.myplot.datetimetextEdit.append('2015')
     self.myplot.draw_plot()
Esempio n. 12
0
 def _test(self, mock_iface, mock_getselectedobjectnames, mock_findlayer):
     mock_iface.mapCanvas.return_value.currentLayer.return_value = self.vlayer
     mock_findlayer.return_value.isEditable.return_value = False
     mock_getselectedobjectnames.return_value = ('P1', 'P2', 'P3')
     mock_mapcanvas = mock_iface.mapCanvas.return_value
     mock_mapcanvas.layerCount.return_value = 0
     self.midvatten.plot_section()
     self.myplot = self.midvatten.myplot
     gui_utils.set_combobox(self.myplot.wlvltableComboBox, 'w_levels')
     self.myplot.datetimetextEdit.append('2015')
     self.myplot.datetimetextEdit.append('2015')
     self.myplot.secplot_templates.loaded_template['wlevels_Axes_plot'] = {'2015': {'label': '1', 'linestyle': '-', 'linewidth': 1, 'marker': 'v', 'markersize': 6, 'zorder': 8},
                                                                           '2015_2': {'label': '2', 'linestyle': '-', 'linewidth': 1, 'marker': 'v', 'markersize': 6, 'zorder': 8},
                                                                           'DEFAULT': {'label': 'DEFAULT', 'linestyle': '-', 'linewidth': 1, 'marker': 'v', 'markersize': 6, 'zorder': 8}}
     self.myplot.draw_plot()
Esempio n. 13
0
    def test_calibrlogger_add_to_level_masl(self, mock_messagebar):
        db_utils.sql_alter_db(u"INSERT INTO obs_points (obsid) VALUES ('rb1')")
        db_utils.sql_alter_db(u"INSERT INTO w_levels_logger (obsid, date_time, level_masl) VALUES ('rb1', '2017-02-01 00:00', 100)")
        calibrlogger = Calibrlogger(self.iface.mainWindow(), self.ms)

        calibrlogger.update_plot()

        calibrlogger.FromDateTime.setDateTime(date_utils.datestring_to_date(u'2000-01-01 00:00:00'))
        calibrlogger.Add2Levelmasl.setText(u'50')
        gui_utils.set_combobox(calibrlogger.combobox_obsid, u'rb1 (uncalibrated)')

        calibrlogger.add_to_level_masl()

        test = utils_for_tests.create_test_string(db_utils.sql_load_fr_db(u'SELECT * FROM w_levels_logger'))
        ref = u'(True, [(rb1, 2017-02-01 00:00, None, None, None, 150.0, None)])'
        print(test)
        assert test == ref
    def test_calibrlogger_add_to_level_masl(self, mock_messagebar):
        db_utils.sql_alter_db("INSERT INTO obs_points (obsid) VALUES ('rb1')")
        db_utils.sql_alter_db("INSERT INTO w_levels_logger (obsid, date_time, level_masl) VALUES ('rb1', '2017-02-01 00:00', 100)")
        calibrlogger = Calibrlogger(self.iface.mainWindow(), self.ms)

        calibrlogger.update_plot()

        calibrlogger.FromDateTime.setDateTime(date_utils.datestring_to_date('2000-01-01 00:00:00'))
        calibrlogger.Add2Levelmasl.setText('50')
        gui_utils.set_combobox(calibrlogger.combobox_obsid, 'rb1 (uncalibrated)')

        calibrlogger.add_to_level_masl()

        test = utils_for_tests.create_test_string(db_utils.sql_load_fr_db('SELECT * FROM w_levels_logger'))
        ref = '(True, [(rb1, 2017-02-01 00:00, None, None, None, 150.0, None)])'
        print(test)
        assert test == ref
Esempio n. 15
0
    def test_calibrlogger_calc_best_fit_log_pos_out_of_radius(self, mock_messagebar, skip_popup):
        db_utils.sql_alter_db(u"INSERT INTO obs_points (obsid) VALUES ('rb1')")
        db_utils.sql_alter_db(u"INSERT INTO w_levels (obsid, date_time, level_masl) VALUES ('rb1', '2017-02-01 00:00', 100)")
        db_utils.sql_alter_db(u"INSERT INTO w_levels_logger (obsid, date_time, head_cm) VALUES ('rb1', '2017-03-01 00:00', 50)")
        calibrlogger = Calibrlogger(self.iface.mainWindow(), self.ms)

        calibrlogger.update_plot()

        calibrlogger.loggerpos_masl_or_offset_state = 1
        calibrlogger.FromDateTime.setDateTime(date_utils.datestring_to_date(u'2000-01-01 00:00:00'))
        gui_utils.set_combobox(calibrlogger.combobox_obsid, u'rb1 (uncalibrated)')

        calibrlogger.calc_best_fit()

        test = utils_for_tests.create_test_string(db_utils.sql_load_fr_db(u'SELECT * FROM w_levels_logger'))
        ref = u'(True, [(rb1, 2017-03-01 00:00, 50.0, None, None, None, None)])'
        print(test)
        assert test == ref
    def test_calibrlogger_calc_best_fit_log_pos_out_of_radius(self, mock_messagebar, skip_popup):
        db_utils.sql_alter_db("INSERT INTO obs_points (obsid) VALUES ('rb1')")
        db_utils.sql_alter_db("INSERT INTO w_levels (obsid, date_time, level_masl) VALUES ('rb1', '2017-02-01 00:00', 100)")
        db_utils.sql_alter_db("INSERT INTO w_levels_logger (obsid, date_time, head_cm) VALUES ('rb1', '2017-03-01 00:00', 50)")
        calibrlogger = Calibrlogger(self.iface.mainWindow(), self.ms)

        calibrlogger.update_plot()

        calibrlogger.loggerpos_masl_or_offset_state = 1
        calibrlogger.FromDateTime.setDateTime(date_utils.datestring_to_date('2000-01-01 00:00:00'))
        gui_utils.set_combobox(calibrlogger.combobox_obsid, 'rb1 (uncalibrated)')

        calibrlogger.calc_best_fit()

        test = utils_for_tests.create_test_string(db_utils.sql_load_fr_db('SELECT * FROM w_levels_logger'))
        ref = '(True, [(rb1, 2017-03-01 00:00, 50.0, None, None, None, None)])'
        print(test)
        assert test == ref
Esempio n. 17
0
    def test_calibrlogger_adjust_trend(self, mock_messagebar):
        db_utils.sql_alter_db(u"INSERT INTO obs_points (obsid) VALUES ('rb1')")
        db_utils.sql_alter_db(u"INSERT INTO w_levels_logger (obsid, date_time, level_masl) VALUES ('rb1', '2017-02-01 00:00', 100)")
        db_utils.sql_alter_db(u"INSERT INTO w_levels_logger (obsid, date_time, level_masl) VALUES ('rb1', '2017-02-10 00:00', 200)")
        db_utils.sql_alter_db(u"INSERT INTO w_levels (obsid, date_time, level_masl) VALUES ('rb1', '2017-02-01 00:00', 200)")
        db_utils.sql_alter_db(u"INSERT INTO w_levels (obsid, date_time, level_masl) VALUES ('rb1', '2017-02-10 00:00', 100)")

        calibrlogger = Calibrlogger(self.iface.mainWindow(), self.ms)
        gui_utils.set_combobox(calibrlogger.combobox_obsid, u'rb1 (uncalibrated)')
        calibrlogger.update_plot()
        calibrlogger.FromDateTime.setDateTime(date_utils.datestring_to_date(u'2000-01-01 00:00:00'))
        calibrlogger.L1_date.setDateTime(date_utils.datestring_to_date(u'2017-02-01 00:00'))
        calibrlogger.L2_date.setDateTime(date_utils.datestring_to_date(u'2017-02-10 00:00'))
        calibrlogger.M1_date.setDateTime(date_utils.datestring_to_date(u'2017-02-01 00:00'))
        calibrlogger.M2_date.setDateTime(date_utils.datestring_to_date(u'2017-02-10 00:00'))

        calibrlogger.adjust_trend_func()

        test = utils_for_tests.create_test_string(db_utils.sql_load_fr_db(u'SELECT * FROM w_levels_logger'))
        print(mock_messagebar.mock_calls)
        print(test)
        ref = u'(True, [(rb1, 2017-02-01 00:00, None, None, None, 100.0, None), (rb1, 2017-02-10 00:00, None, None, None, -2.84217094304e-14, None)])'
        assert test == ref
 def update_from_stored_settings(self, stored_settings):
     if isinstance(stored_settings, dict) and stored_settings:
         for attr, val in stored_settings.items():
             try:
                 selfattr = getattr(self, attr)
             except:
                 pass
             else:
                 if isinstance(selfattr,
                               qgis.PyQt.QtWidgets.QPlainTextEdit):
                     if isinstance(val, (list, tuple)):
                         val = '\n'.join(val)
                     selfattr.setPlainText(val)
                 elif isinstance(selfattr,
                                 (qgis.PyQt.QtWidgets.QCheckBox,
                                  qgis.PyQt.QtWidgets.QRadioButton)):
                     selfattr.setChecked(val)
                 elif isinstance(selfattr, qgis.PyQt.QtWidgets.QLineEdit):
                     selfattr.setText(val)
                 elif isinstance(selfattr, qgis.PyQt.QtWidgets.QComboBox):
                     gui_utils.set_combobox(selfattr,
                                            val,
                                            add_if_not_exists=False)
Esempio n. 19
0
 def distinct_unit(self, value):
     set_combobox(self._distinct_unit, value)
Esempio n. 20
0
 def unit_columns(self, value):
     set_combobox(self._unit_columns, value)
Esempio n. 21
0
 def unit_table(self, value):
     set_combobox(self._unit_table, value)
Esempio n. 22
0
 def target_tz(self, value):
     gui_utils.set_combobox(self._tz_list, value)
 def unit_columns(self, value):
     set_combobox(self._unit_columns, value)
 def parameter_table(self, value):
     set_combobox(self._parameter_table, value)
 def parameter_columns(self, value):
     set_combobox(self._parameter_columns, value)
 def input_type(self, value):
     set_combobox(self._input_type, value)
Esempio n. 27
0
 def input_type(self, value):
     set_combobox(self._input_type, value)
 def target_tz(self, value):
     gui_utils.set_combobox(self._tz_list, value)
 def unit_table(self, value):
     set_combobox(self._unit_table, value)
 def distinct_unit(self, value):
     set_combobox(self._distinct_unit, value)
Esempio n. 31
0
 def parameter_table(self, value):
     set_combobox(self._parameter_table, value)
Esempio n. 32
0
 def parameter_columns(self, value):
     set_combobox(self._parameter_columns, value)
Esempio n. 33
0
 def distinct_parameter(self, value):
     set_combobox(self._distinct_parameter, value)
 def distinct_parameter(self, value):
     set_combobox(self._distinct_parameter, value)
    def __init__(self, parent, midv_settings):
        self.iface = parent

        self.tables_columns = db_utils.tables_columns()

        self.ms = midv_settings
        qgis.PyQt.QtWidgets.QDialog.__init__(self, parent)
        self.setAttribute(qgis.PyQt.QtCore.Qt.WA_DeleteOnClose)
        self.setupUi(self)  # Required by Qt4 to initialize the UI
        self.setWindowTitle(
            ru(
                QCoreApplication.translate('CompactWqualReportUi',
                                           "Compact water quality report"))
        )  # Set the title for the dialog

        self.manual_label.setText(
            "<a href=\"https://github.com/jkall/qgis-midvatten-plugin/wiki/5.-Plots-and-reports#create-compact-water-quality-report\">%s</a>"
            % QCoreApplication.translate('CompactWqualReportUi', '(manual)'))
        self.manual_label.setOpenExternalLinks(True)

        self.date_time_formats = {
            'YYYY-MM': '%Y-%m',
            'YYYY-MM-DD': '%Y-%m-%d',
            'YYYY-MM-DD hh': '%Y-%m-%d %H',
            'YYYY-MM-DD hh:mm': '%Y-%m-%d %H:%M',
            'YYYY-MM-DD hh:mm:ss': '%Y-%m-%d %H:%M:%S'
        }

        self.methods = {
            'concat':
            lambda x: ', '.join([ru(y) for y in x.values]),
            'avg':
            lambda x: round(
                sum([float(y) for y in x.values]) / float(len(x.values)),
                num_decimals(x.values))
            if all([floatable(y) for y in x.values]) else ', '.join(
                [ru(y) for y in x.values]),
            'sum':
            lambda x: round(sum([float(y) for y in x]), num_decimals(x))
            if all([floatable(y) for y in x.values]) else ', '.join(x.values),
            'min':
            lambda x: min(x.values),
            'max':
            lambda x: min(x.values)
        }

        self.date_time_format.addItems(self.date_time_formats.keys())
        self.method.addItems(self.methods.keys())

        tables = list(db_utils.tables_columns().keys())
        self.sql_table.addItems(sorted(tables))
        #Use w_qual_lab as default.
        gui_utils.set_combobox(self.sql_table,
                               'w_qual_lab',
                               add_if_not_exists=False)

        self.save_attrnames = [
            'num_data_cols', 'rowheader_colwidth_percent',
            'empty_row_between_tables', 'page_break_between_tables',
            'from_active_layer', 'from_sql_table', 'sql_table',
            'sort_alphabetically', 'sort_by_obsid', 'date_time_as_columns',
            'date_time_format', 'method', 'data_column'
        ]

        self.stored_settings_key = 'compactwqualreport'

        self.pushButton_ok.clicked.connect(lambda x: self.wqualreport())

        self.from_active_layer.clicked.connect(
            lambda x: self.set_columns_from_activelayer())
        self.from_sql_table.clicked.connect(
            lambda x: self.set_columns_from_sql_layer())
        self.sql_table.currentIndexChanged.connect(
            lambda x: self.set_columns_from_sql_layer())

        self.pushButton_update_from_string.clicked.connect(
            lambda x: self.ask_and_update_stored_settings())

        self.sql_table.currentIndexChanged.connect(
            lambda: self.from_sql_table.setChecked(True))

        self.empty_row_between_tables.clicked.connect(
            lambda: self.page_break_between_tables.setChecked(False)
            if self.empty_row_between_tables.isChecked() else True)
        self.page_break_between_tables.clicked.connect(
            lambda: self.empty_row_between_tables.setChecked(False)
            if self.page_break_between_tables.isChecked() else True)

        self.stored_settings = utils.get_stored_settings(
            self.ms, self.stored_settings_key, {})
        self.update_from_stored_settings(self.stored_settings)

        self.show()