52 changed files with 398 additions and 159 deletions
@ -0,0 +1,23 @@ |
|||
-- |
|||
-- Copyright © 2016-2021 The Thingsboard Authors |
|||
-- |
|||
-- Licensed under the Apache License, Version 2.0 (the "License"); |
|||
-- you may not use this file except in compliance with the License. |
|||
-- You may obtain a copy of the License at |
|||
-- |
|||
-- http://www.apache.org/licenses/LICENSE-2.0 |
|||
-- |
|||
-- Unless required by applicable law or agreed to in writing, software |
|||
-- distributed under the License is distributed on an "AS IS" BASIS, |
|||
-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
|||
-- See the License for the specific language governing permissions and |
|||
-- limitations under the License. |
|||
-- |
|||
|
|||
ALTER TABLE widget_type |
|||
ADD COLUMN IF NOT EXISTS image varchar (1000000), |
|||
ADD COLUMN IF NOT EXISTS description varchar (255); |
|||
|
|||
ALTER TABLE widgets_bundle |
|||
ADD COLUMN IF NOT EXISTS image varchar (1000000), |
|||
ADD COLUMN IF NOT EXISTS description varchar (255); |
|||
@ -0,0 +1,56 @@ |
|||
///
|
|||
/// Copyright © 2016-2021 The Thingsboard Authors
|
|||
///
|
|||
/// Licensed under the Apache License, Version 2.0 (the "License");
|
|||
/// you may not use this file except in compliance with the License.
|
|||
/// You may obtain a copy of the License at
|
|||
///
|
|||
/// http://www.apache.org/licenses/LICENSE-2.0
|
|||
///
|
|||
/// Unless required by applicable law or agreed to in writing, software
|
|||
/// distributed under the License is distributed on an "AS IS" BASIS,
|
|||
/// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|||
/// See the License for the specific language governing permissions and
|
|||
/// limitations under the License.
|
|||
///
|
|||
|
|||
import { Pipe, PipeTransform } from '@angular/core'; |
|||
|
|||
type unit = 'bytes' | 'KB' | 'MB' | 'GB' | 'TB' | 'PB'; |
|||
type unitPrecisionMap = { |
|||
[u in unit]: number; |
|||
}; |
|||
|
|||
const defaultPrecisionMap: unitPrecisionMap = { |
|||
bytes: 0, |
|||
KB: 0, |
|||
MB: 1, |
|||
GB: 1, |
|||
TB: 2, |
|||
PB: 2 |
|||
}; |
|||
|
|||
@Pipe({ name: 'fileSize' }) |
|||
export class FileSizePipe implements PipeTransform { |
|||
private readonly units: unit[] = ['bytes', 'KB', 'MB', 'GB', 'TB', 'PB']; |
|||
|
|||
transform(bytes: number = 0, precision: number | unitPrecisionMap = defaultPrecisionMap): string { |
|||
if (isNaN(parseFloat(String(bytes))) || !isFinite(bytes)) { |
|||
return '?'; |
|||
} |
|||
|
|||
let unitIndex = 0; |
|||
|
|||
while (bytes >= 1024) { |
|||
bytes /= 1024; |
|||
unitIndex++; |
|||
} |
|||
|
|||
const unitSymbol = this.units[unitIndex]; |
|||
|
|||
if (typeof precision === 'number') { |
|||
return `${bytes.toFixed(+precision)} ${unitSymbol}`; |
|||
} |
|||
return `${bytes.toFixed(precision[unitSymbol])} ${unitSymbol}`; |
|||
} |
|||
} |
|||
Loading…
Reference in new issue