Skip to content
Snippets Groups Projects
Unverified Commit d9cb1766 authored by Sameer Al-Sakran's avatar Sameer Al-Sakran Committed by GitHub
Browse files

Merge pull request #6930 from metabase/release-0.28.1

Pull Release 0.28.1 changes into master
parents 2aaa177d de519667
No related branches found
No related tags found
No related merge requests found
#! /usr/bin/env bash
set -eu
set -e
BASEDIR=$(dirname $0)
PROJECT_ROOT="$BASEDIR/../.."
......
import React, { Component } from "react";
import PropTypes from "prop-types";
import { t } from 'c-3po';
import { t, jt } from 'c-3po';
import MetabaseSettings from "metabase/lib/settings";
import MetabaseUtils from "metabase/lib/utils";
import SettingsSetting from "./SettingsSetting.jsx";
......@@ -73,14 +73,14 @@ export default class SettingsUpdatesForm extends Component {
if (!versionInfo || MetabaseUtils.compareVersions(currentVersion, versionInfo.latest.version) >= 0) {
return (
<div className="p2 bg-brand bordered rounded border-brand text-white text-bold">
{t`You're running Metabase {this.removeVersionPrefixIfNeeded(currentVersion)} which is the latest and greatest!`}
{jt`You're running Metabase ${this.removeVersionPrefixIfNeeded(currentVersion)} which is the latest and greatest!`}
</div>
);
} else {
return (
<div>
<div className="p2 bg-green bordered rounded border-green flex flex-row align-center justify-between">
<span className="text-white text-bold">{t`Metabase ${this.removeVersionPrefixIfNeeded(versionInfo.latest.version)} is available. You're running {this.removeVersionPrefixIfNeeded(currentVersion)}`}</span>
<span className="text-white text-bold">{jt`Metabase ${this.removeVersionPrefixIfNeeded(versionInfo.latest.version)} is available. You're running ${this.removeVersionPrefixIfNeeded(currentVersion)}`}</span>
<a data-metabase-event={"Updates Settings; Update link clicked; "+versionInfo.latest.version} className="Button Button--white Button--medium borderless" href="http://www.metabase.com/start" target="_blank">{t`Update`}</a>
</div>
......
......@@ -26,7 +26,7 @@
box-shadow: 0 1px 7px rgba(0, 0, 0, .1);
}
:local .Text .text-card-markdown {
overflow: scroll;
overflow: auto;
pointer-events: all
}
......
......@@ -234,6 +234,7 @@
(let [stacktrace (u/filtered-stacktrace e)]
(merge (assoc other-info
:message message
:type (class e)
:stacktrace stacktrace)
(when (instance? SQLException e)
{:sql-exception-chain (str/split (with-out-str (jdbc/print-sql-exception-chain e))
......
......@@ -82,7 +82,8 @@
"Dates are iso formatted, i.e. 2014-09-18T00:00:00.000-07:00. We can just drop the T and everything after it since
we don't want to change the timezone or alter the date part."
[^String date-str]
(subs date-str 0 (.indexOf date-str "T")))
(when date-str
(subs date-str 0 (.indexOf date-str "T"))))
(defn- swap-date-columns [date-col-indexes]
(fn [row]
......
......@@ -355,12 +355,19 @@
(render-table (prep-for-html-rendering timezone cols rows nil nil cols-limit))
(render-truncation-warning cols-limit (count cols) rows-limit (count rows))]})
(defn- graphing-columns [card {:keys [cols] :as data}]
[(or (ui-logic/x-axis-rowfn card data)
first)
(or (ui-logic/y-axis-rowfn card data)
second)])
(s/defn ^:private render:bar :- RenderedPulseCard
[timezone card {:keys [cols rows] :as data}]
(let [max-value (apply max (map second rows))]
(let [[x-axis-rowfn y-axis-rowfn] (graphing-columns card data)
max-value (apply max (map y-axis-rowfn rows))]
{:attachments nil
:content [:div
(render-table (prep-for-html-rendering timezone cols rows second max-value 2))
(render-table (prep-for-html-rendering timezone cols rows y-axis-rowfn max-value 2))
(render-truncation-warning 2 (count cols) rows-limit (count rows))]}))
(s/defn ^:private render:scalar :- RenderedPulseCard
......@@ -497,12 +504,6 @@
:attachment {content-id image-url}
:inline nil))
(defn- graphing-columns [card {:keys [cols] :as data}]
[(or (ui-logic/x-axis-rowfn card data)
first)
(or (ui-logic/y-axis-rowfn card data)
second)])
(s/defn ^:private render:sparkline :- RenderedPulseCard
[render-type timezone card {:keys [rows cols] :as data}]
(let [[x-axis-rowfn y-axis-rowfn] (graphing-columns card data)
......
......@@ -4,16 +4,22 @@
[core :as json]
[generate :as generate]]
[clojure.data.csv :as csv]
[clojure.java.jdbc :as jdbc]
[dk.ative.docjure.spreadsheet :as spreadsheet]
[expectations :refer :all]
[medley.core :as m]
[metabase.api.dataset :refer [default-query-constraints]]
[metabase.models.query-execution :refer [QueryExecution]]
[metabase.models
[database :refer [Database]]
[query-execution :refer [QueryExecution]]]
[metabase.query-processor.middleware.expand :as ql]
[metabase.sync :as sync]
[metabase.test
[data :refer :all]
[util :as tu]]
[metabase.test.data.users :refer :all]
[metabase.test.data
[dataset-definitions :as defs]
[users :refer :all]]
[toucan.db :as db]))
(defn user-details [user]
......@@ -176,6 +182,29 @@
(query checkins))))]
(take 5 (parse-and-sort-csv result))))
;; Check an empty date column
(expect
[["1" "2014-04-07" "" "5" "12"]
["2" "2014-09-18" "" "1" "31"]
["3" "2014-09-15" "" "8" "56"]
["4" "2014-03-11" "" "5" "4"]
["5" "2013-05-05" "" "3" "49"]]
(with-db (get-or-create-database! defs/test-data)
(let [db (Database :name "test-data")]
(jdbc/with-db-connection [conn {:classname "org.h2.Driver", :subprotocol "h2", :subname "mem:test-data"}]
;; test-data doesn't include any null date values, add a date column to ensure we can handle null dates on export
(jdbc/execute! conn "ALTER TABLE CHECKINS ADD COLUMN MYDATECOL DATE")
(sync/sync-database! db)
(try
(let [result ((user->client :rasta) :post 200 "dataset/csv" :query
(json/generate-string (wrap-inner-query
(query checkins))))]
(take 5 (parse-and-sort-csv result)))
(finally
;; ensure we remove the column when we're done otherwise subsequent tests will break
(jdbc/execute! conn "ALTER TABLE CHECKINS DROP COLUMN MYDATECOL")
(sync/sync-database! db)))))))
;; DateTime fields are untouched when exported
(expect
[["1" "Plato Yeshua" "2014-04-01T08:30:00.000Z"]
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment